DIALOG.CPP
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:7k
源码类别:

Windows编程

开发平台:

Visual C++

  1. // $$dlg_ifile$$.cpp : implementation file
  2. //
  3. // This is a part of the Microsoft Foundation Classes C++ library.
  4. // Copyright (C) 1995-1998 Microsoft Corporation
  5. // All rights reserved.
  6. //
  7. // This source code is only intended as a supplement to the
  8. // Microsoft Foundation Classes Reference and related
  9. // electronic documentation provided with the library.
  10. // See these sources for detailed information regarding the
  11. // Microsoft Foundation Classes product.
  12. #include "stdafx.h"
  13. #include "$$root$$.h"
  14. #include "$$dlg_hfile$$.h"
  15. $$IF(AUTOMATION)
  16. #include "$$dlgautoproxy_hfile$$.h"
  17. $$ENDIF //AUTOMATION
  18. $$IF(PRESS_ME_DIALOG)
  19. #include "pressdlg.h"
  20. $$ENDIF //PRESS_ME_DIALOG
  21. #ifdef _DEBUG
  22. #define new DEBUG_NEW
  23. #undef THIS_FILE
  24. static char THIS_FILE[] = __FILE__;
  25. #endif
  26. $$IF(ABOUT)
  27. /////////////////////////////////////////////////////////////////////////////
  28. // CAboutDlg dialog used for App About
  29. class CAboutDlg : public CDialog
  30. {
  31. public:
  32. CAboutDlg();
  33. // Dialog Data
  34. //{{AFX_DATA(CAboutDlg)
  35. enum { IDD = IDD_ABOUTBOX };
  36. //}}AFX_DATA
  37. // ClassWizard generated virtual function overrides
  38. //{{AFX_VIRTUAL(CAboutDlg)
  39. protected:
  40. virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
  41. //}}AFX_VIRTUAL
  42. // Implementation
  43. protected:
  44. //{{AFX_MSG(CAboutDlg)
  45. //}}AFX_MSG
  46. DECLARE_MESSAGE_MAP()
  47. };
  48. CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
  49. {
  50. //{{AFX_DATA_INIT(CAboutDlg)
  51. //}}AFX_DATA_INIT
  52. }
  53. void CAboutDlg::DoDataExchange(CDataExchange* pDX)
  54. {
  55. CDialog::DoDataExchange(pDX);
  56. //{{AFX_DATA_MAP(CAboutDlg)
  57. //}}AFX_DATA_MAP
  58. }
  59. BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
  60. //{{AFX_MSG_MAP(CAboutDlg)
  61. // No message handlers
  62. //}}AFX_MSG_MAP
  63. END_MESSAGE_MAP()
  64. $$ENDIF //ABOUT
  65. /////////////////////////////////////////////////////////////////////////////
  66. // $$DLG_CLASS$$ dialog
  67. $$IF(AUTOMATION)
  68. IMPLEMENT_DYNAMIC($$DLG_CLASS$$, $$DLG_BASE_CLASS$$);
  69. $$ENDIF //AUTOMATION
  70. $$DLG_CLASS$$::$$DLG_CLASS$$(CWnd* pParent /*=NULL*/)
  71. : $$DLG_BASE_CLASS$$($$DLG_CLASS$$::IDD, pParent)
  72. {
  73. //{{AFX_DATA_INIT($$DLG_CLASS$$)
  74. // NOTE: the ClassWizard will add member initialization here
  75. //}}AFX_DATA_INIT
  76. $$IF(VERBOSE)
  77. // Note that LoadIcon does not require a subsequent DestroyIcon in Win32
  78. $$ENDIF
  79. m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
  80. $$IF(AUTOMATION)
  81. m_pAutoProxy = NULL;
  82. $$ENDIF //AUTOMATION
  83. }
  84. $$IF(AUTOMATION)
  85. $$DLG_CLASS$$::~$$DLG_CLASS$$()
  86. {
  87. $$IF(VERBOSE)
  88. // If there is an automation proxy for this dialog, set
  89. //  its back pointer to this dialog to NULL, so it knows
  90. //  the dialog has been deleted.
  91. $$ENDIF //VERBOSE
  92. if (m_pAutoProxy != NULL)
  93. m_pAutoProxy->m_pDialog = NULL;
  94. }
  95. $$ENDIF //AUTOMATION
  96. void $$DLG_CLASS$$::DoDataExchange(CDataExchange* pDX)
  97. {
  98. $$DLG_BASE_CLASS$$::DoDataExchange(pDX);
  99. //{{AFX_DATA_MAP($$DLG_CLASS$$)
  100. // NOTE: the ClassWizard will add DDX and DDV calls here
  101. //}}AFX_DATA_MAP
  102. }
  103. BEGIN_MESSAGE_MAP($$DLG_CLASS$$, $$DLG_BASE_CLASS$$)
  104. //{{AFX_MSG_MAP($$DLG_CLASS$$)
  105. $$IF(ABOUT)
  106. ON_WM_SYSCOMMAND()
  107. $$ENDIF
  108. $$IF(HELP)
  109. ON_WM_DESTROY()
  110. $$ENDIF
  111. $$IF(AUTOMATION)
  112. ON_WM_CLOSE()
  113. $$ENDIF
  114. $$IF(PRESS_ME_DIALOG)
  115. ON_COMMAND(IDC_PRESS_ME, OnPressMe)
  116. $$ENDIF
  117. ON_WM_PAINT()
  118. ON_WM_QUERYDRAGICON()
  119. //}}AFX_MSG_MAP
  120. END_MESSAGE_MAP()
  121. /////////////////////////////////////////////////////////////////////////////
  122. // $$DLG_CLASS$$ message handlers
  123. BOOL $$DLG_CLASS$$::OnInitDialog()
  124. {
  125. $$DLG_BASE_CLASS$$::OnInitDialog();
  126. $$IF(ABOUT)
  127. // Add "About..." menu item to system menu.
  128. // IDM_ABOUTBOX must be in the system command range.
  129. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
  130. ASSERT(IDM_ABOUTBOX < 0xF000);
  131. CMenu* pSysMenu = GetSystemMenu(FALSE);
  132. if (pSysMenu != NULL)
  133. {
  134. CString strAboutMenu;
  135. strAboutMenu.LoadString(IDS_ABOUTBOX);
  136. if (!strAboutMenu.IsEmpty())
  137. {
  138. pSysMenu->AppendMenu(MF_SEPARATOR);
  139. pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
  140. }
  141. }
  142. $$ENDIF //ABOUT
  143. $$IF(VERBOSE)
  144. // Set the icon for this dialog.  The framework does this automatically
  145. //  when the application's main window is not a dialog
  146. $$ENDIF //VERBOSE
  147. SetIcon(m_hIcon, TRUE);         // Set big icon
  148. SetIcon(m_hIcon, FALSE);        // Set small icon
  149. // TODO: Add extra initialization here
  150. return TRUE;  // return TRUE  unless you set the focus to a control
  151. }
  152. $$IF(ABOUT)
  153. void $$DLG_CLASS$$::OnSysCommand(UINT nID, LPARAM lParam)
  154. {
  155. if ((nID & 0xFFF0) == IDM_ABOUTBOX)
  156. {
  157. CAboutDlg dlgAbout;
  158. dlgAbout.DoModal();
  159. }
  160. else
  161. {
  162. $$DLG_BASE_CLASS$$::OnSysCommand(nID, lParam);
  163. }
  164. }
  165. $$ENDIF //ABOUT
  166. $$IF(HELP)
  167. void $$DLG_CLASS$$::OnDestroy()
  168. {
  169. WinHelp(0L, HELP_QUIT);
  170. $$DLG_BASE_CLASS$$::OnDestroy();
  171. }
  172. $$ENDIF //HELP
  173. $$IF(PRESS_ME_DIALOG)
  174. void $$DLG_CLASS$$::OnPressMe()
  175. {
  176. CPressMeDlg dlg;
  177. dlg.DoModal();
  178. }
  179. $$ENDIF //PRESS_ME_DIALOG
  180. // If you add a minimize button to your dialog, you will need the code below
  181. //  to draw the icon.  For MFC applications using the document/view model,
  182. //  this is automatically done for you by the framework.
  183. void $$DLG_CLASS$$::OnPaint()
  184. {
  185. if (IsIconic())
  186. {
  187. CPaintDC dc(this); // device context for painting
  188. SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
  189. // Center icon in client rectangle
  190. int cxIcon = GetSystemMetrics(SM_CXICON);
  191. int cyIcon = GetSystemMetrics(SM_CYICON);
  192. CRect rect;
  193. GetClientRect(&rect);
  194. int x = (rect.Width() - cxIcon + 1) / 2;
  195. int y = (rect.Height() - cyIcon + 1) / 2;
  196. // Draw the icon
  197. dc.DrawIcon(x, y, m_hIcon);
  198. }
  199. else
  200. {
  201. $$DLG_BASE_CLASS$$::OnPaint();
  202. }
  203. }
  204. $$IF(VERBOSE)
  205. // The system calls this to obtain the cursor to display while the user drags
  206. //  the minimized window.
  207. $$ENDIF
  208. HCURSOR $$DLG_CLASS$$::OnQueryDragIcon()
  209. {
  210. return (HCURSOR) m_hIcon;
  211. }
  212. $$IF(AUTOMATION)
  213. $$IF(VERBOSE)
  214. // Automation servers should not exit when a user closes the UI
  215. //  if a controller still holds on to one of its objects.  These
  216. //  message handlers make sure that if the proxy is still in use,
  217. //  then the UI is hidden but the dialog remains around if it
  218. //  is dismissed.
  219. $$ENDIF //VERBOSE
  220. void $$DLG_CLASS$$::OnClose()
  221. {
  222. if (CanExit())
  223. $$DLG_BASE_CLASS$$::OnClose();
  224. }
  225. void $$DLG_CLASS$$::OnOK()
  226. {
  227. if (CanExit())
  228. $$DLG_BASE_CLASS$$::OnOK();
  229. }
  230. void $$DLG_CLASS$$::OnCancel()
  231. {
  232. if (CanExit())
  233. $$DLG_BASE_CLASS$$::OnCancel();
  234. }
  235. BOOL $$DLG_CLASS$$::CanExit()
  236. {
  237. $$IF(VERBOSE)
  238. // If the proxy object is still around, then the automation
  239. //  controller is still holding on to this application.  Leave
  240. //  the dialog around, but hide its UI.
  241. $$ENDIF //VERBOSE
  242. if (m_pAutoProxy != NULL)
  243. {
  244. ShowWindow(SW_HIDE);
  245. return FALSE;
  246. }
  247. return TRUE;
  248. }
  249. $$ENDIF //AUTOMATION