www.pudn.com > ProjectionTransformWork.rar > ParDlg.cpp


// ParDlg.cpp : implementation file 
// 
 
#include "stdafx.h" 
#include "Work.h" 
#include "ParDlg.h" 
 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 
 
///////////////////////////////////////////////////////////////////////////// 
// CParDlg dialog 
 
 
CParDlg::CParDlg(CWnd* pParent /*=NULL*/) 
	: CDialog(CParDlg::IDD, pParent) 
{ 
	//{{AFX_DATA_INIT(CParDlg) 
	/////////////////////////////////////////////////////////////////////// 
	//变量初始化 
	m_DrawType = -1; 
	m_PRPx = 130; 
	m_PRPy = 130; 
	m_PRPz = 180; 
	m_VPNx = 0; 
	m_VPNy = 0; 
	m_VPNz = 0; 
	m_VRPx = 0; 
	m_VRPy = 0; 
	m_VRPz = 0; 
	m_VUPx = 0; 
	m_VUPy = 0; 
	m_VUPz = 0; 
	//}}AFX_DATA_INIT 
} 
 
 
void CParDlg::DoDataExchange(CDataExchange* pDX) 
{ 
	CDialog::DoDataExchange(pDX); 
	//{{AFX_DATA_MAP(CParDlg) 
	DDX_Radio(pDX, IDC_TOUYING1, m_DrawType); 
	DDX_Text(pDX, IDC_PRP_X, m_PRPx); 
	DDX_Text(pDX, IDC_PRP_Y, m_PRPy); 
	DDX_Text(pDX, IDC_PRP_Z, m_PRPz); 
	DDX_Text(pDX, IDC_VPN_X, m_VPNx); 
	DDX_Text(pDX, IDC_VPN_Y, m_VPNy); 
	DDX_Text(pDX, IDC_VPN_Z, m_VPNz); 
	DDX_Text(pDX, IDC_VRP_X, m_VRPx); 
	DDX_Text(pDX, IDC_VRP_Y, m_VRPy); 
	DDX_Text(pDX, IDC_VRP_Z, m_VRPz); 
	DDX_Text(pDX, IDC_VUP_X, m_VUPx); 
	DDX_Text(pDX, IDC_VUP_Y, m_VUPy); 
	DDX_Text(pDX, IDC_VUP_Z, m_VUPz); 
	//}}AFX_DATA_MAP 
} 
 
 
BEGIN_MESSAGE_MAP(CParDlg, CDialog) 
	//{{AFX_MSG_MAP(CParDlg) 
	ON_BN_CLICKED(IDC_TOUYING1, OnTouying1) 
	ON_BN_CLICKED(IDC_FUSHI, OnFushi) 
	ON_BN_CLICKED(IDC_ISOMETRIC, OnIsometric) 
	ON_BN_CLICKED(IDC_PERSPECTIVE, OnPerspective) 
	//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
 
///////////////////////////////////////////////////////////////////////////// 
// CParDlg message handlers 
 
void CParDlg::OnOK()  
{ 
	// TODO: Add extra validation here 
	UpdateData(TRUE); 
 
/*	if (m_DrawType==-1)					//若没有选择投影类型,则弹出选择对话框 
	{ 
		MessageBox("请选择投影类型!"); 
		m_DrawType=-1; 
	} 
	else 
		CDialog::OnOK(); 
		*/ 
 
 
	if (m_DrawType==-1)					//若没有选择投影类型,则弹出选择对话框 
	{ 
		MessageBox("请选择投影类型!"); 
		m_DrawType=-1; 
	} 
	else if(m_DrawType==0)				//确认投影1的参数 
	{ 
		if (!(m_VPNx==0&&m_VPNy==0&&m_VPNz==1&&m_VUPx==0&&m_VUPy==1&&m_VUPz==0)) 
		{ 
			MessageBox("请选择正确的参数:VPN(0,0,1),VUP(0,1,0)"); 
				 
		} 
		else 
			CDialog::OnOK(); 
	} 
	else if(m_DrawType==1)				//确认俯视图的参数 
	{ 
		if (!(m_VPNx==0&&m_VPNy==0&&m_VPNz==1&&m_VUPx==0&&m_VUPy==1&&m_VUPz==0)) 
		{ 
			MessageBox("请选择正确的参数:VPN(0,0,1),VUP(0,1,0)"); 
		} 
		else 
			CDialog::OnOK(); 
	} 
 
	else if(m_DrawType==2)				//确认等轴测图的参数 
	{ 
		if (!(m_VPNx==1&&m_VPNy==1&&m_VPNz==1&&m_VUPx==0&&m_VUPy==1&&m_VUPz==0)) 
		{ 
			MessageBox("请选择正确的参数:VPN(1,1,1),VUP(0,1,0)"); 
		} 
		else 
			CDialog::OnOK(); 
	} 
	else if(m_DrawType==3)			   //确认透视图的参数 
	{ 
		if (m_PRPx==0&&m_PRPy==0&&m_PRPz==0)	//保证投影中心PRP不为(0,0,0) 
		{ 
			MessageBox("请重新选择投影中心(PRP),保证投影中心在实体外部!"); 
		} 
		else  
		{ 
			if (m_VUPx==0&&m_VUPy==0&&m_VUPz==0) 
			{ 
				MessageBox("VUP各分量不能全部为0!","ERROR",MB_ICONERROR); 
			} 
			///////////////////////////////////////////以下判断透视投影类型 
			else if (m_VPNx==0&&m_VPNy==0&&m_VPNz==1) 
			{ 
				MessageBox("您选择的是一点透视图!"); 
				CDialog::OnOK(); 
			} 
			else if (m_VPNx==0&&m_VPNy==1&&m_VPNz==0) 
			{ 
				MessageBox("您选择的是一点透视图!"); 
				CDialog::OnOK(); 
			} 
			else if (m_VPNx==1&&m_VPNy==0&&m_VPNz==0) 
			{ 
				MessageBox("您选择的是一点透视图!"); 
				CDialog::OnOK(); 
			} 
			else if (m_VPNx==1&&m_VPNy==1&&m_VPNz==0) 
			{ 
				MessageBox("您选择的是两点透视图!"); 
				CDialog::OnOK(); 
			} 
			else if (m_VPNx==0&&m_VPNy==1&&m_VPNz==1) 
			{ 
				MessageBox("您选择的是两点透视图!"); 
				CDialog::OnOK(); 
			} 
			else if (m_VPNx==1&&m_VPNy==0&&m_VPNz==1) 
			{ 
				MessageBox("您选择的是两点透视图!"); 
				CDialog::OnOK(); 
			} 
			else if (m_VPNx==1&&m_VPNy==1&&m_VPNz==1) 
			{ 
				MessageBox("您选择的是三点透视图!"); 
				CDialog::OnOK(); 
			} 
			 
		} 
	} 
 
		 
} 
 
 
 
 
 
void CParDlg::OnTouying1()	//响应“投影1”单选按钮,提示输入参数 
{ 
	// TODO: Add your control notification handler code here 
	 
	MessageBox("请选择参数:VPN(0,0,1),VUP(0,1,0)","注意",MB_ICONEXCLAMATION ); 
} 
 
void CParDlg::OnFushi()		//响应“俯视图”单选按钮,提示输入参数 
{ 
	// TODO: Add your control notification handler code here 
	 
	MessageBox("请选择参数:VPN(0,0,1),VUP(0,1,0)","注意",MB_ICONEXCLAMATION ); 
} 
 
void CParDlg::OnIsometric()		//响应“等轴测图”单选按钮,提示输入参数 
{ 
	// TODO: Add your control notification handler code here 
	 
	MessageBox("请选择参数:VPN(1,1,1),VUP(0,1,0)","注意",MB_ICONEXCLAMATION ); 
} 
 
void CParDlg::OnPerspective()	//响应“透视图”单选按钮,提示输入参数 
{ 
	// TODO: Add your control notification handler code here 
	 
	//MessageBox("根据VPN选择一点、两点、三点透视! PRP为透视投影中心!","注意",MB_ICONEXCLAMATION ); 
	MessageBox("VPN确定透视投影类型! PRP为透视投影中心!","注意",MB_ICONEXCLAMATION ); 
}