dialog.cpp
上传用户:szled88
上传日期:2015-04-09
资源大小:43957k
文件大小:6k
源码类别:

对话框与窗口

开发平台:

Visual C++

  1. // [!output DIALOG_IMPL] : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "[!output APP_HEADER]"
  5. #include "[!output DIALOG_HEADER]"
  6. [!if AUTOMATION]
  7. #include "[!output DIALOG_AUTO_PROXY_HEADER]"
  8. [!endif]
  9. #ifdef _DEBUG
  10. #define new DEBUG_NEW
  11. #endif
  12. [!if ABOUT_BOX]
  13. // CAboutDlg dialog used for App About
  14. class CAboutDlg : public CDialog
  15. {
  16. public:
  17. CAboutDlg();
  18. // Dialog Data
  19. enum { IDD = IDD_ABOUTBOX };
  20. protected:
  21. virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
  22. // Implementation
  23. protected:
  24. DECLARE_MESSAGE_MAP()
  25. };
  26. CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
  27. {
  28. [!if ACCESSIBILITY]
  29. EnableActiveAccessibility();
  30. [!endif]
  31. }
  32. void CAboutDlg::DoDataExchange(CDataExchange* pDX)
  33. {
  34. CDialog::DoDataExchange(pDX);
  35. }
  36. BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
  37. END_MESSAGE_MAP()
  38. [!endif]
  39. // [!output DIALOG_CLASS] dialog
  40. [!if HTML_DIALOG]
  41. BEGIN_DHTML_EVENT_MAP([!output DIALOG_CLASS])
  42. DHTML_EVENT_ONCLICK(_T("ButtonOK"), OnButtonOK)
  43. DHTML_EVENT_ONCLICK(_T("ButtonCancel"), OnButtonCancel)
  44. [!if CONTEXT_HELP]
  45. DHTML_EVENT_ONCLICK(_T("ButtonHelp"), OnButtonHelp)
  46. [!endif]
  47. END_DHTML_EVENT_MAP()
  48. [!endif]
  49. [!if AUTOMATION]
  50. IMPLEMENT_DYNAMIC([!output DIALOG_CLASS], [!output DIALOG_BASE_CLASS]);
  51. [!endif]
  52. [!output DIALOG_CLASS]::[!output DIALOG_CLASS](CWnd* pParent /*=NULL*/)
  53. [!if HTML_DIALOG]
  54. : CDHtmlDialog([!output DIALOG_CLASS]::IDD, [!output DIALOG_CLASS]::IDH, pParent)
  55. [!else]
  56. : [!output DIALOG_BASE_CLASS]([!output DIALOG_CLASS]::IDD, pParent)
  57. [!endif]
  58. {
  59. [!if ACCESSIBILITY]
  60. EnableActiveAccessibility();
  61. [!endif]
  62. m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
  63. [!if AUTOMATION]
  64. m_pAutoProxy = NULL;
  65. [!endif]
  66. }
  67. [!if AUTOMATION]
  68. [!output DIALOG_CLASS]::~[!output DIALOG_CLASS]()
  69. {
  70. // If there is an automation proxy for this dialog, set
  71. //  its back pointer to this dialog to NULL, so it knows
  72. //  the dialog has been deleted.
  73. if (m_pAutoProxy != NULL)
  74. m_pAutoProxy->m_pDialog = NULL;
  75. }
  76. [!endif]
  77. void [!output DIALOG_CLASS]::DoDataExchange(CDataExchange* pDX)
  78. {
  79. [!output DIALOG_BASE_CLASS]::DoDataExchange(pDX);
  80. }
  81. BEGIN_MESSAGE_MAP([!output DIALOG_CLASS], [!output DIALOG_BASE_CLASS])
  82. [!if ABOUT_BOX]
  83. ON_WM_SYSCOMMAND()
  84. [!endif]
  85. [!if CONTEXT_HELP && HELPSTYLE_WINHELP]
  86. ON_WM_DESTROY()
  87. [!endif]
  88. [!if AUTOMATION]
  89. ON_WM_CLOSE()
  90. [!endif]
  91. [!if !HTML_DIALOG]
  92. ON_WM_PAINT()
  93. ON_WM_QUERYDRAGICON()
  94. [!endif]
  95. //}}AFX_MSG_MAP
  96. END_MESSAGE_MAP()
  97. // [!output DIALOG_CLASS] message handlers
  98. BOOL [!output DIALOG_CLASS]::OnInitDialog()
  99. {
  100. [!output DIALOG_BASE_CLASS]::OnInitDialog();
  101. [!if ABOUT_BOX]
  102. // Add "About..." menu item to system menu.
  103. // IDM_ABOUTBOX must be in the system command range.
  104. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
  105. ASSERT(IDM_ABOUTBOX < 0xF000);
  106. CMenu* pSysMenu = GetSystemMenu(FALSE);
  107. if (pSysMenu != NULL)
  108. {
  109. CString strAboutMenu;
  110. strAboutMenu.LoadString(IDS_ABOUTBOX);
  111. if (!strAboutMenu.IsEmpty())
  112. {
  113. pSysMenu->AppendMenu(MF_SEPARATOR);
  114. pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
  115. }
  116. }
  117. [!endif]
  118. // Set the icon for this dialog.  The framework does this automatically
  119. //  when the application's main window is not a dialog
  120. SetIcon(m_hIcon, TRUE);         // Set big icon
  121. SetIcon(m_hIcon, FALSE);        // Set small icon
  122. [!if MAIN_FRAME_MAXIMIZED]
  123. ShowWindow(SW_MAXIMIZE);
  124. [!endif]
  125. [!if MAIN_FRAME_MINIMIZED]
  126. ShowWindow(SW_MINIMIZE);
  127. [!endif]
  128. // TODO: Add extra initialization here
  129. return TRUE;  // return TRUE  unless you set the focus to a control
  130. }
  131. [!if ABOUT_BOX]
  132. void [!output DIALOG_CLASS]::OnSysCommand(UINT nID, LPARAM lParam)
  133. {
  134. if ((nID & 0xFFF0) == IDM_ABOUTBOX)
  135. {
  136. CAboutDlg dlgAbout;
  137. dlgAbout.DoModal();
  138. }
  139. else
  140. {
  141. [!output DIALOG_BASE_CLASS]::OnSysCommand(nID, lParam);
  142. }
  143. }
  144. [!endif]
  145. [!if CONTEXT_HELP && HELPSTYLE_WINHELP]
  146. void [!output DIALOG_CLASS]::OnDestroy()
  147. {
  148. WinHelp(0L, HELP_QUIT);
  149. [!output DIALOG_BASE_CLASS]::OnDestroy();
  150. }
  151. [!endif]
  152. // If you add a minimize button to your dialog, you will need the code below
  153. //  to draw the icon.  For MFC applications using the document/view model,
  154. //  this is automatically done for you by the framework.
  155. void [!output DIALOG_CLASS]::OnPaint()
  156. {
  157. if (IsIconic())
  158. {
  159. CPaintDC dc(this); // device context for painting
  160. SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
  161. // Center icon in client rectangle
  162. int cxIcon = GetSystemMetrics(SM_CXICON);
  163. int cyIcon = GetSystemMetrics(SM_CYICON);
  164. CRect rect;
  165. GetClientRect(&rect);
  166. int x = (rect.Width() - cxIcon + 1) / 2;
  167. int y = (rect.Height() - cyIcon + 1) / 2;
  168. // Draw the icon
  169. dc.DrawIcon(x, y, m_hIcon);
  170. }
  171. else
  172. {
  173. [!output DIALOG_BASE_CLASS]::OnPaint();
  174. }
  175. }
  176. // The system calls this function to obtain the cursor to display while the user drags
  177. //  the minimized window.
  178. HCURSOR [!output DIALOG_CLASS]::OnQueryDragIcon()
  179. {
  180. return static_cast<HCURSOR>(m_hIcon);
  181. }
  182. [!if AUTOMATION]
  183. // Automation servers should not exit when a user closes the UI
  184. //  if a controller still holds on to one of its objects.  These
  185. //  message handlers make sure that if the proxy is still in use,
  186. //  then the UI is hidden but the dialog remains around if it
  187. //  is dismissed.
  188. void [!output DIALOG_CLASS]::OnClose()
  189. {
  190. if (CanExit())
  191. [!output DIALOG_BASE_CLASS]::OnClose();
  192. }
  193. void [!output DIALOG_CLASS]::OnOK()
  194. {
  195. if (CanExit())
  196. [!output DIALOG_BASE_CLASS]::OnOK();
  197. }
  198. void [!output DIALOG_CLASS]::OnCancel()
  199. {
  200. if (CanExit())
  201. [!output DIALOG_BASE_CLASS]::OnCancel();
  202. }
  203. BOOL [!output DIALOG_CLASS]::CanExit()
  204. {
  205. // If the proxy object is still around, then the automation
  206. //  controller is still holding on to this application.  Leave
  207. //  the dialog around, but hide its UI.
  208. if (m_pAutoProxy != NULL)
  209. {
  210. ShowWindow(SW_HIDE);
  211. return FALSE;
  212. }
  213. return TRUE;
  214. }
  215. [!endif]
  216. [!if HTML_DIALOG]
  217. HRESULT [!output DIALOG_CLASS]::OnButtonOK(IHTMLElement* /*pElement*/)
  218. {
  219. OnOK();
  220. return S_OK;
  221. }
  222. HRESULT [!output DIALOG_CLASS]::OnButtonCancel(IHTMLElement* /*pElement*/)
  223. {
  224. OnCancel();
  225. return S_OK;
  226. }
  227. [!if CONTEXT_HELP]
  228. HRESULT [!output DIALOG_CLASS]::OnButtonHelp(IHTMLElement* /*pElement*/)
  229. {
  230. OnHelp();
  231. return S_OK;
  232. }
  233. [!endif]
  234. [!endif]