Ex_RegisterDlg.cpp
Upload User: huayioo_cn
Upload Date: 2014-04-27
Package Size: 3356k
Code Size: 8k
Category:

.net

Development Platform:

Visual C++

  1. // Ex_RegisterDlg.cpp : 实现文件
  2. //
  3. #include "stdafx.h"
  4. #include "Ex_Register.h"
  5. #include "Ex_RegisterDlg.h"
  6. #ifdef _DEBUG
  7. #define new DEBUG_NEW
  8. #endif
  9. // 用于应用程序“关于”菜单项的 CAboutDlg 对话框
  10. class CAboutDlg : public CDialog
  11. {
  12. public:
  13. CAboutDlg();
  14. // 对话框数据
  15. enum { IDD = IDD_ABOUTBOX };
  16. protected:
  17. virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持
  18. // 实现
  19. protected:
  20. DECLARE_MESSAGE_MAP()
  21. };
  22. CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
  23. {
  24. }
  25. void CAboutDlg::DoDataExchange(CDataExchange* pDX)
  26. {
  27. CDialog::DoDataExchange(pDX);
  28. }
  29. BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
  30. END_MESSAGE_MAP()
  31. // CEx_RegisterDlg 对话框
  32. BEGIN_DHTML_URL_EVENT_MAP(CEx_RegisterDlg)
  33. BEGIN_EMBED_DHTML_EVENT_MAP(CEx_RegisterDlg, Page1)
  34. DHTML_EVENT_ONCLICK(_T("ButtonCancel"), OnButtonCancel)
  35. DHTML_EVENT_ONCLICK(_T("RadioMan"), OnRadioMan)
  36. DHTML_EVENT_ONCLICK(_T("RadioWoman"), OnRadioWoman)
  37. DHTML_EVENT_ONCLICK(_T("Next"), OnPage1Next)
  38. END_EMBED_DHTML_EVENT_MAP()
  39. BEGIN_EMBED_DHTML_EVENT_MAP(CEx_RegisterDlg, Page2)
  40. DHTML_EVENT_ONCLICK(_T("Back"), OnPage2Back)
  41. DHTML_EVENT_ONCLICK(_T("Next"), OnPage2Next)
  42. END_EMBED_DHTML_EVENT_MAP()
  43. BEGIN_EMBED_DHTML_EVENT_MAP(CEx_RegisterDlg, Page3)
  44. DHTML_EVENT_ONCLICK(_T("Back"), OnPage3Back)
  45. DHTML_EVENT_ONCLICK(_T("Finish"), OnPage3Finish)
  46. END_EMBED_DHTML_EVENT_MAP()
  47. BEGIN_URL_ENTRIES(CEx_RegisterDlg)
  48. URL_EVENT_ENTRY(CEx_RegisterDlg, _T("131"), Page1)
  49. URL_EVENT_ENTRY(CEx_RegisterDlg, _T("132"), Page2)
  50. URL_EVENT_ENTRY(CEx_RegisterDlg, _T("133"), Page3)
  51. // 注: IDR_HTML_EX_REGISTER_DIALOG = 131, 
  52. // IDR_HTML_INFOMATION = 132, IDR_HTML_FINISH = 133
  53. END_URL_ENTRIES()
  54. END_DHTML_URL_EVENT_MAP(CEx_RegisterDlg)
  55. CEx_RegisterDlg::CEx_RegisterDlg(CWnd* pParent /*=NULL*/)
  56. : CMultiPageDHtmlDialog(CEx_RegisterDlg::IDD, CEx_RegisterDlg::IDH, pParent)
  57. {
  58. m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
  59. }
  60. void CEx_RegisterDlg::DoDataExchange(CDataExchange* pDX)
  61. {
  62. CMultiPageDHtmlDialog::DoDataExchange(pDX);
  63. DDX_DHtml_ElementText(pDX,_T("TextName"),DISPID_A_VALUE ,m_strName);
  64. DDX_DHtml_SelectString(pDX,_T("SelectClass"),m_strClass);
  65. DDX_DHtml_SelectString(pDX,_T("SelectNum"),m_strNum);
  66. DDX_DHtml_ElementText(pDX,_T("TextEMail"),DISPID_A_VALUE ,m_strEMail);
  67. DDX_DHtml_ElementText(pDX,_T("TextNameInfo"),DISPID_A_VALUE ,m_strNameInfo);
  68. DDX_DHtml_ElementText(pDX,_T("TextEMailInfo"),DISPID_A_VALUE ,m_strEMailInfo);
  69. }
  70. BEGIN_MESSAGE_MAP(CEx_RegisterDlg, CMultiPageDHtmlDialog)
  71. ON_WM_SYSCOMMAND()
  72. //}}AFX_MSG_MAP
  73. END_MESSAGE_MAP()
  74. // CEx_RegisterDlg 消息处理程序
  75. BOOL CEx_RegisterDlg::OnInitDialog()
  76. {
  77. CMultiPageDHtmlDialog::OnInitDialog();
  78. // 将“关于...”菜单项添加到系统菜单中。
  79. // IDM_ABOUTBOX 必须在系统命令范围内。
  80. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
  81. ASSERT(IDM_ABOUTBOX < 0xF000);
  82. CMenu* pSysMenu = GetSystemMenu(FALSE);
  83. if (pSysMenu != NULL)
  84. {
  85. CString strAboutMenu;
  86. strAboutMenu.LoadString(IDS_ABOUTBOX);
  87. if (!strAboutMenu.IsEmpty())
  88. {
  89. pSysMenu->AppendMenu(MF_SEPARATOR);
  90. pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
  91. }
  92. }
  93. // 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
  94. //  执行此操作
  95. SetIcon(m_hIcon, TRUE); // 设置大图标
  96. SetIcon(m_hIcon, FALSE); // 设置小图标
  97. // TODO:在此添加额外的初始化代码
  98. m_strName.Empty();
  99. m_strEMail.Empty();
  100. m_nMan = BST_CHECKED;
  101. return TRUE;  // 除非设置了控件的焦点,否则返回 TRUE
  102. }
  103. void CEx_RegisterDlg::OnSysCommand(UINT nID, LPARAM lParam)
  104. {
  105. if ((nID & 0xFFF0) == IDM_ABOUTBOX)
  106. {
  107. CAboutDlg dlgAbout;
  108. dlgAbout.DoModal();
  109. }
  110. else
  111. {
  112. CMultiPageDHtmlDialog::OnSysCommand(nID, lParam);
  113. }
  114. }
  115. // 如果向对话框添加最小化按钮,则需要下面的代码
  116. //  来绘制该图标。对于使用文档/视图模型的 MFC 应用程序,
  117. //  这将由框架自动完成。
  118. void CEx_RegisterDlg::OnPaint() 
  119. {
  120. if (IsIconic())
  121. {
  122. CPaintDC dc(this); // 用于绘制的设备上下文
  123. SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
  124. // 使图标在工作矩形中居中
  125. int cxIcon = GetSystemMetrics(SM_CXICON);
  126. int cyIcon = GetSystemMetrics(SM_CYICON);
  127. CRect rect;
  128. GetClientRect(&rect);
  129. int x = (rect.Width() - cxIcon + 1) / 2;
  130. int y = (rect.Height() - cyIcon + 1) / 2;
  131. // 绘制图标
  132. dc.DrawIcon(x, y, m_hIcon);
  133. }
  134. else
  135. {
  136. CMultiPageDHtmlDialog::OnPaint();
  137. }
  138. }
  139. //当用户拖动最小化窗口时系统调用此函数取得光标显示。
  140. HCURSOR CEx_RegisterDlg::OnQueryDragIcon()
  141. {
  142. return static_cast<HCURSOR>(m_hIcon);
  143. }
  144. HRESULT CEx_RegisterDlg::OnButtonCancel(IHTMLElement* /*pElement*/)
  145. {
  146. OnCancel();
  147. return S_OK;
  148. }
  149. void CEx_RegisterDlg::OnDocumentComplete(LPDISPATCH pDisp, LPCTSTR szUrl)
  150. {
  151. CMultiPageDHtmlDialog::OnDocumentComplete(pDisp, szUrl);
  152. // TODO:在此添加专用代码和/或调用基类
  153. CString m_strClassName,m_str[5];
  154. m_str[0] =_T("<SELECT ID="SelectClass" SIZE="1">");
  155. m_str[1] =_T("<option selected>9911班</option>");
  156. m_str[2] =_T("<option>9912班</option>");
  157. m_str[3] =_T("<option>9913班</option>");
  158. m_str[4] =_T("<option>9914班</option></SELECT>n");
  159. for (int i=0; i< 5; i++) m_strClassName += m_str[i];
  160. BSTR bstrClassName = m_strClassName.AllocSysString();
  161. SetElementHtml(_T("ClassArea"),bstrClassName);
  162. SysFreeString(bstrClassName);
  163. m_str[0] =_T("<SELECT ID="SelectNum" SIZE="1">");
  164. m_str[1] =_T("<option selected>1</option>");
  165. m_strClassName.Empty();
  166. m_strClassName = m_str[0]+ m_str[1];
  167. for (i=2; i<50; i++) {
  168. m_str[2].Format("<option>%d</option>",i);
  169. m_strClassName+=m_str[2];
  170. }
  171. m_str[4] =_T("<option>50</option></SELECT>n");
  172. m_strClassName+=m_str[4];
  173. bstrClassName = m_strClassName.AllocSysString();
  174. SetElementHtml(_T("NumArea"),bstrClassName);
  175. SysFreeString(bstrClassName);
  176. }
  177. HRESULT CEx_RegisterDlg::OnRadioMan(IHTMLElement* /*pElement*/)
  178. {
  179. m_nMan = 1;
  180. return S_OK;
  181. }
  182. HRESULT CEx_RegisterDlg::OnRadioWoman(IHTMLElement* /*pElement*/)
  183. {
  184. m_nMan = 0;
  185. return S_OK;
  186. }
  187. HRESULT CEx_RegisterDlg::OnPage1Next(IHTMLElement *pElement)
  188. {
  189. UpdateData();
  190. m_strName.Trim();
  191. m_strEMail.Trim();
  192. if ((m_strName.IsEmpty())||(m_strName=="请输入姓名")){
  193. m_strName="请输入姓名";
  194. UpdateData(FALSE);
  195. return S_OK;
  196.     }
  197. if ((m_strEMail.IsEmpty())||(m_strEMail=="请输入EMAIL")){
  198. m_strEMail="请输入EMAIL";
  199. UpdateData(FALSE);
  200. return S_OK;
  201. } else {
  202. if ((m_strEMail.Find('@')<0)||(m_strEMail.Find('.')<0)){
  203. m_strEMail="EMAIL输入错误!";
  204. UpdateData(FALSE);
  205. return S_OK;
  206. }
  207. }
  208. /* CString m_str;
  209. m_str.Format("你输入的注册信息是:n%sn%sn%sn%sn%s",m_strName,m_nMan?"男":"女",m_strClass,m_strNum,m_strEMail);
  210. MessageBox(m_str);
  211. */
  212. m_strNameInfo = m_strName;
  213. m_strEMailInfo = m_strEMail;
  214. LoadFromResource(IDR_HTML_INFOMATION);
  215. return S_OK;
  216. }
  217. HRESULT CEx_RegisterDlg::OnPage2Next(IHTMLElement *pElement)
  218. {
  219. LoadFromResource(IDR_HTML_FINISH);
  220. return S_OK;
  221. }
  222. HRESULT CEx_RegisterDlg::OnPage2Back(IHTMLElement *pElement)
  223. {
  224. LoadFromResource(IDR_HTML_EX_REGISTER_DIALOG);
  225. return S_OK;
  226. }
  227. HRESULT CEx_RegisterDlg::OnPage3Back(IHTMLElement *pElement)
  228. {
  229. LoadFromResource(IDR_HTML_INFOMATION);
  230. return S_OK;
  231. }
  232. HRESULT CEx_RegisterDlg::OnPage3Finish(IHTMLElement *pElement)
  233. {
  234. OnOK();
  235. return S_OK;
  236. }
  237. void CEx_RegisterDlg::OnNavigateComplete(LPDISPATCH pDisp, LPCTSTR szUrl)
  238. {
  239. CMultiPageDHtmlDialog::OnNavigateComplete(pDisp, szUrl);
  240. SetWindowText(_T("用户注册——共3步,这是第一步!"));
  241. CString m_str(szUrl),str;
  242. m_str.Trim();
  243. if (m_str.Right(3) == "132") {
  244. SetWindowText(_T("用户注册——共3步,这是第二步!"));
  245. str = m_nMan?"男":"女";
  246. BSTR bstr = str.AllocSysString();
  247. SetElementHtml(_T("SexAreaInfo"),bstr);
  248. SysFreeString(bstr);
  249. bstr = m_strClass.AllocSysString();
  250. SetElementHtml(_T("ClassAreaInfo"),bstr);
  251. SysFreeString(bstr);
  252. bstr = m_strNum.AllocSysString();
  253. SetElementHtml(_T("NumAreaInfo"),bstr);
  254. SysFreeString(bstr);
  255. }
  256. if (m_str.Right(3) == "133") {
  257. SetWindowText(_T("用户注册——共3步,这是最后一步!"));
  258. str = "你已经完成注册!谢谢!";
  259. BSTR bstr = str.AllocSysString();
  260. SetElementHtml(_T("TextArea"),bstr);
  261. SysFreeString(bstr);
  262. }
  263. }