Cstm1Dlg.cpp
上传用户:apjinmao
上传日期:2007-01-02
资源大小:96k
文件大小:8k
源码类别:

PropertySheet

开发平台:

Visual C++

  1. // cstm1dlg.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "PropSheet Wizard.h"
  5. #include "cstm1dlg.h"
  6. #include "PropSheet Wizardaw.h"
  7. #ifdef _PSEUDO_DEBUG
  8. #undef THIS_FILE
  9. static char THIS_FILE[] = __FILE__;
  10. #endif
  11. /////////////////////////////////////////////////////////////////////////////
  12. // CCustom1Dlg dialog
  13. CCustom1Dlg::CCustom1Dlg()
  14. : CAppWizStepDlg(CCustom1Dlg::IDD)
  15. {
  16. //{{AFX_DATA_INIT(CCustom1Dlg)
  17. m_aboutBox = TRUE;
  18. m_bitmapPages = TRUE;
  19. m_minimizeBox = TRUE;
  20. m_sendToTaskBar = TRUE;
  21. m_startOnTaskBar = TRUE;
  22. m_modal = 1;
  23. m_mfcDLL = 0;
  24. m_tooltips = TRUE;
  25. m_standardButtons = FALSE;
  26. //}}AFX_DATA_INIT
  27. }
  28. void CCustom1Dlg::DoDataExchange(CDataExchange* pDX)
  29. {
  30. CAppWizStepDlg::DoDataExchange(pDX);
  31. //{{AFX_DATA_MAP(CCustom1Dlg)
  32. DDX_Control(pDX, IDC_CHECK_STANDARDBUTTONS, m_ctrlStandardButtons);
  33. DDX_Control(pDX, IDC_CHECK_START_ON_TASKBAR, m_ctrlStartOnTaskBar);
  34. DDX_Control(pDX, IDC_CHECK_SEND_TO_TASKBAR, m_ctrlSendToTaskBar);
  35. DDX_Control(pDX, IDC_CHECK_MINIMIZEBOX, m_ctrlMinimizeBox);
  36. DDX_Check(pDX, IDC_CHECK_ABOUT, m_aboutBox);
  37. DDX_Check(pDX, IDC_CHECK_BITMAP_PAGES, m_bitmapPages);
  38. DDX_Check(pDX, IDC_CHECK_MINIMIZEBOX, m_minimizeBox);
  39. DDX_Check(pDX, IDC_CHECK_SEND_TO_TASKBAR, m_sendToTaskBar);
  40. DDX_Check(pDX, IDC_CHECK_START_ON_TASKBAR, m_startOnTaskBar);
  41. DDX_Radio(pDX, IDC_RADIO_MODAL, m_modal);
  42. DDX_Radio(pDX, IDC_RADIO_DLL, m_mfcDLL);
  43. DDX_Check(pDX, IDC_CHECK_TOOLTIPS, m_tooltips);
  44. DDX_Check(pDX, IDC_CHECK_STANDARDBUTTONS, m_standardButtons);
  45. //}}AFX_DATA_MAP
  46. }
  47. // This is called whenever the user presses Next, Back, or Finish with this step
  48. //  present.  Do all validation & data exchange from the dialog in this function.
  49. BOOL CCustom1Dlg::OnDismiss()
  50. {
  51. if (!UpdateData ())
  52. return (FALSE);
  53. DefineBoolMacro (_T ("MODAL"), !m_modal);
  54. DefineBoolMacro (_T ("ABOUT_BOX"), m_aboutBox);
  55. DefineBoolMacro (_T ("BITMAP_PAGES"), m_bitmapPages);
  56. DefineBoolMacro (_T ("STANDARD_BUTTONS"), m_modal && m_standardButtons);
  57. DefineBoolMacro (_T ("MINIMIZEBOX"), m_minimizeBox);
  58. DefineBoolMacro (_T ("SEND_TO_TASKBAR"), m_sendToTaskBar);
  59. DefineBoolMacro (_T ("START_ON_TASKBAR"), m_startOnTaskBar);
  60. DefineBoolMacro (_T ("TOOLTIPS"), m_tooltips);
  61. DefineBoolMacro (_T ("MFCDLL"), !m_mfcDLL);
  62. return (TRUE); // return FALSE if the dialog shouldn't be dismissed
  63. }
  64. BOOL CCustom1Dlg::PreTranslateMessage (MSG* pMsg)
  65. {
  66. // Let the ToolTip process this message.
  67. m_ctrlTooltip.RelayEvent (pMsg);
  68. return CAppWizStepDlg::PreTranslateMessage (pMsg);
  69. }
  70. BEGIN_MESSAGE_MAP(CCustom1Dlg, CAppWizStepDlg)
  71. //{{AFX_MSG_MAP(CCustom1Dlg)
  72. ON_BN_CLICKED(IDC_CHECK_MINIMIZEBOX, OnUpdateNeeded)
  73. ON_WM_PAINT()
  74. ON_BN_CLICKED(IDC_CHECK_SEND_TO_TASKBAR, OnUpdateNeeded)
  75. ON_BN_CLICKED(IDC_CHECK_START_ON_TASKBAR, OnUpdateNeeded)
  76. ON_BN_CLICKED(IDC_RADIO_MODAL, OnUpdateNeeded)
  77. ON_BN_CLICKED(IDC_RADIO_MODELESS, OnUpdateNeeded)
  78. ON_BN_CLICKED(IDC_CHECK_ABOUT, OnUpdateNeeded)
  79. ON_BN_CLICKED(IDC_CHECK_BITMAP_PAGES, OnUpdateNeeded)
  80. ON_BN_CLICKED(IDC_CHECK_TOOLTIPS, OnUpdateNeeded)
  81. ON_BN_CLICKED(IDC_CHECK_STANDARDBUTTONS, OnUpdateNeeded)
  82. //}}AFX_MSG_MAP
  83. END_MESSAGE_MAP()
  84. /////////////////////////////////////////////////////////////////////////////
  85. // CCustom1Dlg message handlers
  86. void CCustom1Dlg::UpdateControls ()
  87. {
  88. UpdateData ();
  89. m_ctrlStandardButtons.EnableWindow (m_modal);
  90. m_ctrlStandardButtons.ShowWindow (m_modal);
  91. m_ctrlMinimizeBox.EnableWindow (m_modal);
  92. m_ctrlMinimizeBox.ShowWindow (m_modal);
  93. m_ctrlSendToTaskBar.EnableWindow (m_modal && m_minimizeBox);
  94. m_ctrlSendToTaskBar.ShowWindow (m_modal);
  95. m_ctrlStartOnTaskBar.EnableWindow (m_modal && m_minimizeBox && m_sendToTaskBar);
  96. m_ctrlStartOnTaskBar.ShowWindow (m_modal);
  97. }
  98. BOOL CCustom1Dlg::OnInitDialog() 
  99. {
  100. CAppWizStepDlg::OnInitDialog();
  101. // Create the ToolTip control.
  102. m_ctrlTooltip.Create (this);
  103. m_ctrlTooltip.Activate (TRUE);
  104. // TODO: Use one of the following forms to add controls:
  105. m_ctrlTooltip.AddTool (GetDlgItem (IDC_RADIO_MODAL), IDS_CUSTOM1_RADIO_MODAL_TIP);
  106. m_ctrlTooltip.AddTool (GetDlgItem (IDC_RADIO_MODELESS), IDS_CUSTOM1_RADIO_MODELESS_TIP);
  107. m_ctrlTooltip.AddTool (GetDlgItem (IDC_CHECK_ABOUT), IDS_CUSTOM1_CHECK_ABOUT_TIP);
  108. m_ctrlTooltip.AddTool (GetDlgItem (IDC_CHECK_BITMAP_PAGES), IDS_CUSTOM1_CHECK_BITMAP_PAGES_TIP);
  109. m_ctrlTooltip.AddTool (GetDlgItem (IDC_CHECK_TOOLTIPS), IDS_CUSTOM1_CHECK_TOOLTIPS_TIP);
  110. m_ctrlTooltip.AddTool (GetDlgItem (IDC_CHECK_STANDARDBUTTONS), IDS_CUSTOM1_CHECK_STANDARDBUTTONS_TIP);
  111. m_ctrlTooltip.AddTool (GetDlgItem (IDC_CHECK_MINIMIZEBOX), IDS_CUSTOM1_CHECK_MINIMIZEBOX_TIP);
  112. m_ctrlTooltip.AddTool (GetDlgItem (IDC_CHECK_SEND_TO_TASKBAR), IDS_CUSTOM1_CHECK_SEND_TO_TASKBAR_TIP);
  113. m_ctrlTooltip.AddTool (GetDlgItem (IDC_CHECK_START_ON_TASKBAR), IDS_CUSTOM1_CHECK_START_ON_TASKBAR_TIP);
  114. m_ctrlTooltip.AddTool (GetDlgItem (IDC_RADIO_DLL), IDS_CUSTOM1_RADIO_DLL_TIP);
  115. m_ctrlTooltip.AddTool (GetDlgItem (IDC_RADIO_STATICALLY), IDS_CUSTOM1_RADIO_STATICALLY_TIP);
  116. UpdateControls ();
  117. return TRUE;  // return TRUE unless you set the focus to a control
  118.               // EXCEPTION: OCX Property Pages should return FALSE
  119. }
  120. #define STEP1_LEFT 8
  121. #define STEP1_TOP 42
  122. #define STEP1_WIDTH 179
  123. #define STEP1_HEIGHT 180
  124. #define TOOLTIPS_LEFT 70
  125. #define TOOLTIPS_TOP 139
  126. #define TOOLTIPS_WIDTH 28
  127. #define TOOLTIPS_HEIGHT 10
  128. #define ABOUT_LEFT 14
  129. #define ABOUT_TOP 68
  130. #define ABOUT_WIDTH 70
  131. #define ABOUT_HEIGHT 50
  132. #define BMP_PAGES_LEFT 18
  133. #define BMP_PAGES_TOP 71
  134. #define BMP_PAGES_WIDTH 120
  135. #define BMP_PAGES_HEIGHT 10
  136. #define MINIMIZE_BOX_LEFT 157
  137. #define MINIMIZE_BOX_TOP 59
  138. #define MINIMIZE_BOX_WIDTH 15
  139. #define MINIMIZE_BOX_HEIGHT 7
  140. #define SEND_TO_TASKBAR_LEFT 23
  141. #define SEND_TO_TASKBAR_TOP 282
  142. #define SEND_TO_TASKBAR_WIDTH 160
  143. #define SEND_TO_TASKBAR_HEIGHT 26
  144. // Coordinates for yellow rectangle in dialog-box units
  145. #define RIGHT_YELLOW_DLGU 124
  146. #define BOTTOM_YELLOW_DLGU 197
  147. void CCustom1Dlg::OnPaint() 
  148. {
  149. CPaintDC dc(this); // device context for painting
  150. CDC mdc;
  151. mdc.CreateCompatibleDC (&dc);
  152. CRect rect (0, 0, RIGHT_YELLOW_DLGU+1, BOTTOM_YELLOW_DLGU+1);
  153. MapDialogRect (&rect);
  154. dc.DPtoLP (&rect);
  155. CBitmap bmp, *ob;
  156. bmp.CreateCompatibleBitmap (&dc, rect.right, rect.bottom);
  157. ob = mdc.SelectObject (&bmp);
  158. PaintBackground (mdc, this);
  159. PaintBitmap ((m_standardButtons || !m_modal) ? IDB_STEP1_STANDARDBUTTONS : IDB_STEP1_NOSTANDARDBUTTONS, STEP1_LEFT, STEP1_TOP, STEP1_WIDTH, STEP1_HEIGHT, mdc);
  160. if (m_tooltips)
  161. PaintBitmap (IDB_TOOLTIPS, TOOLTIPS_LEFT, TOOLTIPS_TOP, TOOLTIPS_WIDTH, TOOLTIPS_HEIGHT, mdc);
  162. if (m_bitmapPages)
  163. PaintBitmap (IDB_BITMAP_PAGES, BMP_PAGES_LEFT, BMP_PAGES_TOP, BMP_PAGES_WIDTH, BMP_PAGES_HEIGHT, mdc);
  164. if (m_modal && m_minimizeBox)
  165. PaintBitmap (IDB_MINIMIZE_BOX, MINIMIZE_BOX_LEFT, MINIMIZE_BOX_TOP, MINIMIZE_BOX_WIDTH, MINIMIZE_BOX_HEIGHT, mdc);
  166. if (m_aboutBox)
  167. PaintBitmap (IDB_ABOUT, ABOUT_LEFT, ABOUT_TOP, ABOUT_WIDTH, ABOUT_HEIGHT, mdc);
  168. if (m_modal && m_minimizeBox)
  169. {
  170. if (m_sendToTaskBar)
  171. PaintBitmap (IDB_SEND_TO_TASKBAR, SEND_TO_TASKBAR_LEFT, SEND_TO_TASKBAR_TOP, SEND_TO_TASKBAR_WIDTH, SEND_TO_TASKBAR_HEIGHT, mdc);
  172. else
  173. PaintBitmap (IDB_NO_SEND_TO_TASKBAR, SEND_TO_TASKBAR_LEFT, SEND_TO_TASKBAR_TOP, SEND_TO_TASKBAR_WIDTH, SEND_TO_TASKBAR_HEIGHT, mdc);
  174. }
  175. dc.BitBlt (rect.left, rect.top, rect.Width (), rect.Height (), &mdc, rect.left, rect.top, SRCCOPY);
  176. mdc.SelectObject (ob);
  177. }
  178. void CCustom1Dlg::OnUpdateNeeded() 
  179. {
  180. if (UpdateData ())
  181. {
  182. // Invalidate the portion of this dialog on which we draw the picture
  183. CRect rect (STEP1_LEFT, STEP1_TOP, SEND_TO_TASKBAR_LEFT + SEND_TO_TASKBAR_WIDTH, SEND_TO_TASKBAR_TOP + SEND_TO_TASKBAR_HEIGHT);
  184. InvalidateRect (rect, FALSE);
  185. RedrawWindow (rect, NULL, RDW_UPDATENOW);
  186. UpdateControls ();
  187. }
  188. }