UiPopupPasswordQuery.cpp
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:4k
源码类别:

模拟服务器

开发平台:

C/C++

  1. /********************************************************************
  2. File        : UiPopupPasswordQuery.cpp
  3. Creator     : Fyt(Fan Zhanpeng)
  4. create data : 08-30-2003(mm-dd-yyyy)
  5. Description : 询问密码窗口
  6. *********************************************************************/
  7. #include "KWin32.h"
  8. #include "KIniFile.h"
  9. #include "KSG_MD5_String.h"
  10. #include "../elem/wnds.h"
  11. #include "../Elem/WndMessage.h"
  12. #include "../UiBase.h"
  13. #include "../UiSoundSetting.h"
  14. #include "UiPopupPasswordQuery.h"
  15. #define POPUP_PASSWORD_QUERY_INI "密码询问窗口.ini"
  16. KUiPopupPasswordQuery* KUiPopupPasswordQuery::ms_pSelf = NULL;
  17. //////////////////////////////////////////////////////////////////////
  18. // Construction/Destruction
  19. //////////////////////////////////////////////////////////////////////
  20. KUiPopupPasswordQuery::KUiPopupPasswordQuery()
  21. {
  22. }
  23. KUiPopupPasswordQuery::~KUiPopupPasswordQuery()
  24. {
  25. }
  26. /*********************************************************************
  27. * 功能:打开窗口
  28. **********************************************************************/
  29. KUiPopupPasswordQuery* KUiPopupPasswordQuery::OpenWindow(KWndWindow *pCaller, unsigned int uParam)
  30. {
  31. if(pCaller)
  32. {
  33.      if (ms_pSelf == NULL)
  34.      {
  35.     ms_pSelf = new KUiPopupPasswordQuery;
  36.     if (ms_pSelf)
  37.      ms_pSelf->Initialize();
  38.      }
  39.      if (ms_pSelf)
  40.      {
  41. ms_pSelf->m_pCaller = pCaller;
  42. ms_pSelf->m_uParam  = uParam;
  43.     UiSoundPlay(UI_SI_WND_OPENCLOSE);
  44.     ms_pSelf->BringToTop();
  45.     ms_pSelf->Show();
  46. Wnd_SetExclusive((KWndWindow *)ms_pSelf);
  47.     }
  48. }
  49. return ms_pSelf;
  50. }
  51. /*********************************************************************
  52. * 功能:如果窗口正被显示,则返回实例指针
  53. **********************************************************************/
  54. KUiPopupPasswordQuery* KUiPopupPasswordQuery::GetIfVisible()
  55. {
  56. if (ms_pSelf && ms_pSelf->IsVisible())
  57. return ms_pSelf;
  58. return NULL;
  59. }
  60. /*********************************************************************
  61. * 功能:关闭窗口,同时可以选则是否删除对象实例
  62. **********************************************************************/
  63. void KUiPopupPasswordQuery::CloseWindow(bool bDestory)
  64. {
  65. if (ms_pSelf)
  66. {
  67. ms_pSelf->Hide();
  68. if (bDestory)
  69. {
  70. ms_pSelf->Destroy();
  71. ms_pSelf = NULL;
  72. }
  73. }
  74. }
  75. /*********************************************************************
  76. * 功能:初始化
  77. **********************************************************************/
  78. void KUiPopupPasswordQuery::Initialize()
  79. {
  80. AddChild(&m_Password);
  81. AddChild(&m_Confirm);
  82. char Scheme[256];
  83. g_UiBase.GetCurSchemePath(Scheme, 256);
  84. LoadScheme(Scheme);
  85. Wnd_AddWindow(this);
  86. }
  87. /*********************************************************************
  88. * 功能:载入界面方案
  89. **********************************************************************/
  90. void KUiPopupPasswordQuery::LoadScheme(const char* pScheme)
  91. {
  92. if(ms_pSelf)
  93. {
  94.      char Buff[128];
  95.      KIniFile Ini;
  96.      sprintf(Buff, "%s\%s", pScheme, POPUP_PASSWORD_QUERY_INI);
  97.      if (Ini.Load(Buff))
  98.      {
  99.     ms_pSelf->Init(&Ini, "Main");
  100.     ms_pSelf->m_Password.Init(&Ini, "Password");
  101. ms_pSelf->m_Confirm.Init(&Ini, "BtnConfirm");
  102. }
  103. /*--------------------*/
  104. }
  105. /*--------------------*/
  106. }
  107. /*********************************************************************
  108. * 功能:窗口函数
  109. **********************************************************************/
  110. int KUiPopupPasswordQuery::WndProc(unsigned int uMsg, unsigned int uParam, int nParam)
  111. {
  112. switch(uMsg)
  113. {
  114. case WND_N_BUTTON_CLICK:
  115. if(uParam == (unsigned int)&m_Confirm)
  116. {
  117. OnConfirm();
  118. }
  119. break;
  120. case WND_N_EDIT_SPECIAL_KEY_DOWN:
  121. if(uParam == (unsigned int)&m_Password && nParam == VK_RETURN)
  122. {
  123. OnConfirm();
  124. }
  125. break;
  126. default:
  127. return KWndImage::WndProc(uMsg, uParam, nParam);
  128. }
  129. return 1;
  130. }
  131. /*********************************************************************
  132. * 功能:窗口函数
  133. **********************************************************************/
  134. void KUiPopupPasswordQuery::OnConfirm()
  135. {
  136. if(m_pCaller)
  137. {
  138. char Buff[16], szMD5[64];
  139. m_Password.GetText(Buff, sizeof(Buff), TRUE);
  140. if(Buff[0])
  141. {
  142.      KSG_StringToMD5String(szMD5, Buff);
  143. Wnd_ReleaseExclusive((KWndWindow*)this);
  144.      m_pCaller->WndProc(WND_M_OTHER_WORK_RESULT, m_uParam, (int)szMD5);
  145. }
  146. else
  147. {
  148. return;
  149. }
  150. }
  151. m_Password.ClearText();
  152. CloseWindow();
  153. }