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

Windows编程

开发平台:

Visual C++

  1. // dlgtempDlg.cpp : implementation file
  2. //
  3. // This is a part of the Microsoft Foundation Classes C++ library.
  4. // Copyright (C) 1992-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 "dlgtemp.h"
  14. #include "setupdlg.h"
  15. #ifdef _DEBUG
  16. #define new DEBUG_NEW
  17. #undef THIS_FILE
  18. static char THIS_FILE[] = __FILE__;
  19. #endif
  20. /////////////////////////////////////////////////////////////////////////////
  21. // CAboutDlg dialog used for App About
  22. class CAboutDlg : public CDialog
  23. {
  24. public:
  25. CAboutDlg();
  26. // Dialog Data
  27. //{{AFX_DATA(CAboutDlg)
  28. enum { IDD = IDD_ABOUTBOX };
  29. //}}AFX_DATA
  30. // ClassWizard generated virtual function overrides
  31. //{{AFX_VIRTUAL(CAboutDlg)
  32. protected:
  33. virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
  34. //}}AFX_VIRTUAL
  35. // Implementation
  36. protected:
  37. //{{AFX_MSG(CAboutDlg)
  38. //}}AFX_MSG
  39. DECLARE_MESSAGE_MAP()
  40. };
  41. CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
  42. {
  43. //{{AFX_DATA_INIT(CAboutDlg)
  44. //}}AFX_DATA_INIT
  45. }
  46. void CAboutDlg::DoDataExchange(CDataExchange* pDX)
  47. {
  48. CDialog::DoDataExchange(pDX);
  49. //{{AFX_DATA_MAP(CAboutDlg)
  50. //}}AFX_DATA_MAP
  51. }
  52. BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
  53. //{{AFX_MSG_MAP(CAboutDlg)
  54. // No message handlers
  55. //}}AFX_MSG_MAP
  56. END_MESSAGE_MAP()
  57. /////////////////////////////////////////////////////////////////////////////
  58. // CDlgtempDlg dialog
  59. CDlgtempDlg::CDlgtempDlg(CWnd* pParent /*=NULL*/)
  60. : CDialog(CDlgtempDlg::IDD, pParent)
  61. {
  62. m_nActiveItem = -1;
  63. //{{AFX_DATA_INIT(CDlgtempDlg)
  64. m_strCaption = _T("");
  65. m_x = 0;
  66. m_y = 0;
  67. m_nWidth = 0;
  68. m_nHeight = 0;
  69. m_nItem = -1;
  70. m_strSelectedItem = _T("");
  71. //}}AFX_DATA_INIT
  72. // Note that LoadIcon does not require a subsequent DestroyIcon in Win32
  73. m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
  74. }
  75. void CDlgtempDlg::DoDataExchange(CDataExchange* pDX)
  76. {
  77. CDialog::DoDataExchange(pDX);
  78. //{{AFX_DATA_MAP(CDlgtempDlg)
  79. DDX_Text(pDX, IDC_CAPTION, m_strCaption);
  80. DDX_Text(pDX, IDC_XPOS, m_x);
  81. DDV_MinMaxUInt(pDX, m_x, 0, 300);
  82. DDX_Text(pDX, IDC_YPOS, m_y);
  83. DDV_MinMaxUInt(pDX, m_y, 0, 200);
  84. DDX_Text(pDX, IDC_WIDTH, m_nWidth);
  85. DDX_Text(pDX, IDC_HEIGHT, m_nHeight);
  86. DDX_Radio(pDX, IDC_BUTTON, m_nItem);
  87. DDX_Text(pDX, IDC_SELECTEDITEM, m_strSelectedItem);
  88. //}}AFX_DATA_MAP
  89. }
  90. BEGIN_MESSAGE_MAP(CDlgtempDlg, CDialog)
  91. //{{AFX_MSG_MAP(CDlgtempDlg)
  92. ON_WM_SYSCOMMAND()
  93. ON_WM_PAINT()
  94. ON_BN_CLICKED(IDC_DEMOIT, OnDemoIt)
  95. ON_BN_CLICKED(IDC_BUTTON, OnButtonInformation)
  96. ON_BN_CLICKED(IDC_STATICTEXT, OnStaticTextInformation)
  97. ON_BN_CLICKED(IDC_EDITCONTROL, OnEditControlInformation)
  98. //}}AFX_MSG_MAP
  99. END_MESSAGE_MAP()
  100. /////////////////////////////////////////////////////////////////////////////
  101. // CDlgtempDlg message handlers
  102. BOOL CDlgtempDlg::OnInitDialog()
  103. {
  104. CDialog::OnInitDialog();
  105. // Add "About..." menu item to system menu.
  106. // IDM_ABOUTBOX must be in the system command range.
  107. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
  108. ASSERT(IDM_ABOUTBOX < 0xF000);
  109. CMenu* pSysMenu = GetSystemMenu(FALSE);
  110. CString strAboutMenu;
  111. strAboutMenu.LoadString(IDS_ABOUTBOX);
  112. if (!strAboutMenu.IsEmpty())
  113. {
  114. pSysMenu->AppendMenu(MF_SEPARATOR);
  115. pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
  116. }
  117. // Set the icon for this dialog.  The framework does this automatically
  118. //  when the application's main window is not a dialog
  119. SetIcon(m_hIcon, TRUE);         // Set big icon
  120. SetIcon(m_hIcon, FALSE);        // Set small icon
  121. m_nItem = 0;        // select the BUTTON option
  122. OnButtonInformation();  // fill the edit fields with corresponding values
  123. return TRUE;  // return TRUE  unless you set the focus to a control
  124. }
  125. void CDlgtempDlg::OnSysCommand(UINT nID, LPARAM lParam)
  126. {
  127. if ((nID & 0xFFF0) == IDM_ABOUTBOX)
  128. {
  129. CAboutDlg dlgAbout;
  130. dlgAbout.DoModal();
  131. }
  132. else
  133. {
  134. CDialog::OnSysCommand(nID, lParam);
  135. }
  136. }
  137. // If you add a minimize button to your dialog, you will need the code below
  138. //  to draw the icon.  For MFC applications using the document/view model,
  139. //  this is automatically done for you by the framework.
  140. void CDlgtempDlg::OnPaint()
  141. {
  142. if (IsIconic())
  143. {
  144. CPaintDC dc(this); // device context for painting
  145. SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
  146. // Center icon in client rectangle
  147. int cxIcon = GetSystemMetrics(SM_CXICON);
  148. int cyIcon = GetSystemMetrics(SM_CYICON);
  149. CRect rect;
  150. GetClientRect(&rect);
  151. int x = (rect.Width() - cxIcon + 1) / 2;
  152. int y = (rect.Height() - cyIcon + 1) / 2;
  153. // Draw the icon
  154. dc.DrawIcon(x, y, m_hIcon);
  155. }
  156. else
  157. {
  158. CDialog::OnPaint();
  159. }
  160. }
  161. void CDlgtempDlg::OnDemoIt()
  162. {
  163. InfoToDialogHelper(m_nActiveItem, NULL);
  164. m_dlgTemplate.DemoIt();
  165. }
  166. void CDlgtempDlg::OnButtonInformation()
  167. {
  168. // take the information about the button and send it to the edit
  169. // controls in the dialog.
  170. InfoToDialogHelper(IBUTTON, _T("BUTTON"));
  171. }
  172. void CDlgtempDlg::OnStaticTextInformation()
  173. {
  174. InfoToDialogHelper(ISTATICTEXT, _T("STATIC TEXT"));
  175. }
  176. void CDlgtempDlg::OnEditControlInformation()
  177. {
  178. InfoToDialogHelper(IEDITCONTROL, _T("EDIT CONTROL"));
  179. }
  180. void CDlgtempDlg::InfoToDialogHelper(int nItem, LPCTSTR lpszSelection)
  181. {
  182. // first bring data from edit field and store in proper item
  183. if (m_nActiveItem != -1)
  184. {
  185. UpdateData(TRUE/*bSaveAndValidate*/);
  186. m_dlgTemplate.m_rgDlgItem[m_nActiveItem].m_dlgItemTemplate.x = m_x;
  187. m_dlgTemplate.m_rgDlgItem[m_nActiveItem].m_dlgItemTemplate.y = m_y;
  188. m_dlgTemplate.m_rgDlgItem[m_nActiveItem].m_dlgItemTemplate.cx = m_nWidth;
  189. m_dlgTemplate.m_rgDlgItem[m_nActiveItem].m_dlgItemTemplate.cy = m_nHeight;
  190. m_dlgTemplate.m_rgDlgItem[m_nActiveItem].m_strCaption = m_strCaption;
  191. }
  192. // now bring data from item and send to edit fields
  193. if (m_nActiveItem != nItem)
  194. {
  195. m_x = m_dlgTemplate.m_rgDlgItem[nItem].m_dlgItemTemplate.x;
  196. m_y = m_dlgTemplate.m_rgDlgItem[nItem].m_dlgItemTemplate.y;
  197. m_nWidth = m_dlgTemplate.m_rgDlgItem[nItem].m_dlgItemTemplate.cx;
  198. m_nHeight = m_dlgTemplate.m_rgDlgItem[nItem].m_dlgItemTemplate.cy;
  199. m_strCaption = m_dlgTemplate.m_rgDlgItem[nItem].m_strCaption;
  200. ASSERT(lpszSelection != NULL);
  201. m_strSelectedItem = lpszSelection;
  202. m_nItem = nItem;
  203. m_nActiveItem = nItem;
  204. UpdateData(FALSE/*bSaveAndValidate*/);
  205. }
  206. CWnd*   pwnd = GetDlgItem(IDC_CAPTION);
  207. pwnd->EnableWindow(nItem != IEDITCONTROL);
  208. }