CDingweiInfoWnd.cpp 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258
  1. #include "../pch/pch.h"
  2. #include "CDingweiInfoWnd.h"
  3. #include "CValueWnd.h"
  4. CDingweiInfoWnd::CDingweiInfoWnd(CValueWnd* valueWnd)
  5. {
  6. m_valueWnd = valueWnd;
  7. }
  8. CDingweiInfoWnd::~CDingweiInfoWnd()
  9. {
  10. }
  11. void CDingweiInfoWnd::Init()
  12. {
  13. }
  14. void CDingweiInfoWnd::Notify(TNotifyUI& msg)
  15. {
  16. CDuiString name = msg.pSender->GetName();
  17. if (msg.sType == _T("click"))
  18. {
  19. if (msg.pSender->GetName() == _T("closebtn"))
  20. {
  21. PostQuitMessage(0);
  22. return;
  23. }
  24. }
  25. else if (msg.sType == L"itemclick")
  26. {
  27. //响应菜单事件
  28. ::MessageBox(NULL, name.GetData(), L"hello", MB_OK);
  29. this->ShowWindow(false);
  30. }
  31. }
  32. LRESULT CDingweiInfoWnd::OnCreate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
  33. {
  34. LONG styleValue = ::GetWindowLong(*this, GWL_STYLE);
  35. styleValue &= ~WS_CAPTION;
  36. ::SetWindowLong(*this, GWL_STYLE, styleValue | WS_CLIPSIBLINGS | WS_CLIPCHILDREN);
  37. // 把自己的窗口句柄与窗口绘制管理器挂接在一起
  38. m_pm.Init(m_hWnd);
  39. m_pm.AddPreMessageFilter(this);
  40. CDialogBuilder builder;
  41. CControlUI* pRoot = builder.Create(_T("dingweiinfo_wnd.xml"), (UINT)0, NULL, &m_pm);
  42. ASSERT(pRoot && "Failed to parse XML");
  43. // 把这些控件绘制到本窗口上
  44. m_pm.AttachDialog(pRoot);
  45. // 把自己加入到CPaintManagerUI的m_aNotifiers数组中,用于处理Notify函数
  46. m_pm.AddNotifier(this);
  47. Init();
  48. return 0;
  49. }
  50. LRESULT CDingweiInfoWnd::OnClose(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
  51. {
  52. bHandled = FALSE;
  53. return 0;
  54. }
  55. /*
  56. *这个是窗口被销毁的时候调用的
  57. **/
  58. LRESULT CDingweiInfoWnd::OnDestroy(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
  59. {
  60. bHandled = FALSE;
  61. return 0;
  62. }
  63. LRESULT CDingweiInfoWnd::OnNcActivate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
  64. {
  65. if (::IsIconic(*this))
  66. {
  67. bHandled = FALSE;
  68. }
  69. return (wParam == 0) ? TRUE : FALSE;
  70. }
  71. LRESULT CDingweiInfoWnd::OnNcCalcSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
  72. {
  73. return 0;
  74. }
  75. LRESULT CDingweiInfoWnd::OnNcPaint(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
  76. {
  77. //在这里设置焦点才有用
  78. CEditUI* pAccountEdit = static_cast<CEditUI*>(m_pm.FindControl(_T("accountedit")));
  79. if (pAccountEdit)
  80. {
  81. pAccountEdit->SetFocus();
  82. }
  83. return 0;
  84. }
  85. LRESULT CDingweiInfoWnd::OnNcHitTest(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
  86. {
  87. POINT pt;
  88. pt.x = GET_X_LPARAM(lParam);
  89. pt.y = GET_Y_LPARAM(lParam);
  90. ::ScreenToClient(*this, &pt);
  91. RECT rcClient;
  92. ::GetClientRect(*this, &rcClient);
  93. RECT rcCaption = m_pm.GetCaptionRect();
  94. if (pt.x >= rcClient.left + rcCaption.left && pt.x < rcClient.right - rcCaption.right \
  95. && pt.y >= rcCaption.top && pt.y < rcCaption.bottom)
  96. {
  97. CControlUI* pControl = static_cast<CControlUI*>(m_pm.FindControl(pt));
  98. if (pControl && _tcscmp(pControl->GetClass(), DUI_CTR_BUTTON) != 0)
  99. {
  100. return HTCAPTION;
  101. }
  102. }
  103. return HTCLIENT;
  104. }
  105. LRESULT CDingweiInfoWnd::OnSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
  106. {
  107. SIZE szRoundCorner = m_pm.GetRoundCorner();
  108. if (!::IsIconic(*this) && (szRoundCorner.cx != 0 || szRoundCorner.cy != 0))
  109. {
  110. CDuiRect rcWnd;
  111. ::GetWindowRect(*this, &rcWnd);
  112. rcWnd.Offset(-rcWnd.left, -rcWnd.top);
  113. rcWnd.right++;
  114. rcWnd.bottom++;
  115. HRGN hRgn = ::CreateRoundRectRgn(rcWnd.left, rcWnd.top, rcWnd.right, rcWnd.bottom, szRoundCorner.cx, szRoundCorner.cy);
  116. ::SetWindowRgn(*this, hRgn, TRUE);
  117. ::DeleteObject(hRgn);
  118. }
  119. bHandled = FALSE;
  120. return 0;
  121. }
  122. LRESULT CDingweiInfoWnd::OnLButtonDown(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
  123. {
  124. m_valueWnd->ConfirmDingweiWnd(m_findValue, m_FindWnd);
  125. return 0;
  126. }
  127. LRESULT CDingweiInfoWnd::OnRButtonDown(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
  128. {
  129. //点击邮件,取消截取
  130. m_valueWnd->CancalDingweiWnd();
  131. return 0;
  132. }
  133. LRESULT CDingweiInfoWnd::HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam)
  134. {
  135. LRESULT lRes = 0;
  136. BOOL bHandled = TRUE;
  137. switch (uMsg)
  138. {
  139. case WM_CREATE:
  140. lRes = OnCreate(uMsg, wParam, lParam, bHandled);
  141. break;
  142. case WM_CLOSE:
  143. lRes = OnClose(uMsg, wParam, lParam, bHandled);
  144. break;
  145. case WM_DESTROY:
  146. lRes = OnDestroy(uMsg, wParam, lParam, bHandled);
  147. break;
  148. case WM_NCACTIVATE:
  149. lRes = OnNcActivate(uMsg, wParam, lParam, bHandled);
  150. break;
  151. case WM_NCCALCSIZE:
  152. lRes = OnNcCalcSize(uMsg, wParam, lParam, bHandled);
  153. break;
  154. case WM_NCPAINT:
  155. lRes = OnNcPaint(uMsg, wParam, lParam, bHandled);
  156. break;
  157. case WM_NCHITTEST:
  158. lRes = OnNcHitTest(uMsg, wParam, lParam, bHandled);
  159. break;
  160. case WM_SIZE:
  161. lRes = OnSize(uMsg, wParam, lParam, bHandled);
  162. break;
  163. case WM_LBUTTONDOWN:
  164. lRes = OnLButtonDown(uMsg, wParam, lParam, bHandled);
  165. break;
  166. case WM_RBUTTONDOWN:
  167. lRes = OnRButtonDown(uMsg, wParam, lParam, bHandled);
  168. break;
  169. default:
  170. bHandled = FALSE;
  171. }
  172. if (bHandled)
  173. {
  174. return lRes;
  175. }
  176. if (m_pm.MessageHandler(uMsg, wParam, lParam, lRes))
  177. {
  178. return lRes;
  179. }
  180. return CWindowWnd::HandleMessage(uMsg, wParam, lParam);
  181. }
  182. LRESULT CDingweiInfoWnd::MessageHandler(UINT uMsg, WPARAM wParam, LPARAM lParam, bool& bHandled)
  183. {
  184. return false;
  185. }
  186. void CDingweiInfoWnd::UpdateInfo(std::wstring value, HWND hwnd)
  187. {
  188. m_findValue = value;
  189. m_FindWnd = hwnd;
  190. std::string s_value = CLewaimaiString::UnicodeToUTF8(value);
  191. CLabelUI* valueLabel = static_cast<CLabelUI*>(m_pm.FindControl(_T("dingweiinfo_wnd_info")));
  192. if (s_value == "" || !atof(s_value.c_str()))
  193. {
  194. valueLabel->SetText(L"无有效金额");
  195. }
  196. else
  197. {
  198. std::wstring info = L"有效金额:" + value + L" 元";
  199. valueLabel->SetText(info.c_str());
  200. }
  201. }