CLoginWnd.cpp 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665
  1. #include "../pch/pch.h"
  2. #include "CLoginWnd.h"
  3. #include "CUpdateWnd.h"
  4. #include "CMessageboxWnd.h"
  5. #include "../tool/CFoodHandle.h"
  6. void CLoginWnd::Init()
  7. {
  8. //刷新版本号
  9. CLabelUI* version = static_cast<CLabelUI*>(m_pm.FindControl(_T("login_version")));
  10. version->SetText((L"智铺子收银系统 " + CLewaimaiString::UTF8ToUnicode(CSystem::GetVersion())).c_str());
  11. //初始化下拉框的用户名
  12. CComboUI* pCom = static_cast<CComboUI*>(m_pm.FindControl(_T("accountcombo")));
  13. std::map<string, string> users = CSetting::GetInstance()->getUsers();
  14. for (std::map<string, string>::iterator it = users.begin(); it != users.end(); it++)
  15. {
  16. std::string username = it->first;
  17. CListLabelElementUI* elem = new CListLabelElementUI();
  18. elem->SetText(CLewaimaiString::UTF8ToUnicode(username).c_str());
  19. pCom->Add(elem);
  20. }
  21. CCheckBoxUI* pAuto = static_cast<CCheckBoxUI*>(m_pm.FindControl(_T("login_auto_login")));
  22. CCheckBoxUI* pRemember = static_cast<CCheckBoxUI*>(m_pm.FindControl(_T("login_remember_password")));
  23. if (CSetting::GetInstance()->GetParam("setting_is_remember_password") == "1")
  24. {
  25. pRemember->Selected(true, false);
  26. }
  27. else
  28. {
  29. pRemember->Selected(false, false);
  30. }
  31. if (CSetting::GetInstance()->GetParam("setting_is_auto_login") == "1")
  32. {
  33. //自动登录开启了,记住密码一定要开启
  34. pAuto->Selected(true, false);
  35. pRemember->Selected(true, false);
  36. }
  37. else
  38. {
  39. pAuto->Selected(false, false);
  40. }
  41. std::string last_login_username = CSetting::GetInstance()->GetParam("last_login_username");
  42. std::string password = CSetting::GetInstance()->GetUser(last_login_username);
  43. CEditUI* pAccountEdit = static_cast<CEditUI*>(m_pm.FindControl(_T("accountedit")));
  44. CEditUI* pPasswordEdit = static_cast<CEditUI*>(m_pm.FindControl(_T("pwdedit")));
  45. pAccountEdit->SetText(CLewaimaiString::UTF8ToUnicode(last_login_username).c_str());
  46. pPasswordEdit->SetText(CLewaimaiString::UTF8ToUnicode(password).c_str());
  47. if (CSetting::GetInstance()->GetParam("setting_is_auto_login") == "1")
  48. {
  49. StartLogin();
  50. }
  51. else
  52. {
  53. CVerticalLayoutUI* pInput = static_cast<CVerticalLayoutUI*>(m_pm.FindControl(_T("login_input")));
  54. pInput->SetVisible(true);
  55. CVerticalLayoutUI* pLoading = static_cast<CVerticalLayoutUI*>(m_pm.FindControl(_T("login_loading")));
  56. pLoading->SetVisible(false);
  57. CVerticalLayoutUI* pIniting = static_cast<CVerticalLayoutUI*>(m_pm.FindControl(_T("login_init_data_ing")));
  58. pIniting->SetVisible(false);
  59. }
  60. if (m_mode == 2)
  61. {
  62. PostMessage(WM_LOGIN_AGAIN_OUT);
  63. }
  64. }
  65. void CLoginWnd::Notify(TNotifyUI& msg)
  66. {
  67. if(msg.sType == _T("click"))
  68. {
  69. if(msg.pSender->GetName() == _T("closebtn"))
  70. {
  71. PostQuitMessage(0);
  72. return;
  73. }
  74. else if(msg.pSender->GetName() == _T("loginBtn"))
  75. {
  76. StartLogin();
  77. return;
  78. }
  79. else if (msg.pSender->GetName() == _T("login_auto_login"))
  80. {
  81. CCheckBoxUI* pAuto = static_cast<CCheckBoxUI*>(m_pm.FindControl(_T("login_auto_login")));
  82. CCheckBoxUI* pRemember = static_cast<CCheckBoxUI*>(m_pm.FindControl(_T("login_remember_password")));
  83. if (!pAuto->IsSelected())
  84. {
  85. pRemember->Selected(true, false);
  86. }
  87. }
  88. else if (msg.pSender->GetName() == _T("login_remember_password"))
  89. {
  90. CCheckBoxUI* pAuto = static_cast<CCheckBoxUI*>(m_pm.FindControl(_T("login_auto_login")));
  91. CCheckBoxUI* pRemember = static_cast<CCheckBoxUI*>(m_pm.FindControl(_T("login_remember_password")));
  92. if (pRemember->IsSelected())
  93. {
  94. pAuto->Selected(false, false);
  95. }
  96. }
  97. else if (msg.pSender->GetName() == _T("guanwang"))
  98. {
  99. ShellExecute(NULL, _T("open"), _T("explorer.exe"), _T("https://www.zhipuzi.com"), NULL, SW_SHOW);
  100. }
  101. }
  102. else if (msg.sType == _T("itemselect"))
  103. {
  104. CDuiString name = msg.pSender->GetName();
  105. if (name == _T("accountcombo"))
  106. {
  107. CComboUI* pCom = static_cast<CComboUI*>(m_pm.FindControl(_T("accountcombo")));
  108. std::wstring name = pCom->GetItemAt(pCom->GetCurSel())->GetText();
  109. std::string password = CSetting::GetInstance()->GetUser(CLewaimaiString::UnicodeToUTF8(name));
  110. std::wstring wspassword = CLewaimaiString::UTF8ToUnicode(password);
  111. CEditUI* pEdit = static_cast<CEditUI*>(m_pm.FindControl(_T("accountedit")));
  112. pEdit->SetText(name.c_str());
  113. CEditUI* pPassword = static_cast<CEditUI*>(m_pm.FindControl(_T("pwdedit")));
  114. pPassword->SetText(wspassword.c_str());
  115. }
  116. }
  117. else if (msg.sType == L"windowinit")
  118. {
  119. m_pm.SetNextTabControl(false);
  120. CEditUI* pAccountEdit = static_cast<CEditUI*>(m_pm.FindControl(_T("accountedit")));
  121. if (pAccountEdit)
  122. {
  123. pAccountEdit->SetFocus();
  124. }
  125. }
  126. }
  127. LRESULT CLoginWnd::OnCreate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
  128. {
  129. LONG styleValue = ::GetWindowLong(*this, GWL_STYLE);
  130. styleValue &= ~WS_CAPTION;
  131. ::SetWindowLong(*this, GWL_STYLE, styleValue | WS_CLIPSIBLINGS | WS_CLIPCHILDREN);
  132. // 把自己的窗口句柄与窗口绘制管理器挂接在一起
  133. m_pm.Init(m_hWnd);
  134. m_pm.AddPreMessageFilter(this);
  135. CDialogBuilder builder;
  136. CControlUI* pRoot = builder.Create(_T("login.xml"), (UINT)0, NULL, &m_pm);
  137. ASSERT(pRoot && "Failed to parse XML");
  138. // 把这些控件绘制到本窗口上
  139. m_pm.AttachDialog(pRoot);
  140. // 把自己加入到CPaintManagerUI的m_aNotifiers数组中,用于处理Notify函数
  141. m_pm.AddNotifier(this);
  142. Init();
  143. return 0;
  144. }
  145. LRESULT CLoginWnd::OnClose(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
  146. {
  147. bHandled = FALSE;
  148. return 0;
  149. }
  150. /*
  151. *这个是窗口被销毁的时候调用的
  152. **/
  153. LRESULT CLoginWnd::OnDestroy(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
  154. {
  155. bHandled = FALSE;
  156. return 0;
  157. }
  158. LRESULT CLoginWnd::OnNcActivate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
  159. {
  160. if(::IsIconic(*this))
  161. {
  162. bHandled = FALSE;
  163. }
  164. return (wParam == 0) ? TRUE : FALSE;
  165. }
  166. LRESULT CLoginWnd::OnNcCalcSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
  167. {
  168. return 0;
  169. }
  170. LRESULT CLoginWnd::OnNcPaint(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
  171. {
  172. return 0;
  173. }
  174. LRESULT CLoginWnd::OnNcHitTest(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
  175. {
  176. POINT pt;
  177. pt.x = GET_X_LPARAM(lParam);
  178. pt.y = GET_Y_LPARAM(lParam);
  179. ::ScreenToClient(*this, &pt);
  180. RECT rcClient;
  181. ::GetClientRect(*this, &rcClient);
  182. RECT rcCaption = m_pm.GetCaptionRect();
  183. if(pt.x >= rcClient.left + rcCaption.left && pt.x < rcClient.right - rcCaption.right \
  184. && pt.y >= rcCaption.top && pt.y < rcCaption.bottom)
  185. {
  186. CControlUI* pControl = static_cast<CControlUI*>(m_pm.FindControl(pt));
  187. if(pControl && _tcscmp(pControl->GetClass(), DUI_CTR_BUTTON) != 0)
  188. {
  189. return HTCAPTION;
  190. }
  191. }
  192. return HTCLIENT;
  193. }
  194. LRESULT CLoginWnd::OnSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
  195. {
  196. SIZE szRoundCorner = m_pm.GetRoundCorner();
  197. if(!::IsIconic(*this) && (szRoundCorner.cx != 0 || szRoundCorner.cy != 0))
  198. {
  199. CDuiRect rcWnd;
  200. ::GetWindowRect(*this, &rcWnd);
  201. rcWnd.Offset(-rcWnd.left, -rcWnd.top);
  202. rcWnd.right++;
  203. rcWnd.bottom++;
  204. HRGN hRgn = ::CreateRoundRectRgn(rcWnd.left, rcWnd.top, rcWnd.right, rcWnd.bottom, szRoundCorner.cx, szRoundCorner.cy);
  205. ::SetWindowRgn(*this, hRgn, TRUE);
  206. ::DeleteObject(hRgn);
  207. }
  208. bHandled = FALSE;
  209. return 0;
  210. }
  211. LRESULT CLoginWnd::HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam)
  212. {
  213. LRESULT lRes = 0;
  214. BOOL bHandled = TRUE;
  215. switch(uMsg)
  216. {
  217. case WM_CREATE:
  218. lRes = OnCreate(uMsg, wParam, lParam, bHandled);
  219. break;
  220. case WM_CLOSE:
  221. lRes = OnClose(uMsg, wParam, lParam, bHandled);
  222. break;
  223. case WM_DESTROY:
  224. lRes = OnDestroy(uMsg, wParam, lParam, bHandled);
  225. break;
  226. case WM_NCACTIVATE:
  227. lRes = OnNcActivate(uMsg, wParam, lParam, bHandled);
  228. break;
  229. case WM_NCCALCSIZE:
  230. lRes = OnNcCalcSize(uMsg, wParam, lParam, bHandled);
  231. break;
  232. case WM_NCPAINT:
  233. lRes = OnNcPaint(uMsg, wParam, lParam, bHandled);
  234. break;
  235. case WM_NCHITTEST:
  236. lRes = OnNcHitTest(uMsg, wParam, lParam, bHandled);
  237. break;
  238. case WM_SIZE:
  239. lRes = OnSize(uMsg, wParam, lParam, bHandled);
  240. break;
  241. default:
  242. bHandled = FALSE;
  243. }
  244. if(bHandled)
  245. {
  246. return lRes;
  247. }
  248. if(m_pm.MessageHandler(uMsg, wParam, lParam, lRes))
  249. {
  250. return lRes;
  251. }
  252. return CWindowWnd::HandleMessage(uMsg, wParam, lParam);
  253. }
  254. LRESULT CLoginWnd::MessageHandler(UINT uMsg, WPARAM wParam, LPARAM lParam, bool& bHandled)
  255. {
  256. if(uMsg == WM_KEYDOWN)
  257. {
  258. if(wParam == VK_RETURN)
  259. {
  260. CEditUI* pEdit = static_cast<CEditUI*>(m_pm.FindControl(_T("accountedit")));
  261. if(pEdit->GetText().IsEmpty())
  262. {
  263. pEdit->SetFocus();
  264. }
  265. else
  266. {
  267. pEdit = static_cast<CEditUI*>(m_pm.FindControl(_T("pwdedit")));
  268. if(pEdit->GetText().IsEmpty())
  269. {
  270. pEdit->SetFocus();
  271. }
  272. else
  273. {
  274. //这里如果不把焦点设置为窗口,登录的时候会显示输入框(好像是个bug?获得焦点的控件无法隐藏?)
  275. SetFocus(this->GetHWND());
  276. this->StartLogin();
  277. }
  278. }
  279. return true;
  280. }
  281. else if(wParam == VK_ESCAPE)
  282. {
  283. PostQuitMessage(0);
  284. return true;
  285. }
  286. }
  287. else if (uMsg == WM_LOGIN_SUCCESS)
  288. {
  289. ShowLoginSuccess();
  290. return true;
  291. }
  292. else if (uMsg == WM_LOGIN_ERROR)
  293. {
  294. ShowLoginError();
  295. return true;
  296. }
  297. else if (uMsg == WM_NEED_UPDATE)
  298. {
  299. //说明需要升级了
  300. ShowUpdate();
  301. return true;
  302. }
  303. else if (uMsg == WM_LOGIN_AGAIN_OUT)
  304. {
  305. ShowLoginAgainOut();
  306. return true;
  307. }
  308. else if (uMsg == WM_LOGIN_START_INIT_DATA)
  309. {
  310. ShowInitData();
  311. }
  312. return false;
  313. }
  314. void CLoginWnd::StartLogin()
  315. {
  316. //隐藏密码输入框,显示进度条
  317. CVerticalLayoutUI* pInput = static_cast<CVerticalLayoutUI*>(m_pm.FindControl(_T("login_input")));
  318. pInput->SetVisible(false);
  319. CVerticalLayoutUI* pLoading = static_cast<CVerticalLayoutUI*>(m_pm.FindControl(_T("login_loading")));
  320. pLoading->SetVisible(true);
  321. CVerticalLayoutUI* pIniting = static_cast<CVerticalLayoutUI*>(m_pm.FindControl(_T("login_init_data_ing")));
  322. pIniting->SetVisible(false);
  323. CLabelUI* pLoginResultLabel = static_cast<CLabelUI*>(m_pm.FindControl(_T("loginresult")));
  324. pLoginResultLabel->SetVisible(false);
  325. //开启一个线程,开始处理登录
  326. std::thread(&CLoginWnd::HandleLogin, this).detach();
  327. }
  328. void CLoginWnd::HandleLogin()
  329. {
  330. CLabelUI* pLoginResultLabel = static_cast<CLabelUI*>(m_pm.FindControl(_T("loginresult")));
  331. //真正登录前,先检测是否有需要更新
  332. std::map<string, string> params;
  333. std::string response;
  334. bool ret = CZhipuziHttpClient::GetInstance()->RequestPingtaiNew("/version/getwindowsposversion", params, response);
  335. if (!ret)
  336. {
  337. m_wsLoginErrMsg = _T("网络请求出错");
  338. PostMessage(WM_LOGIN_ERROR);
  339. return;
  340. }
  341. rapidjson::Document document;
  342. document.Parse(response.c_str());
  343. if (document.HasParseError())
  344. {
  345. m_wsLoginErrMsg = _T("服务器返回数据格式错误");
  346. PostMessage(WM_LOGIN_ERROR);
  347. return;
  348. }
  349. else
  350. {
  351. if (!document.HasMember("errcode") || !document.HasMember("errmsg") || !document.HasMember("data"))
  352. {
  353. m_wsLoginErrMsg = _T("服务器返回数据格式错误");
  354. PostMessage(WM_LOGIN_ERROR);
  355. return;
  356. }
  357. rapidjson::Value& v_errcode = document["errcode"];
  358. int errcode = v_errcode.GetInt();
  359. if (errcode != 0)
  360. {
  361. std::string errmsg = "response failed! message:" + string(document["errmsg"].GetString());
  362. m_wsLoginErrMsg = CLewaimaiString::UTF8ToUnicode(errmsg);
  363. PostMessage(WM_LOGIN_ERROR);
  364. return;
  365. }
  366. rapidjson::Value& data = document["data"];
  367. std::string newest_version = data["cur_version"].GetString();
  368. m_update_url = data["url"].GetString();
  369. if (newest_version > CSystem::GetVersion())
  370. {
  371. //说明有新版本,要更新
  372. PostMessage(WM_NEED_UPDATE);
  373. return;
  374. }
  375. }
  376. //判断账号密码是否正确
  377. std::wstring account, password;
  378. CEditUI* pAccountEdit = static_cast<CEditUI*>(m_pm.FindControl(_T("accountedit")));
  379. if(pAccountEdit)
  380. {
  381. account = pAccountEdit->GetText().GetData();
  382. }
  383. CEditUI* pPasswordEdit = static_cast<CEditUI*>(m_pm.FindControl(_T("pwdedit")));
  384. if(pPasswordEdit)
  385. {
  386. password = pPasswordEdit->GetText().GetData();
  387. }
  388. //把第1个中文冒号替换成英文冒号
  389. CLewaimaiString::Replace(account, _T(":"), _T(":"), 1);
  390. //LOG_INFO("account:" << account.c_str() << ", password:" << password.c_str());
  391. string s_account = CLewaimaiString::UnicodeToUTF8(account);
  392. string s_password = CLewaimaiString::UnicodeToUTF8(password);
  393. CLewaimaiString::trim(s_account);
  394. CLewaimaiString::trim(s_password);
  395. if (s_account.compare("") == 0)
  396. {
  397. m_wsLoginErrMsg = _T("用户名不能为空");
  398. PostMessage(WM_LOGIN_ERROR);
  399. return;
  400. }
  401. if (s_password.compare("") == 0)
  402. {
  403. m_wsLoginErrMsg = _T("密码不能为空");
  404. PostMessage(WM_LOGIN_ERROR);
  405. return;
  406. }
  407. CZhipuziHttpClient::GetInstance()->Init(s_account, s_password);
  408. std::string errmsg;
  409. bool res = CZhipuziHttpClient::GetInstance()->Login(errmsg);
  410. if(res)
  411. {
  412. //判断当前shop_id是否为0,如果为0说明是主账号还没有绑定店铺,那么就跳转进行店铺绑定
  413. if (CShopinfo::GetInstance()->m_is_shop == "0")
  414. {
  415. m_wsLoginErrMsg = _T("主账号未绑定店铺");
  416. PostMessage(WM_LOGIN_ERROR);
  417. return;
  418. }
  419. CCheckBoxUI* pAuto = static_cast<CCheckBoxUI*>(m_pm.FindControl(_T("login_auto_login")));
  420. CCheckBoxUI* pRemember = static_cast<CCheckBoxUI*>(m_pm.FindControl(_T("login_remember_password")));
  421. if (pAuto->IsSelected())
  422. {
  423. CSetting::GetInstance()->SetParam("setting_is_auto_login", "1", false);
  424. CSetting::GetInstance()->SetParam("setting_is_remember_password", "1", false);
  425. //相当于开启自动登录,默认就是开启了记住密码了
  426. CSetting::GetInstance()->SetUser(s_account, s_password, true);
  427. }
  428. else
  429. {
  430. CSetting::GetInstance()->SetParam("setting_is_auto_login", "0", false);
  431. if (pRemember->IsSelected())
  432. {
  433. CSetting::GetInstance()->SetParam("setting_is_remember_password", "1", false);
  434. }
  435. else
  436. {
  437. CSetting::GetInstance()->SetParam("setting_is_remember_password", "0", false);
  438. }
  439. if (pRemember->IsSelected())
  440. {
  441. CSetting::GetInstance()->SetUser(s_account, s_password, true);
  442. }
  443. else
  444. {
  445. CSetting::GetInstance()->SetUser(s_account, "", true);
  446. }
  447. }
  448. //在这里设置完参数后,统一保存到数据库
  449. CSetting::GetInstance()->SetParam("last_login_username", s_account, true);
  450. //把用户名和密码保存起来
  451. CSetting::GetInstance()->SetLoginInfo(s_account, s_password);
  452. //发送一个消息,更新界面状态
  453. PostMessage(WM_LOGIN_START_INIT_DATA);
  454. //然后进行服务器数据的同步,同步完成了才切换到收银系统主页面
  455. bool ret = CFoodHandle::GetInstance()->InitAllFood();
  456. if (!ret)
  457. {
  458. m_wsLoginErrMsg = _T("同步云端商品数据失败!");
  459. PostMessage(WM_LOGIN_ERROR);
  460. return;
  461. }
  462. //获取店铺信息(比如一些后台店铺相关的设置、副屏轮播图、打印小票二维码等等)
  463. std::wstring errmsg;
  464. ret = CShopinfo::GetInstance()->UpdateOneShopinfo(errmsg);
  465. if (!ret)
  466. {
  467. m_wsLoginErrMsg = errmsg;
  468. PostMessage(WM_LOGIN_ERROR);
  469. return;
  470. }
  471. ret = CShopinfo::GetInstance()->GetTabletypeInfo();
  472. if (!ret)
  473. {
  474. m_wsLoginErrMsg = L"获取店铺桌子分类失败";
  475. PostMessage(WM_LOGIN_ERROR);
  476. return;
  477. }
  478. PostMessage(WM_LOGIN_SUCCESS);
  479. return;
  480. }
  481. else
  482. {
  483. //登录失败了
  484. m_wsLoginErrMsg = std::wstring(_T("登录失败:") + CLewaimaiString::UTF8ToUnicode(errmsg));
  485. PostMessage(WM_LOGIN_ERROR);
  486. return;
  487. }
  488. }
  489. void CLoginWnd::ShowLoginSuccess()
  490. {
  491. CMainWnd* pFrame = new CMainWnd();
  492. if (pFrame == NULL)
  493. {
  494. return;
  495. }
  496. pFrame->SetIcon(IDI_ICON_DUILIB);
  497. pFrame->Create(NULL, _T("智铺子收银系统"), UI_WNDSTYLE_FRAME, 0L, 0, 0, 1024, 768);
  498. pFrame->CenterWindow();
  499. ::ShowWindow(*pFrame, SW_SHOWMAXIMIZED);
  500. Close();
  501. }
  502. void CLoginWnd::ShowLoginError()
  503. {
  504. CVerticalLayoutUI* pInput = static_cast<CVerticalLayoutUI*>(m_pm.FindControl(_T("login_input")));
  505. pInput->SetVisible(true);
  506. CVerticalLayoutUI* pLoading = static_cast<CVerticalLayoutUI*>(m_pm.FindControl(_T("login_loading")));
  507. pLoading->SetVisible(false);
  508. CVerticalLayoutUI* pIniting = static_cast<CVerticalLayoutUI*>(m_pm.FindControl(_T("login_init_data_ing")));
  509. pIniting->SetVisible(false);
  510. CLabelUI* pLoginResultLabel = static_cast<CLabelUI*>(m_pm.FindControl(_T("loginresult")));
  511. pLoginResultLabel->SetText(m_wsLoginErrMsg.c_str());
  512. pLoginResultLabel->SetVisible(true);
  513. }
  514. void CLoginWnd::ShowUpdate()
  515. {
  516. CUpdateWnd* pFrame = new CUpdateWnd();
  517. if (pFrame == NULL)
  518. {
  519. return;
  520. }
  521. TCHAR lpTempPathBuffer[MAX_PATH];
  522. DWORD dwRetVal = GetTempPath(MAX_PATH, lpTempPathBuffer);
  523. std::string url = m_update_url;
  524. std::string filename = CLewaimaiString::UnicodeToANSI(lpTempPathBuffer);
  525. pFrame->InitData(url, filename);
  526. pFrame->SetIcon(IDI_ICON_DUILIB);
  527. pFrame->Create(NULL, _T("自动更新"), UI_WNDSTYLE_DIALOG, 0, 0, 0, 0, 0, NULL);
  528. pFrame->CenterWindow();
  529. ::ShowWindow(*pFrame, SW_SHOWNORMAL);
  530. Close();
  531. }
  532. void CLoginWnd::ShowLoginAgainOut()
  533. {
  534. //这种模式是本人强制挤下线了
  535. CMessageboxWnd* pMessagebox = new CMessageboxWnd;
  536. pMessagebox->Create(m_hWnd, _T(""), UI_WNDSTYLE_DIALOG, WS_EX_WINDOWEDGE);
  537. pMessagebox->SetIcon(IDI_ICON_DUILIB);
  538. pMessagebox->CenterWindow();
  539. UINT ret = pMessagebox->ShowModal();
  540. }
  541. void CLoginWnd::ShowInitData()
  542. {
  543. CVerticalLayoutUI* pInput = static_cast<CVerticalLayoutUI*>(m_pm.FindControl(_T("login_input")));
  544. pInput->SetVisible(false);
  545. CVerticalLayoutUI* pLoading = static_cast<CVerticalLayoutUI*>(m_pm.FindControl(_T("login_loading")));
  546. pLoading->SetVisible(false);
  547. CVerticalLayoutUI* pIniting = static_cast<CVerticalLayoutUI*>(m_pm.FindControl(_T("login_init_data_ing")));
  548. pIniting->SetVisible(true);
  549. }