⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 otherdlg.cpp

📁 VC源代码大全(精华版)
💻 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 + -