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 );
}