LRESULT CDateTimeWnd::HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam) { LRESULT lRes = 0; BOOL bHandled = TRUE; if( uMsg == WM_KILLFOCUS ) { lRes = OnKillFocus(uMsg, wParam, lParam, bHandled); } else if (uMsg == WM_KEYUP && (wParam == VK_DELETE || wParam == VK_BACK)) { LRESULT lRes = ::DefWindowProc(m_hWnd, uMsg, wParam, lParam); m_pOwner->m_nDTUpdateFlag = DT_DELETE; m_pOwner->UpdateText(); PostMessage(WM_CLOSE); return lRes; } else if (uMsg == WM_KEYUP && wParam == VK_ESCAPE) { LRESULT lRes = ::DefWindowProc(m_hWnd, uMsg, wParam, lParam); m_pOwner->m_nDTUpdateFlag = DT_KEEP; PostMessage(WM_CLOSE); return lRes; } else bHandled = FALSE; if( !bHandled ) return CWindowWnd::HandleMessage(uMsg, wParam, lParam); return lRes; }
LRESULT CDateTimeWnd::HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam) { LRESULT lRes = 0; BOOL bHandled = TRUE; if( uMsg == WM_CREATE ) { m_pOwner->GetManager()->AddNativeWindow(m_pOwner, m_hWnd); bHandled = FALSE; } else if( uMsg == WM_KILLFOCUS ) { lRes = OnKillFocus(uMsg, wParam, lParam, bHandled); } else if (uMsg == WM_KEYUP && (wParam == VK_DELETE || wParam == VK_BACK)) { LRESULT lRes = ::DefWindowProc(m_hWnd, uMsg, wParam, lParam); m_pOwner->m_nDTUpdateFlag = DT_DELETE; m_pOwner->UpdateText(); PostMessage(WM_CLOSE); return lRes; } else if (uMsg == WM_KEYUP && wParam == VK_ESCAPE) { LRESULT lRes = ::DefWindowProc(m_hWnd, uMsg, wParam, lParam); m_pOwner->m_nDTUpdateFlag = DT_KEEP; PostMessage(WM_CLOSE); return lRes; } // else if( uMsg == OCM_COMMAND ) { // if( GET_WM_COMMAND_CMD(wParam, lParam) == EN_CHANGE ) lRes = OnEditChanged(uMsg, wParam, lParam, bHandled); // else if( GET_WM_COMMAND_CMD(wParam, lParam) == EN_UPDATE ) { // RECT rcClient; // ::GetClientRect(m_hWnd, &rcClient); // ::InvalidateRect(m_hWnd, &rcClient, FALSE); // } // } // else if( uMsg == WM_KEYDOWN && TCHAR(wParam) == VK_RETURN ) { // m_pOwner->GetManager()->SendNotify(m_pOwner, DUI_MSGTYPE_RETURN); // } // else if( uMsg == OCM__BASE + WM_CTLCOLOREDIT || uMsg == OCM__BASE + WM_CTLCOLORSTATIC ) { // if( m_pOwner->GetNativeEditBkColor() == 0xFFFFFFFF ) return NULL; // ::SetBkMode((HDC)wParam, TRANSPARENT); // DWORD dwTextColor = m_pOwner->GetTextColor(); // ::SetTextColor((HDC)wParam, RGB(GetBValue(dwTextColor),GetGValue(dwTextColor),GetRValue(dwTextColor))); // if( m_hBkBrush == NULL ) { // DWORD clrColor = m_pOwner->GetNativeEditBkColor(); // m_hBkBrush = ::CreateSolidBrush(RGB(GetBValue(clrColor), GetGValue(clrColor), GetRValue(clrColor))); // } // return (LRESULT)m_hBkBrush; // } else if( uMsg == WM_PAINT) { if (m_pOwner->GetManager()->IsLayered()) { m_pOwner->GetManager()->AddNativeWindow(m_pOwner, m_hWnd); } bHandled = FALSE; } else bHandled = FALSE; if( !bHandled ) return CWindowWnd::HandleMessage(uMsg, wParam, lParam); return lRes; }
LRESULT CDateTimeWnd::HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam) { LRESULT lRes = 0; BOOL bHandled = TRUE; if( uMsg == WM_KILLFOCUS ) { lRes = OnKillFocus(uMsg, wParam, lParam, bHandled); } else if (uMsg == WM_KEYUP && (wParam == VK_DELETE || wParam == VK_BACK)) { LRESULT lRes = ::DefWindowProc(m_hWnd, uMsg, wParam, lParam); m_pOwner->m_nDTUpdateFlag = DT_DELETE; m_pOwner->UpdateText(); PostMessage(WM_CLOSE); return lRes; } else if (uMsg == WM_KEYUP && wParam == VK_ESCAPE) { LRESULT lRes = ::DefWindowProc(m_hWnd, uMsg, wParam, lParam); m_pOwner->m_nDTUpdateFlag = DT_KEEP; PostMessage(WM_CLOSE); return lRes; } else if (uMsg == WM_NOTIFY) { NMHDR* pHeader=(NMHDR*)lParam; HWND hWndDTP1=pHeader->hwndFrom; if(pHeader->code==DTN_DATETIMECHANGE) LPNMDATETIMECHANGE lpChage=(LPNMDATETIMECHANGE)lParam; bHandled = false; } // else if( uMsg == WM_KEYDOWN && TCHAR(wParam) == VK_RETURN ) { // m_pOwner->GetManager()->SendNotify(m_pOwner, DUI_MSGTYPE_RETURN); // } // else if( uMsg == OCM__BASE + WM_CTLCOLOREDIT || uMsg == OCM__BASE + WM_CTLCOLORSTATIC ) { // if( m_pOwner->GetNativeEditBkColor() == 0xFFFFFFFF ) return NULL; // ::SetBkMode((HDC)wParam, TRANSPARENT); // DWORD dwTextColor = m_pOwner->GetTextColor(); // ::SetTextColor((HDC)wParam, RGB(GetBValue(dwTextColor),GetGValue(dwTextColor),GetRValue(dwTextColor))); // if( m_hBkBrush == NULL ) { // DWORD clrColor = m_pOwner->GetNativeEditBkColor(); // m_hBkBrush = ::CreateSolidBrush(RGB(GetBValue(clrColor), GetGValue(clrColor), GetRValue(clrColor))); // } // return (LRESULT)m_hBkBrush; // } else bHandled = FALSE; if( !bHandled ) return CWindowWnd::HandleMessage(uMsg, wParam, lParam); return lRes; }
LRESULT CDateTimeWnd::OnKillFocus(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { LRESULT lRes = ::DefWindowProc(m_hWnd, uMsg, wParam, lParam); if (m_pOwner->m_nDTUpdateFlag == DT_NONE) { ::SendMessage(m_hWnd, DTM_GETSYSTEMTIME, 0, (LPARAM)&m_pOwner->m_sysTime); m_pOwner->m_nDTUpdateFlag = DT_UPDATE; m_pOwner->UpdateText(); } PostMessage(WM_CLOSE); return lRes; }
LRESULT CDateTimeWnd::OnKillFocus(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { LRESULT lRes = ::DefWindowProc(m_hWnd, uMsg, wParam, lParam); if (m_pOwner->m_nDTUpdateFlag == DT_NONE) { ::SendMessage(m_hWnd, DTM_GETSYSTEMTIME, 0, (LPARAM)&m_pOwner->m_sysTime); m_pOwner->m_nDTUpdateFlag = DT_UPDATE; m_pOwner->UpdateText(); } if ((HWND)wParam != m_pOwner->GetManager()->GetPaintWindow()) { ::SendMessage(m_pOwner->GetManager()->GetPaintWindow(), WM_KILLFOCUS, wParam, lParam); } SendMessage(WM_CLOSE); return lRes; }
LUA_METHOD_IMPL(CDateTimeUI,UpdateText) { try { CDateTimeUI* self; self = static_cast<CDateTimeUI*>(LuaStatic::CheckUserData(l, 1)); self->UpdateText(); return 0; } catch (...) { DuiException(_T("LuaCDateTimeUI::UpdateText")); return 0; } }
LRESULT CDateTimeWnd::HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam) { LRESULT lRes = 0; BOOL bHandled = TRUE; if( uMsg == WM_NOTIFY) { ::SetFocus(m_hWnd); } // 根据网络博客所知bug修复 if( uMsg == WM_KILLFOCUS ) { HWND hCanlender=::FindWindow( MONTHCAL_CLASS, NULL); if(::IsWindow(hCanlender)) { MCHITTESTINFO hitInfo; memset(&hitInfo,0,sizeof(hitInfo)); GetCursorPos(&hitInfo.pt); ::ScreenToClient(hCanlender,&hitInfo.pt); hitInfo.cbSize=sizeof(hitInfo); MonthCal_HitTest(hCanlender,&hitInfo); //下一个月 if(hitInfo.uHit==MCHT_TITLEBTNNEXT) { return 1; } //上一个月 if(hitInfo.uHit==MCHT_TITLEBTNPREV) { return 1; } } else { POINT pt; ::GetCursorPos(&pt); RECT rcWnd; ::GetWindowRect(m_hWnd,&rcWnd); if( !( pt.x >= rcWnd.left && pt.x <= rcWnd.right )|| !( pt.x >= rcWnd.top && pt.x <= rcWnd.bottom )) { lRes= OnKillFocus(uMsg,wParam, lParam,bHandled); } } } else if (uMsg == WM_KEYUP && (wParam == VK_DELETE || wParam == VK_BACK)) { LRESULT lRes = ::DefWindowProc(m_hWnd, uMsg, wParam, lParam); m_pOwner->m_nDTUpdateFlag = DT_DELETE; m_pOwner->UpdateText(); PostMessage(WM_CLOSE); return lRes; } else if (uMsg == WM_KEYUP && wParam == VK_ESCAPE) { LRESULT lRes = ::DefWindowProc(m_hWnd, uMsg, wParam, lParam); m_pOwner->m_nDTUpdateFlag = DT_KEEP; PostMessage(WM_CLOSE); return lRes; } // else if( uMsg == OCM_COMMAND ) { // if( GET_WM_COMMAND_CMD(wParam, lParam) == EN_CHANGE ) lRes = OnEditChanged(uMsg, wParam, lParam, bHandled); // else if( GET_WM_COMMAND_CMD(wParam, lParam) == EN_UPDATE ) { // RECT rcClient; // ::GetClientRect(m_hWnd, &rcClient); // ::InvalidateRect(m_hWnd, &rcClient, FALSE); // } // } else bHandled = FALSE; if( !bHandled ) return CWindowWnd::HandleMessage(uMsg, wParam, lParam); return lRes; }