📄 otherdlg.cpp
字号:
// OtherDlg.cpp : implementation file
//
#include "stdafx.h"
#include "Controls.h"
#include "OtherDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// COtherDlg property page
IMPLEMENT_DYNCREATE(COtherDlg, CPropertyPage)
COtherDlg::COtherDlg() : CPropertyPage(COtherDlg::IDD)
{
//{{AFX_DATA_INIT(COtherDlg)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
m_psp.dwFlags &= ~PSP_HASHELP;
}
COtherDlg::~COtherDlg()
{
}
void COtherDlg::DoDataExchange(CDataExchange* pDX)
{
CPropertyPage::DoDataExchange(pDX);
//{{AFX_DATA_MAP(COtherDlg)
DDX_Control(pDX, IDC_OTHER_IPUPPER, m_ctlIPUpper);
DDX_Control(pDX, IDC_OTHER_IPLOWER, m_ctlIPLower);
DDX_Control(pDX, IDC_OTHER_IPADDRESS, m_ctlIPAddress);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(COtherDlg, CPropertyPage)
//{{AFX_MSG_MAP(COtherDlg)
ON_WM_PAINT()
ON_BN_CLICKED(IDC_OTHER_DISABLE, OnOtherDisable)
ON_BN_CLICKED(IDC_OTHER_IPSETRANGE, OnIPSetRange)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// COtherDlg message handlers
BOOL COtherDlg::OnInitDialog()
{
CPropertyPage::OnInitDialog();
//
// Initialize the button portion of the page
//
m_BitButton1.AutoLoad (IDC_OTHER_BITBUTTON, this);
m_BitButton2.Create ("", WS_VISIBLE | BS_OWNERDRAW | BS_AUTOCHECKBOX, CRect(0,0,0,0), this, IDC_OTHER_BITBUTTON);
m_BitButton2.LoadBitmaps ("BitButtonU", "BitButtonD", "BitButtonF", "BitButtonX");
m_BitButton2.SizeToContent ();
CRect rcGroup, rcButton;
m_BitButton2.GetWindowRect (rcButton);
::GetWindowRect (GetDlgItem(IDC_OTHER_GROUP)->m_hWnd, rcGroup);
ScreenToClient (rcGroup);
ScreenToClient (rcButton);
int nHeight = rcButton.bottom - rcButton.top;
int nMid = rcGroup.left + (rcGroup.right - rcGroup.left) / 2;
int nHalf = (rcButton.right - rcButton.left) / 2;
rcButton.left = nMid - nHalf;
rcButton.right = nMid + nHalf;
nMid = rcGroup.top + (rcGroup.bottom - rcGroup.top) / 2;
rcButton.top = nMid - nHalf + 4;
rcButton.bottom = nMid + nHalf + 4;
m_BitButton2.SetWindowPos (NULL, rcButton.left, rcButton.top,
rcButton.Width (), rcButton.Height (),
SWP_NOZORDER | SWP_NOACTIVATE | SWP_SHOWWINDOW);
//
// Initialize the IP portion of the page
//
m_ctlIPUpper.SetAddress (0xFFFFFFFF);
m_ctlIPLower.SetAddress (0, 0, 0, 0);
m_ctlIPAddress.SetAddress (0);
return TRUE;
}
void COtherDlg::OnPaint()
{
CPaintDC dc(this); // device context for painting
CRect rc;
GetWindowRect (rc);
ScreenToClient (rc);
CRect rcPage (rc);
int nMid = (rc.right - rc.left) / 2;
rc.left = rc.left + nMid - 2;
rc.right = rc.left + 4;
CBrush brush;
brush.CreateSolidBrush (RGB(0x00, 0x00, 0x00));
dc.FillRect (rc, &brush);
rc = rcPage;
rc.right = nMid - 2;
rc.top += 10;
CFont *font = GetFont ();
LOGFONT lf;
font->GetLogFont (&lf);
lf.lfHeight *= 2;
strcpy (lf.lfFaceName, "Times New Roman");
CFont newFont;
newFont.CreateFontIndirect (&lf);
dc.SelectObject (&newFont);
dc.DrawText (CString (_T("Bitmap Button")), rc, DT_CENTER);
rc.left = rc.right + 4;
rc.right = rcPage.right;
dc.DrawText (CString (_T("IP Address")), rc, DT_CENTER);
}
/////////////////////////////////////////////////////////////////////////////
// Bitmap Button message handlers
/////////////////////////////////////////////////////////////////////////////
void COtherDlg::OnOtherDisable()
{
if (m_BitButton1.IsWindowEnabled ())
{
m_BitButton1.EnableWindow (FALSE);
::SetWindowText (GetDlgItem (IDC_OTHER_DISABLE)->m_hWnd, "Enable");
}
else
{
m_BitButton1.EnableWindow (TRUE);
::SetWindowText (GetDlgItem (IDC_OTHER_DISABLE)->m_hWnd, "Disable");
}
}
/////////////////////////////////////////////////////////////////////////////
// IP control message handlers
/////////////////////////////////////////////////////////////////////////////
void COtherDlg::OnIPSetRange()
{
BYTE cUpperAddr1, cUpperAddr2, cUpperAddr3, cUpperAddr4;
BYTE cLowerAddr1, cLowerAddr2, cLowerAddr3, cLowerAddr4;
BYTE cAddr1, cAddr2, cAddr3, cAddr4;
m_ctlIPUpper.GetAddress (cUpperAddr1, cUpperAddr2, cUpperAddr3, cUpperAddr4);
m_ctlIPLower.GetAddress (cLowerAddr1, cLowerAddr2, cLowerAddr3, cLowerAddr4);
if ((cUpperAddr1 < cLowerAddr1) ||
(cUpperAddr2 < cLowerAddr2) ||
(cUpperAddr3 < cLowerAddr3) ||
(cUpperAddr4 < cLowerAddr4))
{
AfxMessageBox ("Lower limits cannot be greater than upper limits");
return;
}
//
// Set the ranges for the fields.
//
m_ctlIPAddress.SetFieldRange (0, cLowerAddr1, cUpperAddr1);
m_ctlIPAddress.SetFieldRange (1, cLowerAddr2, cUpperAddr2);
m_ctlIPAddress.SetFieldRange (2, cLowerAddr3, cUpperAddr3);
m_ctlIPAddress.SetFieldRange (3, cLowerAddr4, cUpperAddr4);
//
// Make sure the current values aren't outside the range. If they
// are, adjust them to the nearest value within range. After that,
// the control will take care of the adjustments.
//
m_ctlIPAddress.GetAddress (cAddr1, cAddr2, cAddr3, cAddr4);
if (cAddr1 > cUpperAddr1)
cAddr1 = cUpperAddr1;
else if (cAddr1 < cLowerAddr1)
cAddr1 = cLowerAddr1;
if (cAddr2 > cUpperAddr2)
cAddr2 = cUpperAddr2;
else if (cAddr2 < cLowerAddr2)
cAddr2 = cLowerAddr2;
if (cAddr3 > cUpperAddr3)
cAddr3 = cUpperAddr3;
else if (cAddr3 < cLowerAddr3)
cAddr3 = cLowerAddr3;
if (cAddr4 > cUpperAddr4)
cAddr4 = cUpperAddr4;
else if (cAddr4 < cLowerAddr4)
cAddr4 = cLowerAddr4;
m_ctlIPAddress.SetAddress (cAddr1, cAddr2, cAddr3, cAddr4);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -