MobileDlg.h 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453
  1. // MainDlg.h : interface of the CMobileDlg class
  2. //
  3. /////////////////////////////////////////////////////////////////////////////
  4. #pragma once
  5. #include "mod_MobileDial.h"
  6. #include "ProgressBar.h"
  7. #define WM_TIMER_INVALID 1000
  8. #define WM_TIMER_PROCESS 1001
  9. #define WM_TIMER_CONNECT 1002
  10. #define WM_TIMER_DISCONNECT 1003
  11. #define WM_TIMER_SWITCH 1004
  12. #define WM_TIMER_PROCESS_MAX 1005
  13. #define TIMER_TIMTOUT_MAX 18000
  14. class CMobileDlg;
  15. class CWlanConfigDlg : public ATL::CAxDialogImpl<CWlanConfigDlg>
  16. {
  17. public:
  18. enum {IDD = IDD_DIALOG_MBB_CONFIG};
  19. //enum {IDD = IDD_DIALOG2};
  20. CString m_strLoginUsername;
  21. CString m_strLoginPassword;
  22. CString m_strWlanSSID;
  23. CString m_strWlanPassword;
  24. BOOL m_fHidden;
  25. CWlanConfigDlg(CMobileDlg* pDlg) : m_fHidden(false)
  26. ,m_strLoginUsername(""),m_strLoginPassword("")
  27. ,m_strWlanSSID(""),m_strWlanPassword(""),m_pDlg(pDlg)
  28. {
  29. }
  30. BEGIN_MSG_MAP(CWlanConfigDlg)
  31. MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
  32. MSG_WM_CTLCOLORSTATIC(OnCtlColorStatic)
  33. COMMAND_ID_HANDLER(IDOK_EX, OnOK)
  34. COMMAND_ID_HANDLER(IDCANCEL_EX, OnCancel)
  35. COMMAND_HANDLER(IDC_CHECK_MBB_LOGIN_PSW, BN_CLICKED, OnBnClickedCheckViewPassword)
  36. COMMAND_HANDLER(IDC_CHECK_MBB_WLAN_PSW, BN_CLICKED, OnBnClickedCheckViewPassword)
  37. COMMAND_HANDLER(IDC_CHECK_WLAN_HIDDEN, BN_CLICKED, OnBnClickedCheckViewPassword)
  38. END_MSG_MAP()
  39. LRESULT OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/);
  40. LRESULT OnOK(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
  41. {
  42. UpdateValue();
  43. EndDialog(wID);
  44. return 0;
  45. }
  46. HBRUSH OnCtlColorStatic(CDCHandle dc, CStatic wndStatic)
  47. {
  48. if (GetDlgItem(IDC_STATIC_HIDE_TIP).m_hWnd == wndStatic.m_hWnd) {
  49. dc.SetTextColor(RGB(255, 0, 0));
  50. dc.SetBkColor(RGB(195, 195, 195));
  51. return (HBRUSH)GetStockObject(LTGRAY_BRUSH);
  52. }
  53. else {
  54. SetMsgHandled(FALSE);
  55. return 0;
  56. }
  57. }
  58. BOOL HasUpdated(BOOL refresh = TRUE);
  59. LRESULT OnCancel(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
  60. {
  61. EndDialog(wID);
  62. return 0;
  63. }
  64. LRESULT OnBnClickedCheckViewPassword(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& /*bHandled*/)
  65. {
  66. if(wID == IDC_CHECK_WLAN_HIDDEN) {
  67. CButton btnCheck = GetDlgItem(IDC_CHECK_WLAN_HIDDEN);
  68. if(btnCheck.GetCheck() == 0) {
  69. GetDlgItem(IDC_STATIC_HIDE_TIP).ShowWindow(SW_SHOW);
  70. } else {
  71. GetDlgItem(IDC_STATIC_HIDE_TIP).ShowWindow(SW_HIDE);
  72. }
  73. return 0;
  74. }
  75. if(wID != IDC_CHECK_MBB_LOGIN_PSW && wID != IDC_CHECK_MBB_WLAN_PSW) {
  76. return 0;
  77. }
  78. CEdit edit = (CEdit)this->GetDlgItem(wID == IDC_CHECK_MBB_LOGIN_PSW ? IDC_EDIT_MBB_LOGIN_PSW : IDC_EDIT_MBB_WLAN_PSW);
  79. if(IsDlgButtonChecked(wID)) {
  80. edit.SetPasswordChar(0);
  81. } else {
  82. edit.SetPasswordChar('*');
  83. }
  84. edit.RedrawWindow();
  85. return 0;
  86. }
  87. private:
  88. void UpdateValue() {
  89. int nLen = 0;
  90. {
  91. CEdit edit = GetDlgItem(IDC_EDIT_MBB_LOGIN_USERNAME);
  92. nLen = edit.GetWindowTextLength();
  93. edit.GetWindowText(m_strLoginUsername.GetBuffer(nLen), nLen + 1);
  94. m_strLoginUsername.ReleaseBuffer();
  95. }
  96. {
  97. CEdit edit = GetDlgItem(IDC_EDIT_MBB_LOGIN_PSW);
  98. nLen = edit.GetWindowTextLength();
  99. edit.GetWindowText(m_strLoginPassword.GetBuffer(nLen), nLen + 1);
  100. m_strLoginPassword.ReleaseBuffer();
  101. }
  102. {
  103. CEdit edit = GetDlgItem(IDC_EDIT_MBB_WLAN_SSID);
  104. nLen = edit.GetWindowTextLength();
  105. edit.GetWindowText(m_strWlanSSID.GetBuffer(nLen), nLen + 1);
  106. m_strWlanSSID.ReleaseBuffer();
  107. }
  108. {
  109. CEdit edit = GetDlgItem(IDC_EDIT_MBB_WLAN_PSW);
  110. nLen = edit.GetWindowTextLength();
  111. edit.GetWindowText(m_strWlanPassword.GetBuffer(nLen), nLen + 1);
  112. m_strWlanPassword.ReleaseBuffer();
  113. }
  114. CButton btnCheck = GetDlgItem(IDC_CHECK_WLAN_HIDDEN);
  115. m_fHidden = (btnCheck.GetCheck() != 0);
  116. }
  117. CMobileDlg* m_pDlg;
  118. };
  119. class CMobileDlg : public ATL::CAxDialogImpl<CMobileDlg>, public CWinDataExchange<CMobileDlg>
  120. {
  121. public:
  122. enum { IDD = IDD_MAINDLG };
  123. CMobileDlg(CMobileDialEntity* pEntity); // standard constructor
  124. ~CMobileDlg();
  125. BEGIN_DDX_MAP(CMobileDlg)
  126. //DDX_CONTROL_HANDLE(IDC_EDIT_USER, m_edtUser)
  127. DDX_TEXT(IDC_EDIT_USER, m_strUserName)
  128. //DDX_CONTROL_HANDLE(IDC_EDIT_PASSWORD, m_edtPassword)
  129. DDX_TEXT(IDC_EDIT_PASSWORD, m_strPassword)
  130. //DDX_TEXT(IDC_EDIT_PROFILE, m_strProfileDesc)
  131. DDX_TEXT(IDC_EDIT_PHONENUM, m_strPhoneNum)
  132. DDX_CONTROL_HANDLE(IDC_EDIT_APN, m_edtAPN)
  133. DDX_CONTROL_HANDLE(IDC_BUTTON_CONNECT, m_btnConnect)
  134. DDX_CONTROL_HANDLE(IDC_BUTTON_EXPAND, m_btnExpand)
  135. DDX_CONTROL_HANDLE(IDC_BUTTON_CLEAR, m_btnClear)
  136. DDX_CONTROL_HANDLE(IDC_CHECK_APN_APPLY, m_btnApply)
  137. DDX_CONTROL_HANDLE(IDC_CHECK_MNTBYRVC, m_btnAutoManage)
  138. DDX_CONTROL_HANDLE(IDC_COMBO_PROFILES, m_comboProfiles)
  139. DDX_CONTROL_HANDLE(IDC_COMBO_GTYPE, m_comboCntType)
  140. DDX_CONTROL_HANDLE(IDC_COMBO_CON_MODE, m_comboModeType)
  141. DDX_CONTROL_HANDLE(IDC_COMBO_CON_IPTYPE, m_comboIPType)
  142. DDX_CONTROL_HANDLE(IDC_COMBO_PONT_TYPE, m_comboPointType)
  143. DDX_CONTROL_HANDLE(IDC_COMBO_CON_BAND, m_comboBandType)
  144. END_DDX_MAP()
  145. BEGIN_MSG_MAP(CMobileDlg)
  146. MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
  147. COMMAND_ID_HANDLER(IDOK, OnOK)
  148. COMMAND_ID_HANDLER(IDCANCEL, OnCancel)
  149. COMMAND_ID_HANDLER(IDC_BUTTON_QUIT, OnCancel)
  150. COMMAND_ID_HANDLER(IDC_BUTTON_MBB_CONFIG, OnWlanConfigOpen)
  151. COMMAND_HANDLER(IDC_BUTTON_CONNECT, BN_CLICKED, OnConnect)
  152. MSG_WM_CTLCOLORSTATIC(OnCtlColorStatic)
  153. MESSAGE_HANDLER_EX(WM_ADD_PROFILE_RESULT, OnProfileResult)
  154. MESSAGE_HANDLER_EX(WM_UPDATE_PROFILE_RESULT, OnProfileResult)
  155. MESSAGE_HANDLER_EX(WM_DELETE_PROFILE_RESULT, OnProfileResult)
  156. MESSAGE_HANDLER_EX(WM_DIAL_RESULT, OnConnectResult)
  157. MESSAGE_HANDLER_EX(WM_DIAL_DISCONNECT, OnDisConnectResult)
  158. MESSAGE_HANDLER_EX(WM_SIGNAL_CHANGE, OnSignalChanged)
  159. MESSAGE_HANDLER_EX(WM_DONGLE_CHANGE, OnDeviceChanged)
  160. MESSAGE_HANDLER_EX(WM_FATALMESSAGE_CHANGE, OnFatalMsgChanged)
  161. MESSAGE_HANDLER_EX(WM_CONNECT_WLAN_RESULT, OnWlanConnectResult)
  162. MESSAGE_HANDLER(WM_TIMER, OnCustomTimer)
  163. COMMAND_HANDLER(IDC_BUTTON_APN_STORE, BN_CLICKED, OnBnClickedButtonApnStore)
  164. COMMAND_HANDLER(IDC_COMBO_DONGLE, CBN_SELCHANGE, OnCbnSelchangeComboDongle)
  165. COMMAND_HANDLER(IDC_BUTTON_EXPAND, BN_CLICKED, OnBnClickedButtonExpand)
  166. COMMAND_HANDLER(IDC_CHECK_MNTBYRVC, BN_CLICKED, OnBnClickedCheckMntbyrvc)
  167. COMMAND_HANDLER(IDC_BUTTON_DROPUP, BN_CLICKED, OnBnClickedButtonDropup)
  168. COMMAND_HANDLER(IDC_BUTTON_CLEAR, BN_CLICKED, OnBnClickedButtonClear)
  169. COMMAND_HANDLER(IDC_BUTTON_DEFAULT_CONNECT, BN_CLICKED, OnBnClickedButtonDefaultConnect)
  170. COMMAND_HANDLER(IDC_COMBO_PROFILES, CBN_SELCHANGE, OnCbnSelchangeComboProfiles)
  171. COMMAND_HANDLER(IDC_BUTTON_DELETE, BN_CLICKED, OnBnClickedButtonDelete)
  172. COMMAND_HANDLER(IDC_COMBO_GTYPE, CBN_SELCHANGE, OnCbnSelchangeComboGtype)
  173. COMMAND_HANDLER(IDC_CHECK_VIEW_PASSWORD, BN_CLICKED, OnBnClickedCheckViewPassword)
  174. //ALT_MSG_MAP(1)
  175. //MSG_WM_SETFOCUS(OnSetFocus)
  176. //MSG_WM_KILLFOCUS(OnKillFocus)
  177. COMMAND_HANDLER(IDC_EDIT_PROFILE, EN_SETFOCUS, OnEnSetfocusEdit)
  178. COMMAND_HANDLER(IDC_EDIT_PROFILE, EN_KILLFOCUS, OnEnKillfocusEdit)
  179. COMMAND_HANDLER(IDC_EDIT_APN, EN_SETFOCUS, OnEnSetfocusEdit)
  180. COMMAND_HANDLER(IDC_EDIT_APN, EN_KILLFOCUS, OnEnKillfocusEdit)
  181. COMMAND_HANDLER(IDC_EDIT_USER, EN_SETFOCUS, OnEnSetfocusEdit)
  182. COMMAND_HANDLER(IDC_EDIT_USER, EN_KILLFOCUS, OnEnKillfocusEdit)
  183. COMMAND_HANDLER(IDC_EDIT_PASSWORD, EN_SETFOCUS, OnEnSetfocusEdit)
  184. COMMAND_HANDLER(IDC_EDIT_PASSWORD, EN_KILLFOCUS, OnEnKillfocusEdit)
  185. COMMAND_HANDLER(IDC_EDIT_PHONENUM, EN_SETFOCUS, OnEnSetfocusEdit)
  186. COMMAND_HANDLER(IDC_EDIT_PHONENUM, EN_KILLFOCUS, OnEnKillfocusEdit)
  187. COMMAND_RANGE_HANDLER(IDC_RADIO_3G, IDC_RADIO_WEB, OnSelAdvancedChange)
  188. COMMAND_RANGE_HANDLER(IDC_RADIO_MBB_WIRE, IDC_RADIO_MBB_WLAN, OnSelMBBChange)
  189. COMMAND_HANDLER(IDC_STATIC_TXT_WARN, BN_SETFOCUS, OnBnSetfocusRadioMbbWlan)
  190. COMMAND_HANDLER(IDC_STATIC_TXT_WARN, BN_KILLFOCUS, OnBnKillfocusRadioMbbWlan)
  191. COMMAND_HANDLER(IDC_STATIC_TXT_WARN, BN_CLICKED, OnBnClickedRadioMbbWlan)
  192. COMMAND_HANDLER(IDC_STATIC_TXT_WARN, BN_DOUBLECLICKED, OnBnDoubleclickedRadioMbbWlan)
  193. END_MSG_MAP()
  194. // Handler prototypes (uncomment arguments if needed):
  195. // LRESULT MessageHandler(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
  196. // LRESULT CommandHandler(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
  197. // LRESULT NotifyHandler(int /*idCtrl*/, LPNMHDR /*pnmh*/, BOOL& /*bHandled*/)
  198. LRESULT OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/);
  199. LRESULT OnOK(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
  200. LRESULT OnCancel(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
  201. //拨号连接与断开连接/切换卡槽
  202. LRESULT OnConnect(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
  203. HBRUSH OnCtlColorStatic(CDCHandle dc, CStatic wndStatic);
  204. void SetDlgSizeToSmall(void);
  205. void SetDlgSizeToLarge(void);
  206. void HideRedundance(void);
  207. void MoveDlgItems(BOOL bShow = TRUE);
  208. void OnSetFocus(HWND hWnd);
  209. void OnKillFocus(HWND hWnd);
  210. LRESULT OnDisConnectResult(UINT uMsg, WPARAM wParam, LPARAM lParam);
  211. LRESULT OnSignalChanged(UINT uMsg, WPARAM wParam, LPARAM lParam);
  212. LRESULT OnDeviceChanged(UINT uMsg, WPARAM wParam, LPARAM lParam);
  213. LRESULT OnFatalMsgChanged(UINT uMsg, WPARAM wParam, LPARAM lParam);
  214. LRESULT OnWlanConnectResult(UINT uMsg, WPARAM wParam, LPARAM lParam);
  215. LRESULT OnProfileResult(UINT uMsg, WPARAM wParam, LPARAM lParam);
  216. LRESULT OnConnectResult(UINT uMsg, WPARAM wParam, LPARAM lParam);
  217. LRESULT OnCustomTimer(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/);
  218. LRESULT OnSelAdvancedChange(WORD wNotifyCode, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
  219. LRESULT OnSelMBBChange(WORD wNotifyCode, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
  220. LRESULT OnWlanConfigOpen(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
  221. //CEdit m_edtUser;
  222. //CEdit m_edtPassword;
  223. CEdit m_edtAPN;
  224. CString m_strProfileDesc;
  225. CString m_strUserName;
  226. CString m_strPassword;
  227. CString m_strPhoneNum;
  228. CStatic m_stcSignal;
  229. CButton m_btnConnect;
  230. CButton m_btnExpand;
  231. CButton m_btnApply;
  232. CButton m_btnAutoManage;
  233. CButton m_btnClear;
  234. CComboBox m_comboBandType;
  235. CComboBox m_comboProfiles;
  236. //登录类型
  237. CComboBox m_comboModeType;
  238. // IP类型
  239. CComboBox m_comboIPType;
  240. // 接入点类型
  241. CComboBox m_comboPointType;
  242. // 拨号方式
  243. CComboBox m_comboCntType;
  244. CComboBox m_comboDongles;
  245. CProgressBar m_ProgressBar;
  246. //HICON m_hIconNA;
  247. //HICON m_hIconEDEG1;
  248. //HICON m_hIconEDEG2;
  249. //HICON m_hIconEDEG3;
  250. //HICON m_hIconEDEG4;
  251. //HICON m_hIconEDEG5;
  252. bool m_bConnected;
  253. int m_nWhoConnected;
  254. int m_nGenType;
  255. int m_nReversedType;
  256. //ATL::CContainedWindow m_cw1;
  257. //ATL::CContainedWindow m_cw2;
  258. //ATL::CContainedWindow m_cw3;
  259. //ATL::CContainedWindow m_cw4;
  260. //ATL::CContainedWindow m_cw5;
  261. //ATL::CContainedWindow m_cw6;
  262. MBBParams m_sReverseMBBParam;
  263. MBBParams m_sMBBParam;
  264. static bool OpenVirtualKeyboard();
  265. static bool CloseVirtualKeyboard();
  266. private:
  267. void InitializeControls();
  268. void UpdateDongles();
  269. void EnableControls(BOOL bEnable = TRUE);
  270. inline void EnterProgressBar(DWORD dwTimeout = INFINITE, DWORD nTimerID = WM_TIMER_PROCESS);
  271. inline void LeaveProgressBar(DWORD nTimerID = WM_TIMER_PROCESS);
  272. void TriggerConnectState(int cntState);
  273. void ShowProfileCreateCtrl(BOOL bShow = TRUE);
  274. inline void ClearProfileEdit();
  275. void _ClearProfileTxt();
  276. int GetInterfaceIdInCombo(CSimpleStringA& strCurDongle, bool bSlient = true);
  277. BOOL HasUpdatedMBBParam();
  278. protected:
  279. CMobileDialEntity* m_pEntity;
  280. BOOL m_localSIM;
  281. USHORT m_dongleType;
  282. USHORT m_wlanClickedTimes;
  283. public:
  284. LRESULT OnBnClickedButtonApnStore(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
  285. //选择网卡时会调用
  286. LRESULT OnCbnSelchangeComboDongle(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
  287. //点击展开配置时会调用
  288. LRESULT OnBnClickedButtonExpand(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
  289. LRESULT OnBnClickedCheckMntbyrvc(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
  290. LRESULT OnBnClickedButtonDropup(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
  291. //新建或清除配置内容时会调用
  292. LRESULT OnBnClickedButtonClear(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
  293. LRESULT OnBnClickedButtonDefaultConnect(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
  294. //选择配置文件条目时会调用
  295. LRESULT OnCbnSelchangeComboProfiles(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
  296. LRESULT OnBnClickedButtonDelete(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
  297. //绑定到IDC_COMBO_GTYPE下拉选框
  298. LRESULT OnCbnSelchangeComboGtype(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
  299. LRESULT OnBnClickedCheckViewPassword(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
  300. LRESULT OnEnSetfocusEdit(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
  301. LRESULT OnEnKillfocusEdit(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
  302. LRESULT OnBnSetfocusRadioMbbWlan(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
  303. LRESULT OnBnKillfocusRadioMbbWlan(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
  304. LRESULT OnBnClickedRadioMbbWlan(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
  305. LRESULT OnBnDoubleclickedRadioMbbWlan(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
  306. };
  307. class CMIFIPswDlg : public ATL::CAxDialogImpl<CMIFIPswDlg>
  308. {
  309. public:
  310. enum {IDD = IDD_DIALOG_MFPSW_INPUT};
  311. CString m_strLoginPassword;
  312. CMIFIPswDlg(): m_strLoginPassword("")
  313. {}
  314. ~CMIFIPswDlg() {}
  315. BEGIN_MSG_MAP(CMIFIPswDlg)
  316. MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
  317. MSG_WM_CTLCOLORSTATIC(OnCtlColorStatic)
  318. COMMAND_ID_HANDLER(IDOK_PLUS, OnOK)
  319. COMMAND_ID_HANDLER(IDCANCEL_PLUS, OnCancel)
  320. COMMAND_HANDLER(IDC_CHECK_MLOGIN_VISUABLE, BN_CLICKED, OnBnClickedCheckViewPassword)
  321. COMMAND_HANDLER(IDC_EDIT_MLOGIN_PASSWORD, EN_SETFOCUS, OnEnSetfocusEdit)
  322. COMMAND_HANDLER(IDC_EDIT_MLOGIN_PASSWORD, EN_KILLFOCUS, OnEnKillfocusEdit)
  323. END_MSG_MAP()
  324. LRESULT OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
  325. {
  326. Dbg("Enter OnInitDialog");
  327. int cx = GetSystemMetrics(SM_CXSCREEN);
  328. RECT rcDlg;
  329. ::GetWindowRect(m_hWnd, &rcDlg);
  330. ::SetWindowPos(m_hWnd, NULL, (cx + rcDlg.left - rcDlg.right)/2, 40, -1, -1, SWP_NOSIZE | SWP_NOZORDER | SWP_NOACTIVATE);
  331. return TRUE;
  332. }
  333. LRESULT OnOK(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
  334. {
  335. CMobileDlg::CloseVirtualKeyboard();
  336. UpdateValue();
  337. EndDialog(1);
  338. return 0;
  339. }
  340. HBRUSH OnCtlColorStatic(CDCHandle dc, CStatic wndStatic)
  341. {
  342. if (GetDlgItem(IDC_STATIC_MLOGIN_TIP).m_hWnd == wndStatic.m_hWnd) {
  343. dc.SetTextColor(RGB(255, 0, 0));
  344. dc.SetBkColor(RGB(195, 195, 195));
  345. return (HBRUSH)GetStockObject(LTGRAY_BRUSH);
  346. }
  347. else {
  348. SetMsgHandled(FALSE);
  349. return 0;
  350. }
  351. }
  352. LRESULT OnEnSetfocusEdit(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& bHandled)
  353. {
  354. CMobileDlg::OpenVirtualKeyboard();
  355. return 0;
  356. }
  357. LRESULT OnEnKillfocusEdit(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& bHandled)
  358. {
  359. return 0;
  360. }
  361. LRESULT OnCancel(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
  362. {
  363. CMobileDlg::CloseVirtualKeyboard();
  364. EndDialog(0);
  365. return -1;
  366. }
  367. LRESULT OnBnClickedCheckViewPassword(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& /*bHandled*/)
  368. {
  369. CEdit edit = (CEdit)this->GetDlgItem(IDC_EDIT_MLOGIN_PASSWORD);
  370. if(IsDlgButtonChecked(wID)) {
  371. edit.SetPasswordChar(0);
  372. } else {
  373. edit.SetPasswordChar('*');
  374. }
  375. edit.RedrawWindow();
  376. return 0;
  377. }
  378. private:
  379. void UpdateValue()
  380. {
  381. CEdit edit = GetDlgItem(IDC_EDIT_MLOGIN_PASSWORD);
  382. int nLen = edit.GetWindowTextLength();
  383. edit.GetWindowText(m_strLoginPassword.GetBuffer(nLen), nLen + 1);
  384. m_strLoginPassword.ReleaseBuffer();
  385. }
  386. };