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 + -
显示快捷键?