cstm1dlg.cpp

来自「Visual C++下的界面设计」· C++ 代码 · 共 221 行

CPP
221
字号
// cstm1dlg.cpp : implementation file
//

#include "stdafx.h"
#include "PropSheet Wizard.h"
#include "cstm1dlg.h"
#include "PropSheet Wizardaw.h"

#ifdef _PSEUDO_DEBUG
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CCustom1Dlg dialog


CCustom1Dlg::CCustom1Dlg()
	: CAppWizStepDlg(CCustom1Dlg::IDD)
{
	//{{AFX_DATA_INIT(CCustom1Dlg)
	m_aboutBox = TRUE;
	m_bitmapPages = TRUE;
	m_minimizeBox = TRUE;
	m_sendToTaskBar = TRUE;
	m_startOnTaskBar = TRUE;
	m_modal = 1;
	m_mfcDLL = 0;
	m_tooltips = TRUE;
	m_standardButtons = FALSE;
	//}}AFX_DATA_INIT
}


void CCustom1Dlg::DoDataExchange(CDataExchange* pDX)
{
	CAppWizStepDlg::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CCustom1Dlg)
	DDX_Control(pDX, IDC_CHECK_STANDARDBUTTONS, m_ctrlStandardButtons);
	DDX_Control(pDX, IDC_CHECK_START_ON_TASKBAR, m_ctrlStartOnTaskBar);
	DDX_Control(pDX, IDC_CHECK_SEND_TO_TASKBAR, m_ctrlSendToTaskBar);
	DDX_Control(pDX, IDC_CHECK_MINIMIZEBOX, m_ctrlMinimizeBox);
	DDX_Check(pDX, IDC_CHECK_ABOUT, m_aboutBox);
	DDX_Check(pDX, IDC_CHECK_BITMAP_PAGES, m_bitmapPages);
	DDX_Check(pDX, IDC_CHECK_MINIMIZEBOX, m_minimizeBox);
	DDX_Check(pDX, IDC_CHECK_SEND_TO_TASKBAR, m_sendToTaskBar);
	DDX_Check(pDX, IDC_CHECK_START_ON_TASKBAR, m_startOnTaskBar);
	DDX_Radio(pDX, IDC_RADIO_MODAL, m_modal);
	DDX_Radio(pDX, IDC_RADIO_DLL, m_mfcDLL);
	DDX_Check(pDX, IDC_CHECK_TOOLTIPS, m_tooltips);
	DDX_Check(pDX, IDC_CHECK_STANDARDBUTTONS, m_standardButtons);
	//}}AFX_DATA_MAP
}

// This is called whenever the user presses Next, Back, or Finish with this step
//  present.  Do all validation & data exchange from the dialog in this function.
BOOL CCustom1Dlg::OnDismiss()
{
	if (!UpdateData ())
		return (FALSE);

	DefineBoolMacro (_T ("MODAL"), !m_modal);
	DefineBoolMacro (_T ("ABOUT_BOX"), m_aboutBox);
	DefineBoolMacro (_T ("BITMAP_PAGES"), m_bitmapPages);
	DefineBoolMacro (_T ("STANDARD_BUTTONS"), m_modal && m_standardButtons);
	DefineBoolMacro (_T ("MINIMIZEBOX"), m_minimizeBox);
	DefineBoolMacro (_T ("SEND_TO_TASKBAR"), m_sendToTaskBar);
	DefineBoolMacro (_T ("START_ON_TASKBAR"), m_startOnTaskBar);
	DefineBoolMacro (_T ("TOOLTIPS"), m_tooltips);
	DefineBoolMacro (_T ("MFCDLL"), !m_mfcDLL);

	return (TRUE);	// return FALSE if the dialog shouldn't be dismissed
}

BOOL CCustom1Dlg::PreTranslateMessage (MSG* pMsg)
{
	// Let the ToolTip process this message.
	m_ctrlTooltip.RelayEvent (pMsg);

	return CAppWizStepDlg::PreTranslateMessage (pMsg);
}

BEGIN_MESSAGE_MAP(CCustom1Dlg, CAppWizStepDlg)
	//{{AFX_MSG_MAP(CCustom1Dlg)
	ON_BN_CLICKED(IDC_CHECK_MINIMIZEBOX, OnUpdateNeeded)
	ON_WM_PAINT()
	ON_BN_CLICKED(IDC_CHECK_SEND_TO_TASKBAR, OnUpdateNeeded)
	ON_BN_CLICKED(IDC_CHECK_START_ON_TASKBAR, OnUpdateNeeded)
	ON_BN_CLICKED(IDC_RADIO_MODAL, OnUpdateNeeded)
	ON_BN_CLICKED(IDC_RADIO_MODELESS, OnUpdateNeeded)
	ON_BN_CLICKED(IDC_CHECK_ABOUT, OnUpdateNeeded)
	ON_BN_CLICKED(IDC_CHECK_BITMAP_PAGES, OnUpdateNeeded)
	ON_BN_CLICKED(IDC_CHECK_TOOLTIPS, OnUpdateNeeded)
	ON_BN_CLICKED(IDC_CHECK_STANDARDBUTTONS, OnUpdateNeeded)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()


/////////////////////////////////////////////////////////////////////////////
// CCustom1Dlg message handlers

void CCustom1Dlg::UpdateControls ()
{
	UpdateData ();
	m_ctrlStandardButtons.EnableWindow (m_modal);
	m_ctrlStandardButtons.ShowWindow (m_modal);
	m_ctrlMinimizeBox.EnableWindow (m_modal);
	m_ctrlMinimizeBox.ShowWindow (m_modal);
	m_ctrlSendToTaskBar.EnableWindow (m_modal && m_minimizeBox);
	m_ctrlSendToTaskBar.ShowWindow (m_modal);
	m_ctrlStartOnTaskBar.EnableWindow (m_modal && m_minimizeBox && m_sendToTaskBar);
	m_ctrlStartOnTaskBar.ShowWindow (m_modal);
}

BOOL CCustom1Dlg::OnInitDialog() 
{
	CAppWizStepDlg::OnInitDialog();

	// Create the ToolTip control.
	m_ctrlTooltip.Create (this);
	m_ctrlTooltip.Activate (TRUE);

	// TODO: Use one of the following forms to add controls:
	m_ctrlTooltip.AddTool (GetDlgItem (IDC_RADIO_MODAL), IDS_CUSTOM1_RADIO_MODAL_TIP);
	m_ctrlTooltip.AddTool (GetDlgItem (IDC_RADIO_MODELESS), IDS_CUSTOM1_RADIO_MODELESS_TIP);
	m_ctrlTooltip.AddTool (GetDlgItem (IDC_CHECK_ABOUT), IDS_CUSTOM1_CHECK_ABOUT_TIP);
	m_ctrlTooltip.AddTool (GetDlgItem (IDC_CHECK_BITMAP_PAGES), IDS_CUSTOM1_CHECK_BITMAP_PAGES_TIP);
	m_ctrlTooltip.AddTool (GetDlgItem (IDC_CHECK_TOOLTIPS), IDS_CUSTOM1_CHECK_TOOLTIPS_TIP);
	m_ctrlTooltip.AddTool (GetDlgItem (IDC_CHECK_STANDARDBUTTONS), IDS_CUSTOM1_CHECK_STANDARDBUTTONS_TIP);
	m_ctrlTooltip.AddTool (GetDlgItem (IDC_CHECK_MINIMIZEBOX), IDS_CUSTOM1_CHECK_MINIMIZEBOX_TIP);
	m_ctrlTooltip.AddTool (GetDlgItem (IDC_CHECK_SEND_TO_TASKBAR), IDS_CUSTOM1_CHECK_SEND_TO_TASKBAR_TIP);
	m_ctrlTooltip.AddTool (GetDlgItem (IDC_CHECK_START_ON_TASKBAR), IDS_CUSTOM1_CHECK_START_ON_TASKBAR_TIP);
	m_ctrlTooltip.AddTool (GetDlgItem (IDC_RADIO_DLL), IDS_CUSTOM1_RADIO_DLL_TIP);
	m_ctrlTooltip.AddTool (GetDlgItem (IDC_RADIO_STATICALLY), IDS_CUSTOM1_RADIO_STATICALLY_TIP);

	UpdateControls ();

	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

#define STEP1_LEFT				8
#define STEP1_TOP				42
#define STEP1_WIDTH				179
#define STEP1_HEIGHT			180

#define TOOLTIPS_LEFT			70
#define TOOLTIPS_TOP			139
#define TOOLTIPS_WIDTH			28
#define TOOLTIPS_HEIGHT			10

#define ABOUT_LEFT				14
#define ABOUT_TOP				68
#define ABOUT_WIDTH				70
#define ABOUT_HEIGHT			50

#define BMP_PAGES_LEFT			18
#define BMP_PAGES_TOP			71
#define BMP_PAGES_WIDTH			120
#define BMP_PAGES_HEIGHT		10

#define MINIMIZE_BOX_LEFT		157
#define MINIMIZE_BOX_TOP		59
#define MINIMIZE_BOX_WIDTH		15
#define MINIMIZE_BOX_HEIGHT		7

#define SEND_TO_TASKBAR_LEFT		23
#define SEND_TO_TASKBAR_TOP			282
#define SEND_TO_TASKBAR_WIDTH		160
#define SEND_TO_TASKBAR_HEIGHT		26

// Coordinates for yellow rectangle in dialog-box units
#define RIGHT_YELLOW_DLGU	124
#define BOTTOM_YELLOW_DLGU	197

void CCustom1Dlg::OnPaint() 
{
	CPaintDC dc(this); // device context for painting

	CDC mdc;
	mdc.CreateCompatibleDC (&dc);
	
	CRect rect (0, 0, RIGHT_YELLOW_DLGU+1, BOTTOM_YELLOW_DLGU+1);
	MapDialogRect (&rect);
	dc.DPtoLP (&rect);
	CBitmap bmp, *ob;
	bmp.CreateCompatibleBitmap (&dc, rect.right, rect.bottom);
	ob = mdc.SelectObject (&bmp);
	PaintBackground (mdc, this);
	PaintBitmap ((m_standardButtons || !m_modal) ? IDB_STEP1_STANDARDBUTTONS : IDB_STEP1_NOSTANDARDBUTTONS, STEP1_LEFT, STEP1_TOP, STEP1_WIDTH, STEP1_HEIGHT, mdc);
	if (m_tooltips)
		PaintBitmap (IDB_TOOLTIPS, TOOLTIPS_LEFT, TOOLTIPS_TOP, TOOLTIPS_WIDTH, TOOLTIPS_HEIGHT, mdc);
	if (m_bitmapPages)
		PaintBitmap (IDB_BITMAP_PAGES, BMP_PAGES_LEFT, BMP_PAGES_TOP, BMP_PAGES_WIDTH, BMP_PAGES_HEIGHT, mdc);
	if (m_modal && m_minimizeBox)
		PaintBitmap (IDB_MINIMIZE_BOX, MINIMIZE_BOX_LEFT, MINIMIZE_BOX_TOP, MINIMIZE_BOX_WIDTH, MINIMIZE_BOX_HEIGHT, mdc);
	if (m_aboutBox)
		PaintBitmap (IDB_ABOUT, ABOUT_LEFT, ABOUT_TOP, ABOUT_WIDTH, ABOUT_HEIGHT, mdc);
	if (m_modal && m_minimizeBox)
	{
		if (m_sendToTaskBar)
			PaintBitmap (IDB_SEND_TO_TASKBAR, SEND_TO_TASKBAR_LEFT, SEND_TO_TASKBAR_TOP, SEND_TO_TASKBAR_WIDTH, SEND_TO_TASKBAR_HEIGHT, mdc);
		else
			PaintBitmap (IDB_NO_SEND_TO_TASKBAR, SEND_TO_TASKBAR_LEFT, SEND_TO_TASKBAR_TOP, SEND_TO_TASKBAR_WIDTH, SEND_TO_TASKBAR_HEIGHT, mdc);
	}
	dc.BitBlt (rect.left, rect.top, rect.Width (), rect.Height (), &mdc, rect.left, rect.top, SRCCOPY);
	mdc.SelectObject (ob);
}

void CCustom1Dlg::OnUpdateNeeded() 
{
	if (UpdateData ())
	{
		// Invalidate the portion of this dialog on which we draw the picture
		CRect rect (STEP1_LEFT, STEP1_TOP, SEND_TO_TASKBAR_LEFT + SEND_TO_TASKBAR_WIDTH, SEND_TO_TASKBAR_TOP + SEND_TO_TASKBAR_HEIGHT);
		InvalidateRect (rect, FALSE);
		RedrawWindow (rect, NULL, RDW_UPDATENOW);
		UpdateControls ();
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?