#include "../pch/pch.h" #include "CDingweiInfoWnd.h" #include "CValueWnd.h" CDingweiInfoWnd::CDingweiInfoWnd(CValueWnd* valueWnd) { m_valueWnd = valueWnd; } CDingweiInfoWnd::~CDingweiInfoWnd() { } void CDingweiInfoWnd::Init() { } void CDingweiInfoWnd::Notify(TNotifyUI& msg) { CDuiString name = msg.pSender->GetName(); if (msg.sType == _T("click")) { if (msg.pSender->GetName() == _T("closebtn")) { PostQuitMessage(0); return; } } else if (msg.sType == L"itemclick") { //响应菜单事件 ::MessageBox(NULL, name.GetData(), L"hello", MB_OK); this->ShowWindow(false); } } LRESULT CDingweiInfoWnd::OnCreate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { LONG styleValue = ::GetWindowLong(*this, GWL_STYLE); styleValue &= ~WS_CAPTION; ::SetWindowLong(*this, GWL_STYLE, styleValue | WS_CLIPSIBLINGS | WS_CLIPCHILDREN); // 把自己的窗口句柄与窗口绘制管理器挂接在一起 m_pm.Init(m_hWnd); m_pm.AddPreMessageFilter(this); CDialogBuilder builder; CControlUI* pRoot = builder.Create(_T("dingweiinfo_wnd.xml"), (UINT)0, NULL, &m_pm); ASSERT(pRoot && "Failed to parse XML"); // 把这些控件绘制到本窗口上 m_pm.AttachDialog(pRoot); // 把自己加入到CPaintManagerUI的m_aNotifiers数组中,用于处理Notify函数 m_pm.AddNotifier(this); Init(); return 0; } LRESULT CDingweiInfoWnd::OnClose(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { bHandled = FALSE; return 0; } /* *这个是窗口被销毁的时候调用的 **/ LRESULT CDingweiInfoWnd::OnDestroy(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { bHandled = FALSE; return 0; } LRESULT CDingweiInfoWnd::OnNcActivate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { if (::IsIconic(*this)) { bHandled = FALSE; } return (wParam == 0) ? TRUE : FALSE; } LRESULT CDingweiInfoWnd::OnNcCalcSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { return 0; } LRESULT CDingweiInfoWnd::OnNcPaint(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { //在这里设置焦点才有用 CEditUI* pAccountEdit = static_cast(m_pm.FindControl(_T("accountedit"))); if (pAccountEdit) { pAccountEdit->SetFocus(); } return 0; } LRESULT CDingweiInfoWnd::OnNcHitTest(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { POINT pt; pt.x = GET_X_LPARAM(lParam); pt.y = GET_Y_LPARAM(lParam); ::ScreenToClient(*this, &pt); RECT rcClient; ::GetClientRect(*this, &rcClient); RECT rcCaption = m_pm.GetCaptionRect(); if (pt.x >= rcClient.left + rcCaption.left && pt.x < rcClient.right - rcCaption.right \ && pt.y >= rcCaption.top && pt.y < rcCaption.bottom) { CControlUI* pControl = static_cast(m_pm.FindControl(pt)); if (pControl && _tcscmp(pControl->GetClass(), DUI_CTR_BUTTON) != 0) { return HTCAPTION; } } return HTCLIENT; } LRESULT CDingweiInfoWnd::OnSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { SIZE szRoundCorner = m_pm.GetRoundCorner(); if (!::IsIconic(*this) && (szRoundCorner.cx != 0 || szRoundCorner.cy != 0)) { CDuiRect rcWnd; ::GetWindowRect(*this, &rcWnd); rcWnd.Offset(-rcWnd.left, -rcWnd.top); rcWnd.right++; rcWnd.bottom++; HRGN hRgn = ::CreateRoundRectRgn(rcWnd.left, rcWnd.top, rcWnd.right, rcWnd.bottom, szRoundCorner.cx, szRoundCorner.cy); ::SetWindowRgn(*this, hRgn, TRUE); ::DeleteObject(hRgn); } bHandled = FALSE; return 0; } LRESULT CDingweiInfoWnd::OnLButtonDown(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { m_valueWnd->ConfirmDingweiWnd(m_findValue, m_FindWnd); return 0; } LRESULT CDingweiInfoWnd::OnRButtonDown(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { //点击邮件,取消截取 m_valueWnd->CancalDingweiWnd(); return 0; } LRESULT CDingweiInfoWnd::HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam) { LRESULT lRes = 0; BOOL bHandled = TRUE; switch (uMsg) { case WM_CREATE: lRes = OnCreate(uMsg, wParam, lParam, bHandled); break; case WM_CLOSE: lRes = OnClose(uMsg, wParam, lParam, bHandled); break; case WM_DESTROY: lRes = OnDestroy(uMsg, wParam, lParam, bHandled); break; case WM_NCACTIVATE: lRes = OnNcActivate(uMsg, wParam, lParam, bHandled); break; case WM_NCCALCSIZE: lRes = OnNcCalcSize(uMsg, wParam, lParam, bHandled); break; case WM_NCPAINT: lRes = OnNcPaint(uMsg, wParam, lParam, bHandled); break; case WM_NCHITTEST: lRes = OnNcHitTest(uMsg, wParam, lParam, bHandled); break; case WM_SIZE: lRes = OnSize(uMsg, wParam, lParam, bHandled); break; case WM_LBUTTONDOWN: lRes = OnLButtonDown(uMsg, wParam, lParam, bHandled); break; case WM_RBUTTONDOWN: lRes = OnRButtonDown(uMsg, wParam, lParam, bHandled); break; default: bHandled = FALSE; } if (bHandled) { return lRes; } if (m_pm.MessageHandler(uMsg, wParam, lParam, lRes)) { return lRes; } return CWindowWnd::HandleMessage(uMsg, wParam, lParam); } LRESULT CDingweiInfoWnd::MessageHandler(UINT uMsg, WPARAM wParam, LPARAM lParam, bool& bHandled) { return false; } void CDingweiInfoWnd::UpdateInfo(std::wstring value, HWND hwnd) { m_findValue = value; m_FindWnd = hwnd; std::string s_value = CLewaimaiString::UnicodeToUTF8(value); CLabelUI* valueLabel = static_cast(m_pm.FindControl(_T("dingweiinfo_wnd_info"))); if (s_value == "" || !atof(s_value.c_str())) { valueLabel->SetText(L"无有效金额"); } else { std::wstring info = L"有效金额:" + value + L" 元"; valueLabel->SetText(info.c_str()); } }