statuspage.cpp
来自「故障诊断工作涉及的领域相当广泛」· C++ 代码 · 共 266 行
CPP
266 行
// StatusPage1.cpp : implementation file
//
#include "stdafx.h"
#include "resource.h"
#include "StatusPage.h"
#include <math.h>
#ifdef _DEBUG
#undef THIS_FILE
static char BASED_CODE THIS_FILE[] = __FILE__;
#endif
IMPLEMENT_DYNCREATE(COrdinatePage, CPropertyPage)
IMPLEMENT_DYNCREATE(CSetPage, CPropertyPage)
IMPLEMENT_DYNCREATE(COSnapPage, CPropertyPage)
/////////////////////////////////////////////////////////////////////////////
// COrdinatePage property page
COrdinatePage::COrdinatePage() : CPropertyPage(COrdinatePage::IDD)
{
//{{AFX_DATA_INIT(COrdinatePage)
m_dStoW = 1.0;
m_dWtoS = 1.0;
m_dOriginX = 0.0;
m_dOriginY = 0.0;
m_dOriginZ = 0.0;
//}}AFX_DATA_INIT
}
COrdinatePage::~COrdinatePage()
{
}
void COrdinatePage::DoDataExchange(CDataExchange* pDX)
{
CPropertyPage::DoDataExchange(pDX);
//{{AFX_DATA_MAP(COrdinatePage)
DDX_Text(pDX, IDC_EDIT_STOW, m_dStoW);
DDX_Text(pDX, IDC_EDIT_WTOS, m_dWtoS);
DDX_Text(pDX, IDC_EDIT_X, m_dOriginX);
DDX_Text(pDX, IDC_EDIT_Y, m_dOriginY);
DDX_Text(pDX, IDC_EDIT_Z, m_dOriginZ);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(COrdinatePage, CPropertyPage)
//{{AFX_MSG_MAP(COrdinatePage)
ON_NOTIFY(UDN_DELTAPOS, IDC_SPIN_X, OnDeltaposSpinX)
ON_NOTIFY(UDN_DELTAPOS, IDC_SPIN_Y, OnDeltaposSpinY)
ON_NOTIFY(UDN_DELTAPOS, IDC_SPIN_Z, OnDeltaposSpinZ)
ON_EN_KILLFOCUS(IDC_EDIT_STOW, OnKillfocusEditStow)
ON_EN_KILLFOCUS(IDC_EDIT_WTOS, OnKillfocusEditWtos)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CSetPage property page
CSetPage::CSetPage() : CPropertyPage(CSetPage::IDD)
{
//{{AFX_DATA_INIT(CSetPage)
m_dGrid = 0.5;
m_dSnap = 0.5;
m_nGrid = 1;
m_nOrtho = 1;
m_nSnap = 1;
//}}AFX_DATA_INIT
}
CSetPage::~CSetPage()
{
}
void CSetPage::DoDataExchange(CDataExchange* pDX)
{
CPropertyPage::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CSetPage)
DDX_Text(pDX, IDC_EDIT_GRID, m_dGrid);
DDX_Text(pDX, IDC_EDIT_SNAP, m_dSnap);
DDX_Radio(pDX, IDC_GRID_ON, m_nGrid);
DDX_Radio(pDX, IDC_ORTHO_ON, m_nOrtho);
DDX_Radio(pDX, IDC_SNAP_ON, m_nSnap);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CSetPage, CPropertyPage)
//{{AFX_MSG_MAP(CSetPage)
// NOTE: the ClassWizard will add message map macros here
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// COSnapPage property page
COSnapPage::COSnapPage() : CPropertyPage(COSnapPage::IDD)
{
m_nOSnapSize=4;
//{{AFX_DATA_INIT(COSnapPage)
m_bCenter = FALSE;
m_bEndpoint = FALSE;
m_bMidpoint = FALSE;
m_bQuardant = FALSE;
//}}AFX_DATA_INIT
}
COSnapPage::~COSnapPage()
{
}
void COSnapPage::DoDataExchange(CDataExchange* pDX)
{
CPropertyPage::DoDataExchange(pDX);
//{{AFX_DATA_MAP(COSnapPage)
DDX_Check(pDX, IDC_CENTER, m_bCenter);
DDX_Check(pDX, IDC_ENDPOINT, m_bEndpoint);
DDX_Check(pDX, IDC_MIDPOINT, m_bMidpoint);
DDX_Check(pDX, IDC_QUARDANT, m_bQuardant);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(COSnapPage, CPropertyPage)
//{{AFX_MSG_MAP(COSnapPage)
ON_WM_HSCROLL()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
BOOL COrdinatePage::OnInitDialog()
{
CPropertyPage::OnInitDialog();
CSpinButtonCtrl* pSpin;
pSpin=(CSpinButtonCtrl *)GetDlgItem(IDC_SPIN_X);
pSpin->SetRange(-10000,10000);
pSpin=(CSpinButtonCtrl *)GetDlgItem(IDC_SPIN_Y);
pSpin->SetRange(-10000,10000);
pSpin=(CSpinButtonCtrl *)GetDlgItem(IDC_SPIN_Z);
pSpin->SetRange(-10000,10000);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void COrdinatePage::OnDeltaposSpinX(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_UPDOWN* pNMUpDown = (NM_UPDOWN*)pNMHDR;
m_dOriginX+=pNMUpDown->iDelta;
char tbuf[80];
sprintf(tbuf,"%f",m_dOriginX);
SetDlgItemText(IDC_EDIT_X,tbuf);
*pResult = 0;
}
void COrdinatePage::OnDeltaposSpinY(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_UPDOWN* pNMUpDown = (NM_UPDOWN*)pNMHDR;
m_dOriginY+=pNMUpDown->iDelta;
char tbuf[80];
sprintf(tbuf,"%f",m_dOriginY);
SetDlgItemText(IDC_EDIT_Y,tbuf);
*pResult = 0;
}
void COrdinatePage::OnDeltaposSpinZ(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_UPDOWN* pNMUpDown = (NM_UPDOWN*)pNMHDR;
m_dOriginZ+=pNMUpDown->iDelta;
char tbuf[80];
sprintf(tbuf,"%f",m_dOriginZ);
SetDlgItemText(IDC_EDIT_Z,tbuf);
*pResult = 0;
}
void COrdinatePage::OnKillfocusEditStow()
{
UpdateData();
if(fabs(m_dStoW)<1e-16)
{
AfxMessageBox("The scale of screen to world should not be a zero!");
GetDlgItem(IDC_EDIT_STOW)->SetFocus();
}
else
{
m_dWtoS=1.0/m_dStoW;
char tbuf[80];
sprintf(tbuf,"%f",m_dWtoS);
SetDlgItemText(IDC_EDIT_WTOS,tbuf);
}
}
void COrdinatePage::OnKillfocusEditWtos()
{
UpdateData();
if(fabs(m_dWtoS)<1e-16)
{
AfxMessageBox("The scale of world to screen should not be a zero!");
GetDlgItem(IDC_EDIT_WTOS)->SetFocus();
}
else
{
m_dStoW=1.0/m_dWtoS;
char tbuf[80];
sprintf(tbuf,"%f",m_dStoW);
SetDlgItemText(IDC_EDIT_STOW,tbuf);
}
}
BOOL COSnapPage::OnInitDialog()
{
CPropertyPage::OnInitDialog();
//设置红色滚动条的范围与当前值
CSliderCtrl* pSlider=(CSliderCtrl *) GetDlgItem(IDC_OSNAP_SIZE);
pSlider->SetRange(2,20);
pSlider->SetPos(m_nOSnapSize);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void COSnapPage::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
CSliderCtrl* pSlider=(CSliderCtrl *) GetDlgItem(IDC_OSNAP_SIZE);
m_nOSnapSize=pSlider->GetPos();
//绘制图片框
CWnd* pWnd=GetDlgItem(IDC_PICTURE_OSNAP);
CRect rect;
pWnd->GetClientRect(rect);
int nCenterX=(rect.left+rect.right)/2;
int nCenterY=(rect.top+rect.bottom)/2;
CDC* pDC=pWnd->GetDC();
//刷新图片框
pDC->Rectangle(rect);
//绘制十字叉丝线
pDC->MoveTo(rect.left+5,nCenterY);
pDC->LineTo(rect.right-5,nCenterY);
pDC->MoveTo(nCenterX,rect.top+5);
pDC->LineTo(nCenterX,rect.bottom-5);
//绘制十字框
pDC->Rectangle(nCenterX-m_nOSnapSize,
nCenterY-m_nOSnapSize,
nCenterX+m_nOSnapSize,
nCenterY+m_nOSnapSize);
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?