LRESULT DesktopUI::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_NCCALCSIZE: lRes = OnNcCalcSize(uMsg, wParam, lParam, bHandled);break; //去除显示的标题栏 case WM_SIZE: lRes=OnSize(uMsg,wParam,lParam,bHandled);break; //解决按住左键或右键时会出现边框的问题 case WM_NCACTIVATE: lRes = OnNcActivate(uMsg, wParam, lParam, bHandled); break; //实现按住窗口(除按钮外)拖动窗口 case WM_NCHITTEST: lRes=OnNcHitTest(uMsg,wParam,lParam,bHandled);break; //获取边框最大最小值 case WM_GETMINMAXINFO: lRes=OnGetMinMaxInfo(uMsg,wParam,lParam,bHandled);break; case WM_DESTROY: ::PostQuitMessage(0);break; case WM_HIVE_CELL: lRes = loop(uMsg,wParam,lParam);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 CEICFrameWindow::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; #if defined(UI_BUILD_FOR_WIN32) && !defined(UI_BUILD_FOR_WINCE) 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_GETMINMAXINFO: lRes = OnGetMinMaxInfo(uMsg, wParam, lParam, bHandled); break; #endif case WM_SIZE: lRes = OnSize(uMsg, wParam, lParam, bHandled); break; case WM_SYSCOMMAND: lRes = OnSysCommand(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 WindowImplBase::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; #if defined(WIN32) && !defined(UNDER_CE) 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_GETMINMAXINFO: lRes = OnGetMinMaxInfo(uMsg, wParam, lParam, bHandled); break; case WM_MOUSEWHEEL: lRes = OnMouseWheel(uMsg, wParam, lParam, bHandled); break; #endif case WM_SIZE: lRes = OnSize(uMsg, wParam, lParam, bHandled); break; case WM_SYSCOMMAND: lRes = OnSysCommand(uMsg, wParam, lParam, bHandled); break; case WM_KEYDOWN: lRes = OnKeyDown(uMsg, wParam, lParam, bHandled); break; case WM_KILLFOCUS: lRes = OnKillFocus(uMsg, wParam, lParam, bHandled); break; case WM_SETFOCUS: lRes = OnSetFocus(uMsg, wParam, lParam, bHandled); break; case WM_LBUTTONUP: lRes = OnLButtonUp(uMsg, wParam, lParam, bHandled); break; case WM_LBUTTONDOWN: lRes = OnLButtonDown(uMsg, wParam, lParam, bHandled); break; case WM_MOUSEMOVE: lRes = OnMouseMove(uMsg, wParam, lParam, bHandled); break; default: bHandled = FALSE; break; } if (bHandled) return lRes; lRes = HandleCustomMessage(uMsg, wParam, lParam, bHandled); if (bHandled) return lRes; if (paint_manager_.MessageHandler(uMsg, wParam, lParam, lRes)) return lRes; return CWindowWnd::HandleMessage(uMsg, wParam, lParam); }
//消息循环 LRESULT CMainDlg::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_GETMINMAXINFO: lRes = OnGetMinMaxInfo(uMsg, wParam, lParam, bHandled); break; case WM_SYSCOMMAND: lRes = OnSysCommand(uMsg, wParam, lParam, bHandled); break; case WM_COPYDATA: lRes = OnCopyData(uMsg, wParam, lParam, bHandled); break; case WM_USER_PROG: lRes = OnUserProg(uMsg, wParam, lParam, bHandled); break; case WM_USER_TEXTPRINT:lRes = OnUserPrint(uMsg, wParam, lParam, bHandled); break; case WM_USER_DELETE_ITEM: lRes = OnUserCloseListItem(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 CHelloWorld::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_DESTROY: ::PostQuitMessage(0); bHandled = FALSE; break; case WM_NCHITTEST: lRes = OnNcHitTest(uMsg, wParam, lParam, bHandled); break; case WM_KEYDOWN: if (wParam == VK_ESCAPE) { OnClose(); } break; case WM_SIZE: lRes = OnSize(uMsg, wParam, lParam, bHandled); break; case WM_NCACTIVATE: lRes = OnNcActivate(uMsg, wParam, lParam, bHandled); break; case WM_GETMINMAXINFO: lRes = true; OnGetMinMaxInfo(uMsg, wParam, lParam, bHandled); break; case WM_SYSCOMMAND: lRes = OnSysCommand(uMsg, wParam, lParam, bHandled); break; case WM_NCCALCSIZE: lRes = OnNcCalcSize(uMsg, wParam, lParam, bHandled); break; default: bHandled = FALSE; break; } if (bHandled) return lRes; if (m_pm.MessageHandler(uMsg, wParam, lParam, lRes) != 0) return lRes; return CWindowWnd::HandleMessage(uMsg, wParam, lParam); }
LRESULT CSkinDialog::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam) { LRESULT lrst = TRUE; if (!::IsWindow(m_hWnd)) return lrst; //重绘标题栏 if (message==WM_NCPAINT||message==WM_NCACTIVATE) { DrawTitleBar(); return lrst; } //鼠标双击标题栏 if(message==WM_NCLBUTTONDBLCLK){ CPoint pt; ::GetCursorPos(&pt); OnNcLButtonDblClk(pt); return lrst; } //鼠标按下处理 if(message==WM_NCLBUTTONDOWN){ CPoint pt; ::GetCursorPos(&pt); if(OnNcLButtonDown(pt)){ return lrst; } } //重新计算标题栏高度 if(message==WM_NCCALCSIZE){ NCCALCSIZE_PARAMS* lpncsp = (NCCALCSIZE_PARAMS*)lParam; BOOL bCalcValidRects = (BOOL)wParam; OnNcCalcSize(bCalcValidRects,lpncsp); } //鼠标焦点处理 if(message==WM_NCMOUSEMOVE){ CPoint pt; ::GetCursorPos(&pt); OnNcMouseMove(pt); } //鼠标弹起处理 if(message==WM_NCLBUTTONUP){ CPoint pt; ::GetCursorPos(&pt); OnNcLButtonUp(pt); } //鼠标离开标题栏处理 if(message==WM_NCMOUSELEAVE){ OnNcMouseLeave(); } //默认消息处理 return CDialog::DefWindowProc(message, wParam, lParam); }
BOOL CLayoutManager::OnWndMsg(UINT message, WPARAM wParam, LPARAM lParam, LRESULT * pResult, BOOL bPeek) { int i; if (! m_bActive) return FALSE; switch (message) { case WM_GETMINMAXINFO: if (! bPeek) { MINMAXINFO * pMMI = (LPMINMAXINFO) lParam; pMMI->ptMinTrackSize.x = m_dwMinWidth; pMMI->ptMinTrackSize.y = m_dwMinHeight; } break; case WM_NCCALCSIZE: if (wParam) OnNcCalcSize(bPeek, (LPNCCALCSIZE_PARAMS)lParam, pResult); break; case WM_ERASEBKGND: OnEraseBkgnd(bPeek, (HDC)wParam); break; case WM_SIZE: if (! bPeek) OnSize(LOWORD(lParam), HIWORD(lParam)); break; case WM_MOVING: if (bPeek) { OnMoving(wParam, (RECT*)lParam); *pResult = TRUE; return TRUE; } break; case WM_ENTERSIZEMOVE: case WM_EXITSIZEMOVE: if (! bPeek) break; for (i=0; i<m_vControls.size(); i++) m_vControls[i].pWnd->SendMessage(message, wParam, lParam); break; } return FALSE; }
LRESULT CWin::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; #if defined(WIN32) && !defined(UNDER_CE) //case WM_NCCREATE: lRes = OnNcCreate(uMsg, wParam, lParam, bHandled); break; case WM_NCMOUSEMOVE: lRes = OnNCMouseMove(uMsg, wParam, lParam, bHandled); break; case WM_NCMOUSELEAVE: lRes = OnNCMouseLeave(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_GETMINMAXINFO: lRes = OnGetMinMaxInfo(uMsg, wParam, lParam, bHandled); break; case WM_MOUSEWHEEL: lRes = OnMouseWheel(uMsg, wParam, lParam, bHandled); break; #endif case WM_ERASEBKGND: lRes = OnEraseBkGnd(uMsg, wParam, lParam, bHandled); break; case WM_SIZE: lRes = OnSize(uMsg, wParam, lParam, bHandled); break; case WM_CHAR: lRes = OnChar(uMsg, wParam, lParam, bHandled); break; case WM_SYSCOMMAND: lRes = OnSysCommand(uMsg, wParam, lParam, bHandled); break; case WM_KEYDOWN: lRes = OnKeyDown(uMsg, wParam, lParam, bHandled); break; case WM_KILLFOCUS: lRes = OnKillFocus(uMsg, wParam, lParam, bHandled); break; case WM_SETFOCUS: lRes = OnSetFocus(uMsg, wParam, lParam, bHandled); break; case WM_LBUTTONUP: lRes = OnLButtonUp(uMsg, wParam, lParam, bHandled); break; case WM_LBUTTONDOWN: lRes = OnLButtonDown(uMsg, wParam, lParam, bHandled); break; case WM_MOUSEMOVE: lRes = OnMouseMove(uMsg, wParam, lParam, bHandled); break; case WM_MOUSELEAVE: lRes = OnMouseLeave(uMsg, wParam, lParam, bHandled); break; case WM_MOUSEHOVER: lRes = OnMouseHover(uMsg, wParam, lParam, bHandled); break; case WM_HOTKEY: lRes = OnHotKey(uMsg, wParam, lParam, bHandled); break; // case WM_TIMER: lRes = OnTimer(uMsg, wParam, lParam, bHandled); break;//OnTimer响应有小问题 case WM_MOVING: lRes = OnMoving(uMsg, wParam, lParam, bHandled); break; case WM_SIZING: lRes = OnSizing(uMsg, wParam, lParam, bHandled); break; case WM_SHOWWINDOW: lRes = OnShowWindow(uMsg, wParam, lParam, bHandled); break; case WM_COMMAND: lRes = OnCommand(uMsg, wParam, lParam, bHandled); break; // case WM_PAINT: lRes = OnPaint(uMsg, wParam, lParam, bHandled); break;//OnPaint响应有问题 case WM_MENUCOMMAND: lRes = OnMenuCommand(uMsg, wParam, lParam, bHandled); break; default: bHandled = FALSE; break; } if (bHandled) return lRes; lRes = ProcessWindowMessage(uMsg, wParam, lParam, bHandled); if (bHandled) return lRes; if(_paintManager && _paintManager->MessageHandler(uMsg,wParam,lParam,lRes)) return lRes; return __super::HandleMessage(uMsg,wParam,lParam); }
LRESULT CALLBACK CSShadow::WndProc2(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { switch(message) { case WM_PAINT: OnPaint(hWnd, message, wParam, lParam); return DefWindowProc(hWnd, message, wParam, lParam); case WM_SIZE: OnSize(hWnd, message, wParam, lParam); Draw(); break; case WM_NCCALCSIZE: OnNcCalcSize(hWnd, message, wParam, lParam); break; case WM_NCHITTEST: return OnNcHitTest(hWnd, message, wParam, lParam); case WM_ACTIVATE: if (wParam) { if ((HWND)lParam != m_hWnd_parent) { //Log2("[Shadow] Activate! hWnd:%08X\n", lParam); m_bActive = TRUE; Draw(); SendMessage(m_hWnd_parent, WM_USER + 0x11, 1, 0); } } else if(!wParam) { if ((HWND)lParam != m_hWnd_parent) { // Log2("[Shadow] Inactivate! hWnd:%08X\n", lParam); m_bActive = FALSE; Draw(); SendMessage(m_hWnd_parent, WM_USER + 0x11, 0, 0); } } return DefWindowProc(hWnd, message, wParam, lParam); break; default: return DefWindowProc(hWnd, message, wParam, lParam); } return 0; }
LRESULT WindowImplBase::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; #if defined(WIN32) && !defined(UNDER_CE) 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_GETMINMAXINFO: lRes = OnGetMinMaxInfo(uMsg, wParam, lParam, bHandled); break; #endif case WM_SIZE: lRes = OnSize(uMsg, wParam, lParam, bHandled); break; default: bHandled = FALSE; break; } if (bHandled) return lRes; lRes = HandleCustomMessage(uMsg, wParam, lParam, bHandled); if (bHandled) return lRes; if (m_PaintManager.MessageHandler(uMsg, wParam, lParam, lRes)) return lRes; return CWindowWnd::HandleMessage(uMsg, wParam, lParam); }
LRESULT imsdkDemoLogin::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_GETMINMAXINFO: lRes = OnGetMinMaxInfo(uMsg, wParam, lParam, bHandled); break; case WM_SYSCOMMAND: lRes = OnSysCommand(uMsg, wParam, lParam, bHandled); break; case WM_TIMER: lRes = OnTimer(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 CLoginFrameWnd::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_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; default: bHandled = FALSE; } if( bHandled ) return lRes; if( m_pm.MessageHandler(uMsg, wParam, lParam, lRes) ) return lRes; return CWindowWnd::HandleMessage(uMsg, wParam, lParam); }
LRESULT CDuilib3dFrame::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_GETMINMAXINFO: lRes = OnGetMinMaxInfo(uMsg, wParam, lParam, bHandled); break; case WM_SYSCOMMAND: lRes = OnSysCommand(uMsg, wParam, lParam, bHandled); break; case WM_USER+1: { CControlUI* pControl = (CControlUI*)lParam; pControl->SetVisible(true); }break; default: bHandled = FALSE; } if( bHandled ) { return lRes; } if( m_PaintManager.MessageHandler(uMsg, wParam, lParam, lRes) ) { return lRes; } return CWindowWnd::HandleMessage(uMsg, wParam, lParam); }
// returns false if message not handled bool CFrameHolder::ProcessNcMessage(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT& lResult) { #ifdef _DEBUG if (mb_NcAnimate) { wchar_t szDbg[1024], szMsg[128], szInfo[255]; szInfo[0] = 0; switch (uMsg) { case WM_ERASEBKGND: lstrcpy(szMsg, L"WM_ERASEBKGND"); break; case WM_PAINT: lstrcpy(szMsg, L"WM_PAINT"); break; case WM_NCPAINT: lstrcpy(szMsg, L"WM_NCPAINT"); break; case WM_NCACTIVATE: lstrcpy(szMsg, L"WM_NCACTIVATE"); break; case WM_NCCALCSIZE: lstrcpy(szMsg, L"WM_NCCALCSIZE"); break; case WM_NCHITTEST: lstrcpy(szMsg, L"WM_NCHITTEST"); break; case WM_NCLBUTTONDOWN: lstrcpy(szMsg, L"WM_NCLBUTTONDOWN"); break; case WM_NCMOUSEMOVE: lstrcpy(szMsg, L"WM_NCMOUSEMOVE"); break; case WM_NCMOUSELEAVE: lstrcpy(szMsg, L"WM_NCMOUSELEAVE"); break; case WM_NCMOUSEHOVER: lstrcpy(szMsg, L"WM_NCMOUSEHOVER"); break; case WM_NCLBUTTONDBLCLK: lstrcpy(szMsg, L"WM_NCLBUTTONDBLCLK"); break; case 0xAE: /*WM_NCUAHDRAWCAPTION*/ lstrcpy(szMsg, L"WM_NCUAHDRAWCAPTION"); break; case 0xAF: /*WM_NCUAHDRAWFRAME*/ lstrcpy(szMsg, L"WM_NCUAHDRAWFRAME"); break; case 0x31E: /*WM_DWMCOMPOSITIONCHANGED*/ lstrcpy(szMsg, L"WM_DWMCOMPOSITIONCHANGED"); break; case WM_WINDOWPOSCHANGED: lstrcpy(szMsg, L"WM_WINDOWPOSCHANGED"); break; case WM_SYSCOMMAND: lstrcpy(szMsg, L"WM_SYSCOMMAND"); break; case WM_GETTEXT: lstrcpy(szMsg, L"WM_GETTEXT"); break; case WM_PRINT: lstrcpy(szMsg, L"WM_PRINT"); break; case WM_PRINTCLIENT: lstrcpy(szMsg, L"WM_PRINTCLIENT"); break; case WM_GETMINMAXINFO: lstrcpy(szMsg, L"WM_GETMINMAXINFO"); break; case WM_WINDOWPOSCHANGING: lstrcpy(szMsg, L"WM_WINDOWPOSCHANGING"); break; case WM_MOVE: lstrcpy(szMsg, L"WM_MOVE"); wsprintf(szInfo, L"{%ix%i}", (int)(short)LOWORD(lParam), (int)(short)HIWORD(lParam)); break; case WM_SIZE: lstrcpy(szMsg, L"WM_SIZE"); wsprintf(szInfo, L"%s {%ix%i}", (wParam==SIZE_MAXHIDE) ? L"SIZE_MAXHIDE" : (wParam==SIZE_MAXIMIZED) ? L"SIZE_MAXIMIZED" : (wParam==SIZE_MAXSHOW) ? L"SIZE_MAXSHOW" : (wParam==SIZE_MINIMIZED) ? L"SIZE_MINIMIZED" : (wParam==SIZE_RESTORED) ? L"SIZE_RESTORED" : L"???", (int)(short)LOWORD(lParam), (int)(short)HIWORD(lParam)); break; default: wsprintf(szMsg, L"%u=x%X", uMsg, uMsg); } wsprintf(szDbg, L"MsgInAnimage(%s, %u, %u%s%s)\n", szMsg, (DWORD)wParam, (DWORD)lParam, szInfo[0] ? L" - " : L"", szInfo); OutputDebugString(szDbg); } #endif bool lbRc; static POINT ptLastNcClick = {}; switch (uMsg) { case WM_ERASEBKGND: DBGFUNCTION(L"WM_ERASEBKGND \n"); lResult = TRUE; return true; case WM_PAINT: DBGFUNCTION(L"WM_PAINT \n"); lResult = OnPaint(hWnd, NULL/*use BeginPaint,EndPaint*/, WM_PAINT); return true; case WM_NCPAINT: DBGFUNCTION(L"WM_NCPAINT \n"); lResult = OnNcPaint(hWnd, uMsg, wParam, lParam); return true; case WM_NCACTIVATE: DBGFUNCTION(L"WM_NCACTIVATE \n"); lResult = OnNcActivate(hWnd, uMsg, wParam, lParam); return true; case WM_NCCALCSIZE: DBGFUNCTION(L"WM_NCCALCSIZE \n"); lResult = OnNcCalcSize(hWnd, uMsg, wParam, lParam); return true; case WM_NCHITTEST: DBGFUNCTION(L"WM_NCHITTEST \n"); lResult = OnNcHitTest(hWnd, uMsg, wParam, lParam); return true; case WM_NCLBUTTONDOWN: case WM_NCLBUTTONUP: case WM_NCRBUTTONDOWN: case WM_NCRBUTTONUP: case WM_NCMBUTTONDOWN: case WM_NCMBUTTONUP: case WM_NCMOUSEMOVE: case WM_NCMOUSELEAVE: case WM_NCMOUSEHOVER: #ifdef _DEBUG switch (uMsg) { case WM_NCLBUTTONDOWN: DBGFUNCTION(L"WM_NCLBUTTONDOWN \n"); break; case WM_NCLBUTTONUP: DBGFUNCTION(L"WM_NCLBUTTONUP \n"); break; case WM_NCRBUTTONDOWN: DBGFUNCTION(L"WM_NCRBUTTONDOWN \n"); break; case WM_NCRBUTTONUP: DBGFUNCTION(L"WM_NCRBUTTONUP \n"); break; case WM_NCMBUTTONDOWN: DBGFUNCTION(L"WM_NCMBUTTONDOWN \n"); break; case WM_NCMBUTTONUP: DBGFUNCTION(L"WM_NCMBUTTONUP \n"); break; case WM_NCMOUSEMOVE: DBGFUNCTION(L"WM_NCMOUSEMOVE \n"); break; case WM_NCMOUSELEAVE: DBGFUNCTION(L"WM_NCMOUSELEAVE \n"); break; case WM_NCMOUSEHOVER: DBGFUNCTION(L"WM_NCMOUSEHOVER \n"); break; } #endif ptLastNcClick = MakePoint(LOWORD(lParam),HIWORD(lParam)); if ((uMsg == WM_NCMOUSEMOVE) || (uMsg == WM_NCLBUTTONUP)) gpConEmu->isSizing(uMsg); // могло не сброситься, проверим if (gpSet->isTabsInCaption) { //RedrawLock(); lbRc = gpConEmu->mp_TabBar->ProcessNcTabMouseEvent(hWnd, uMsg, wParam, lParam, lResult); //RedrawUnlock(); } else { // Табов чисто в заголовке - нет lbRc = false; } if (!lbRc) { if ((wParam == HTSYSMENU) && (uMsg == WM_NCLBUTTONDOWN)) { gpConEmu->mp_Menu->OnNcIconLClick(); lResult = 0; lbRc = true; } else if ((wParam == HTSYSMENU || wParam == HTCAPTION) && (uMsg == WM_NCRBUTTONDOWN || uMsg == WM_NCRBUTTONUP)) { if (uMsg == WM_NCRBUTTONUP) { LogString(L"ShowSysmenu called from (WM_NCRBUTTONUP)"); gpConEmu->mp_Menu->ShowSysmenu((short)LOWORD(lParam), (short)HIWORD(lParam)); } lResult = 0; lbRc = true; } else if ((uMsg == WM_NCRBUTTONDOWN || uMsg == WM_NCRBUTTONUP) && (wParam == HTCLOSE || wParam == HTMINBUTTON || wParam == HTMAXBUTTON)) { switch (LOWORD(wParam)) { case HTMINBUTTON: case HTCLOSE: Icon.HideWindowToTray(); break; case HTMAXBUTTON: gpConEmu->DoFullScreen(); break; } lResult = 0; lbRc = true; } } return lbRc; //case WM_LBUTTONDBLCLK: // { // // Глюк? DblClick по иконке приводит к WM_LBUTTONDBLCLK вместо WM_NCLBUTTONDBLCLK // POINT pt = MakePoint(LOWORD(lParam),HIWORD(lParam)); // if (gpConEmu->PtDiffTest(pt, ptLastNcClick.x, ptLastNcClick.y, 4)) // { // PostScClose(); // lResult = 0; // return true; // } // } // return false; case WM_MOUSEMOVE: DBGFUNCTION(L"WM_MOUSEMOVE \n"); // Табов чисто в заголовке - нет #if 0 RedrawLock(); if (gpConEmu->mp_TabBar->GetHoverTab() != -1) { gpConEmu->mp_TabBar->HoverTab(-1); } #if defined(USE_CONEMU_TOOLBAR) // Ну и с кнопок убрать подсветку, если была gpConEmu->mp_TabBar->Toolbar_UnHover(); #endif RedrawUnlock(); #endif return false; case WM_NCLBUTTONDBLCLK: if (wParam == HTCAPTION) { mb_NcAnimate = TRUE; } if (wParam == HT_CONEMUTAB) { _ASSERTE(gpSet->isTabsInCaption && "There is not tabs in 'Caption'"); //RedrawLock(); -- чтобы отрисовать "клик" по кнопке lbRc = gpConEmu->mp_TabBar->ProcessNcTabMouseEvent(hWnd, uMsg, wParam, lParam, lResult); //RedrawUnlock(); } else if (gpConEmu->OnMouse_NCBtnDblClk(hWnd, uMsg, wParam, lParam)) { lResult = 0; // DblClick на рамке - ресайз по ширине/высоте рабочей области экрана } else { lResult = DefWindowProc(hWnd, uMsg, wParam, lParam); } if (wParam == HTCAPTION) { mb_NcAnimate = FALSE; } return true; case WM_KEYDOWN: case WM_KEYUP: if (gpSet->isTabSelf && (wParam == VK_TAB || gpConEmu->mp_TabBar->IsInSwitch())) { if (isPressed(VK_CONTROL) && !isPressed(VK_MENU) && !isPressed(VK_LWIN) && !isPressed(VK_RWIN)) { if (gpConEmu->mp_TabBar->ProcessTabKeyboardEvent(hWnd, uMsg, wParam, lParam, lResult)) { return true; } } } return false; //case WM_NCCREATE: gpConEmu->CheckGlassAttribute(); return false; case 0xAE: /*WM_NCUAHDRAWCAPTION*/ lResult = OnDwmMessage(hWnd, uMsg, wParam, lParam); return true; case 0xAF: /*WM_NCUAHDRAWFRAME*/ lResult = OnDwmMessage(hWnd, uMsg, wParam, lParam); return true; case 0x31E: /*WM_DWMCOMPOSITIONCHANGED*/ lResult = OnDwmMessage(hWnd, uMsg, wParam, lParam); return true; case WM_SYSCOMMAND: if (wParam == SC_MAXIMIZE || wParam == SC_MINIMIZE || wParam == SC_RESTORE) { // Win 10 build 9926 bug? if ((wParam == SC_MAXIMIZE) && IsWin10()) { if (!gpConEmu->isMeForeground(false,false)) { return true; } } mb_NcAnimate = TRUE; //GetWindowText(hWnd, ms_LastCaption, countof(ms_LastCaption)); //SetWindowText(hWnd, L""); } lResult = gpConEmu->mp_Menu->OnSysCommand(hWnd, wParam, lParam, WM_SYSCOMMAND); if (wParam == SC_MAXIMIZE || wParam == SC_MINIMIZE || wParam == SC_RESTORE) { mb_NcAnimate = FALSE; //SetWindowText(hWnd, ms_LastCaption); } return true; case WM_GETTEXT: //TODO: Во время анимации Maximize/Restore/Minimize заголовок отрисовывается //TODO: системой, в итоге мелькает текст и срезаются табы //TODO: Сделаем, пока, чтобы текст хотя бы не мелькал... if (mb_NcAnimate && gpSet->isTabsInCaption) { _ASSERTE(!IsWindows7); // Проверить на XP и ниже if (wParam && lParam) { *(wchar_t*)lParam = 0; } lResult = 0; return true; } break; default: break; } return false; }
// returns false if message not handled bool CFrameHolder::ProcessNcMessage(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT& lResult) { #ifdef _DEBUG if (mb_NcAnimate) { wchar_t szDbg[1024], szMsg[128], szInfo[255]; szInfo[0] = 0; switch (uMsg) { case WM_ERASEBKGND: lstrcpy(szMsg, L"WM_ERASEBKGND"); break; case WM_PAINT: lstrcpy(szMsg, L"WM_PAINT"); break; case WM_NCPAINT: lstrcpy(szMsg, L"WM_NCPAINT"); break; case WM_NCACTIVATE: lstrcpy(szMsg, L"WM_NCACTIVATE"); break; case WM_NCCALCSIZE: lstrcpy(szMsg, L"WM_NCCALCSIZE"); break; case WM_NCHITTEST: lstrcpy(szMsg, L"WM_NCHITTEST"); break; case WM_NCLBUTTONDOWN: lstrcpy(szMsg, L"WM_NCLBUTTONDOWN"); break; case WM_NCMOUSEMOVE: lstrcpy(szMsg, L"WM_NCMOUSEMOVE"); break; case WM_NCMOUSELEAVE: lstrcpy(szMsg, L"WM_NCMOUSELEAVE"); break; case WM_NCMOUSEHOVER: lstrcpy(szMsg, L"WM_NCMOUSEHOVER"); break; case WM_NCLBUTTONDBLCLK: lstrcpy(szMsg, L"WM_NCLBUTTONDBLCLK"); break; case 0xAE: /*WM_NCUAHDRAWCAPTION*/ lstrcpy(szMsg, L"WM_NCUAHDRAWCAPTION"); break; case 0xAF: /*WM_NCUAHDRAWFRAME*/ lstrcpy(szMsg, L"WM_NCUAHDRAWFRAME"); break; case 0x31E: /*WM_DWMCOMPOSITIONCHANGED*/ lstrcpy(szMsg, L"WM_DWMCOMPOSITIONCHANGED"); break; case WM_WINDOWPOSCHANGED: lstrcpy(szMsg, L"WM_WINDOWPOSCHANGED"); break; case WM_SYSCOMMAND: lstrcpy(szMsg, L"WM_SYSCOMMAND"); break; case WM_GETTEXT: lstrcpy(szMsg, L"WM_GETTEXT"); break; case WM_PRINT: lstrcpy(szMsg, L"WM_PRINT"); break; case WM_PRINTCLIENT: lstrcpy(szMsg, L"WM_PRINTCLIENT"); break; case WM_GETMINMAXINFO: lstrcpy(szMsg, L"WM_GETMINMAXINFO"); break; case WM_WINDOWPOSCHANGING: lstrcpy(szMsg, L"WM_WINDOWPOSCHANGING"); break; case WM_MOVE: lstrcpy(szMsg, L"WM_MOVE"); wsprintf(szInfo, L"{%ix%i}", (int)(short)LOWORD(lParam), (int)(short)HIWORD(lParam)); break; case WM_SIZE: lstrcpy(szMsg, L"WM_SIZE"); wsprintf(szInfo, L"%s {%ix%i}", (wParam==SIZE_MAXHIDE) ? L"SIZE_MAXHIDE" : (wParam==SIZE_MAXIMIZED) ? L"SIZE_MAXIMIZED" : (wParam==SIZE_MAXSHOW) ? L"SIZE_MAXSHOW" : (wParam==SIZE_MINIMIZED) ? L"SIZE_MINIMIZED" : (wParam==SIZE_RESTORED) ? L"SIZE_RESTORED" : L"???", (int)(short)LOWORD(lParam), (int)(short)HIWORD(lParam)); break; default: wsprintf(szMsg, L"%u=x%X", uMsg, uMsg); } wsprintf(szDbg, L"MsgInAnimage(%s, %u, %u%s%s)\n", szMsg, (DWORD)wParam, (DWORD)lParam, szInfo[0] ? L" - " : L"", szInfo); OutputDebugString(szDbg); } #endif bool lbRc; static POINT ptLastNcClick = {}; switch (uMsg) { case WM_ERASEBKGND: DBGFUNCTION(L"WM_ERASEBKGND \n"); lResult = TRUE; return true; //return false; case WM_PAINT: DBGFUNCTION(L"WM_PAINT \n"); lResult = OnPaint(hWnd, FALSE); return true; case WM_NCPAINT: DBGFUNCTION(L"WM_NCPAINT \n"); lResult = OnNcPaint(hWnd, uMsg, wParam, lParam); return true; case WM_NCACTIVATE: DBGFUNCTION(L"WM_NCACTIVATE \n"); lResult = OnNcActivate(hWnd, uMsg, wParam, lParam); return true; case WM_NCCALCSIZE: DBGFUNCTION(L"WM_NCCALCSIZE \n"); lResult = OnNcCalcSize(hWnd, uMsg, wParam, lParam); return true; case WM_NCHITTEST: DBGFUNCTION(L"WM_NCHITTEST \n"); lResult = OnNcHitTest(hWnd, uMsg, wParam, lParam); return true; case WM_NCLBUTTONDOWN: case WM_NCLBUTTONUP: case WM_NCRBUTTONDOWN: case WM_NCRBUTTONUP: case WM_NCMBUTTONDOWN: case WM_NCMBUTTONUP: case WM_NCMOUSEMOVE: case WM_NCMOUSELEAVE: case WM_NCMOUSEHOVER: #ifdef _DEBUG switch (uMsg) { case WM_NCLBUTTONDOWN: DBGFUNCTION(L"WM_NCLBUTTONDOWN \n"); break; case WM_NCLBUTTONUP: DBGFUNCTION(L"WM_NCLBUTTONUP \n"); break; case WM_NCRBUTTONDOWN: DBGFUNCTION(L"WM_NCRBUTTONDOWN \n"); break; case WM_NCRBUTTONUP: DBGFUNCTION(L"WM_NCRBUTTONUP \n"); break; case WM_NCMBUTTONDOWN: DBGFUNCTION(L"WM_NCMBUTTONDOWN \n"); break; case WM_NCMBUTTONUP: DBGFUNCTION(L"WM_NCMBUTTONUP \n"); break; case WM_NCMOUSEMOVE: DBGFUNCTION(L"WM_NCMOUSEMOVE \n"); break; case WM_NCMOUSELEAVE: DBGFUNCTION(L"WM_NCMOUSELEAVE \n"); break; case WM_NCMOUSEHOVER: DBGFUNCTION(L"WM_NCMOUSEHOVER \n"); break; } #endif ptLastNcClick = MakePoint(LOWORD(lParam),HIWORD(lParam)); if ((uMsg == WM_NCMOUSEMOVE) || (uMsg == WM_NCLBUTTONUP)) gpConEmu->isSizing(); // могло не сброситься, проверим RedrawLock(); lbRc = gpConEmu->mp_TabBar->ProcessTabMouseEvent(hWnd, uMsg, wParam, lParam, lResult); RedrawUnlock(); if (!lbRc) { if ((wParam == HTSYSMENU && uMsg == WM_NCLBUTTONDOWN) /*|| (wParam == HTCAPTION && uMsg == WM_NCRBUTTONDOWN)*/) { //if (uMsg == WM_NCRBUTTONDOWN) // gpConEmu->ShowSysmenu((SHORT)LOWORD(lParam),(SHORT)HIWORD(lParam)); //else DWORD nCurTick = GetTickCount(); DWORD nOpenDelay = nCurTick - gpConEmu->mn_SysMenuOpenTick; DWORD nCloseDelay = nCurTick - gpConEmu->mn_SysMenuCloseTick; DWORD nDoubleTime = GetDoubleClickTime(); if (gpConEmu->mn_SysMenuOpenTick && (nOpenDelay < nDoubleTime)) { PostMessage(ghWnd, WM_SYSCOMMAND, SC_CLOSE, 0); } else if (gpConEmu->mn_SysMenuCloseTick && (nCloseDelay < (nDoubleTime/2))) { // Пропустить - кликом закрыли меню int nDbg = 0; } else { gpConEmu->ShowSysmenu(); } lResult = 0; lbRc = true; } } return lbRc; //case WM_LBUTTONDBLCLK: // { // // Глюк? DblClick по иконке приводит к WM_LBUTTONDBLCLK вместо WM_NCLBUTTONDBLCLK // POINT pt = MakePoint(LOWORD(lParam),HIWORD(lParam)); // if (gpConEmu->PtDiffTest(pt, ptLastNcClick.x, ptLastNcClick.y, 4)) // { // PostMessage(ghWnd, WM_SYSCOMMAND, SC_CLOSE, 0); // lResult = 0; // return true; // } // } // return false; case WM_MOUSEMOVE: DBGFUNCTION(L"WM_MOUSEMOVE \n"); RedrawLock(); if (gpConEmu->mp_TabBar->GetHoverTab() != -1) { gpConEmu->mp_TabBar->HoverTab(-1); } // Ну и с кнопок убрать подсветку, если была gpConEmu->mp_TabBar->Toolbar_UnHover(); RedrawUnlock(); return false; case WM_NCLBUTTONDBLCLK: if (wParam == HTCAPTION) { mb_NcAnimate = TRUE; } if (wParam == HT_CONEMUTAB) { //RedrawLock(); -- чтобы отрисовать "клик" по кнопке lbRc = gpConEmu->mp_TabBar->ProcessTabMouseEvent(hWnd, uMsg, wParam, lParam, lResult); //RedrawUnlock(); } else if (gpConEmu->OnMouse_NCBtnDblClk(hWnd, uMsg, wParam, lParam)) { lResult = 0; // DblClick на рамке - ресайз по ширине/высоте рабочей области экрана } else { lResult = DefWindowProc(hWnd, uMsg, wParam, lParam); } if (wParam == HTCAPTION) { mb_NcAnimate = FALSE; } return true; case WM_KEYDOWN: case WM_KEYUP: if (gpSet->isTabSelf && (wParam == VK_TAB || gpConEmu->mp_TabBar->IsInSwitch())) { if (isPressed(VK_CONTROL) && !isPressed(VK_MENU) && !isPressed(VK_LWIN) && !isPressed(VK_RWIN)) { if (gpConEmu->mp_TabBar->ProcessTabKeyboardEvent(hWnd, uMsg, wParam, lParam, lResult)) { return true; } } } return false; //case WM_NCCREATE: gpConEmu->CheckGlassAttribute(); return false; case 0xAE: /*WM_NCUAHDRAWCAPTION*/ lResult = OnDwmMessage(hWnd, uMsg, wParam, lParam); return true; case 0xAF: /*WM_NCUAHDRAWFRAME*/ lResult = OnDwmMessage(hWnd, uMsg, wParam, lParam); return true; case 0x31E: /*WM_DWMCOMPOSITIONCHANGED*/ lResult = OnDwmMessage(hWnd, uMsg, wParam, lParam); return true; case WM_WINDOWPOSCHANGED: lResult = OnWindowPosChanged(hWnd, uMsg, wParam, lParam); return true; case WM_SYSCOMMAND: if (wParam == SC_MAXIMIZE || wParam == SC_MINIMIZE || wParam == SC_RESTORE) { mb_NcAnimate = TRUE; //GetWindowText(hWnd, ms_LastCaption, countof(ms_LastCaption)); //SetWindowText(hWnd, L""); } lResult = gpConEmu->OnSysCommand(hWnd, wParam, lParam); if (wParam == SC_MAXIMIZE || wParam == SC_MINIMIZE || wParam == SC_RESTORE) { mb_NcAnimate = FALSE; //SetWindowText(hWnd, ms_LastCaption); } return true; case WM_GETTEXT: //TODO: Во время анимации Maximize/Restore/Minimize заголовок отрисовывается //TODO: системой, в итоге мелькает текст и срезаются табы //TODO: Сделаем, пока, чтобы текст хотя бы не мелькал... if (mb_NcAnimate && gpSet->isTabsInCaption) { if (wParam && lParam) { *(wchar_t*)lParam = 0; } lResult = 0; return true; } break; default: break; } return false; }
LRESULT CSkinWin::WindowProc(UINT msg, WPARAM wp, LPARAM lp) { if ( !IsWindow(m_hWnd) ) return 0; if ( !m_bInit ) return Default(); switch ( msg ) { case WM_SHOWWINDOW: //call setwindowpos to force OnNcCalcSize when hWnd is a dialog if ( wp ) SetWindowPos( m_hWnd, 0, 0, 0, 400, 400, SWP_NOSIZE|SWP_NOMOVE|SWP_FRAMECHANGED ); Default(); return 0; break; //case WM_ERASEBKGND: case WM_INITMENUPOPUP: Default(); return 0; // return OnEraseBkgnd(CDC::FromHandle((HDC)wp) ); /* case WM_INITMENU: //a hack, when popup sysmenu, redraw title bar HMENU h; h = (HMENU)wp; int c; h = GetSubMenu(h, 0); c = GetMenuItemID( h, 0 ); if ( c == SC_RESTORE ) { CRect r; GetClientRect( m_hWnd, r ); OnNcPaint(0); r.bottom = GetSystemMetrics(SM_CYCAPTION); InvalidateRect( m_hWnd, r, TRUE ); UpdateWindow( m_hWnd ); } Default(); return 0; */ case WM_SYSCOMMAND: OnSysCommand( wp, lp ); return 0; case WM_SETTEXT: return OnSetText( wp, lp ); case WM_NCPAINT: OnNcPaint( (HRGN)wp ); return 0; case WM_NCCALCSIZE: OnNcCalcSize( (BOOL)wp, (NCCALCSIZE_PARAMS *)lp ); return 0; case WM_SIZE: OnSize( wp, LOWORD(lp), HIWORD(lp) ); return 0; case WM_NCACTIVATE: return OnNcActivate( (BOOL)wp ); case WM_NCHITTEST: return OnNcHitTest(CPoint(LOWORD(lp), HIWORD(lp))); case WM_NCLBUTTONUP: OnNcLButtonUp(wp, CPoint(LOWORD(lp), HIWORD(lp))); return 0; case WM_NCLBUTTONDOWN: OnNcLButtonDown(wp, CPoint(LOWORD(lp), HIWORD(lp))); return 0; /* case WM_NCLBUTTONDBLCLK: OnNcLButtonDblClk(wp, CPoint(LOWORD(lp), HIWORD(lp))); return 0;*///liub_modify (去除双击弹出面板的响应事件) case WM_NCRBUTTONUP: OnNcRButtonUp(wp, CPoint(LOWORD(lp), HIWORD(lp))); return 0; case WM_NCRBUTTONDOWN: OnNcRButtonDown(wp, CPoint(LOWORD(lp), HIWORD(lp))); return 0; case WM_NCMOUSEMOVE: OnNcMouseMove( wp,CPoint(LOWORD(lp), HIWORD(lp))); return 0; case WM_GETMINMAXINFO: OnGetMinMaxInfo( (MINMAXINFO *)lp ); return 0; case WM_WINDOWPOSCHANGING: OnWindowPosChanging((WINDOWPOS *)lp); return 0; case WM_SIZING: OnSizing( wp, (LPRECT)lp ); return 0; case WM_ACTIVATE: OnActivate( wp, CWnd::FromHandle((HWND)lp), 0 ); return 0; case WM_COMMAND: if ( !HandleSysCommand( wp, lp ) ) Default(); return 0; #if 1 // @@ case WM_SETCURSOR: if (OnHitTestSetCursor(LOWORD(lp))) OnNcPaint(0); else Default(); return 0; #endif default: return Default(); } }
LRESULT WindowImplBase::HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam) { LRESULT lRes = 0; BOOL bHandled = TRUE; CPoint pt; 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; #if defined(WIN32) && !defined(UNDER_CE) 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_GETMINMAXINFO: lRes = OnGetMinMaxInfo(uMsg, wParam, lParam, bHandled); break; case WM_MOUSEWHEEL: { pt.x = GET_X_LPARAM( lParam ); pt.y = GET_Y_LPARAM( lParam ); lRes = OnMouseWheel(uMsg,GET_KEYSTATE_WPARAM(wParam),GET_WHEEL_DELTA_WPARAM(wParam),pt,bHandled); break; } #endif case WM_SIZE: lRes = OnSize(uMsg, wParam, lParam, bHandled); break; case WM_CHAR: lRes = OnChar(uMsg, wParam, lParam, bHandled); break; case WM_SYSCOMMAND: lRes = OnSysCommand(uMsg, wParam, lParam, bHandled); break; case WM_KEYDOWN: { lRes = OnKeyDown( uMsg,wParam, lParam&0xff, lParam>>16 ,bHandled); break; } case WM_KEYUP: { lRes = OnKeyUp(uMsg, wParam, lParam&0xff, lParam>>16,bHandled ); break; } case WM_SYSKEYDOWN: { lRes=OnSysKeyDown(uMsg,wParam,lParam&0xff,lParam>>16,bHandled); break; } case WM_SYSKEYUP: { lRes=OnSysKeyUp(uMsg,wParam,lParam&0xff,lParam>>16,bHandled); break; } case WM_KILLFOCUS: lRes = OnKillFocus(uMsg, wParam, lParam, bHandled); break; case WM_SETFOCUS: lRes = OnSetFocus(uMsg, wParam, lParam, bHandled); break; case WM_LBUTTONUP: lRes = OnLButtonUp(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; } case WM_RBUTTONUP: { lRes = OnRButtonUp(uMsg,wParam,lParam,bHandled); break; } case WM_MOUSEMOVE: { pt.x = GET_X_LPARAM( lParam ); pt.y = GET_Y_LPARAM( lParam ); lRes = OnMouseMove(uMsg, wParam, pt, bHandled); break; } case WM_MOUSEHOVER: { lRes = OnMouseHover(uMsg, wParam, lParam, bHandled); break; } #if(WINVER >= 0x0601) case WM_TOUCH: { UINT cInputs = LOWORD(wParam); HTOUCHINPUT hTouchInput=(HTOUCHINPUT)lParam; lRes = OnTouch(uMsg, cInputs, hTouchInput, bHandled); //If the application does not process the message, it must call DefWindowProc if (lRes==FALSE) { ::DefWindowProc(*this,uMsg,wParam,lParam); } break; } #endif #if(WINVER >= 0x0602) case WM_POINTERUP: { lRes = OnPointerUp(uMsg,wParam,lParam,bHandled); break; } case WM_POINTERDOWN: { lRes = OnPointerDown(uMsg,wParam,lParam,bHandled); break; } #endif default: { bHandled = FALSE; break; } } if (bHandled) { return lRes; } lRes = HandleCustomMessage(uMsg, wParam, lParam, bHandled); if(bHandled) { return lRes; } if (m_PaintManager.MessageHandler(uMsg, wParam, lParam, lRes)) { return lRes; } return CWindowWnd::HandleMessage(uMsg, wParam, lParam); }