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); }
//--------------------------------------------------------------------- // ClientWindowProc(): //--------------------------------------------------------------------- LRESULT WPPALLETE::ClientWindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { // Process window message. switch (uMsg) { case WM_CREATE: // Store the window handle for use later. SetHandle(hWnd); // Let notebook object know that create message is being processed. // NOTE: Here is where folder objects have a chance to animate // the zoom effect for window creation. OnCreate(); // Return success so we can continue with the creation of window. return ((LRESULT)0); case WM_ACTIVATE: OnActivate(((wParam==WA_INACTIVE)? TRUE : FALSE)); return (TRUE); case WM_COMMAND: OnCommand((HWND)LOWORD(lParam),HIWORD(lParam)); break; case WM_SYSCOMMAND: // A system command has been requested. OnSysCommand((WORD)wParam,lParam); break; case WM_SETTEXT: // Set new window caption text. DefWindowProc(hWnd,uMsg,wParam,lParam); // Update window caption. OnNCPaint(); break; case WM_QUERYDRAGICON: return (OnQueryDragIcon()); case WM_ERASEBKGND: OnEraseBackground((HDC)wParam); break; case WM_PAINT: OnPaint(); break; case WM_NCACTIVATE: // Handle this message ONLY if the non-client area is becoming active OR // the window becoming active or inactive is not a notebook page (modeless dialog). // else, do not update non-client area to prevent flickering effect with // notebook window caption. OnNCActivate((BOOL)wParam); return (TRUE); case WM_NCPAINT: OnNCPaint(); return (NULL); case WM_NCMOUSEMOVE: OnNCMouseMove((WORD)wParam,MAKEPOINT(lParam)); break; case WM_NCLBUTTONUP: case WM_NCLBUTTONDOWN: OnNCLButton(uMsg,(WORD)wParam,MAKEPOINT(lParam)); break; case WM_MOUSEMOVE: OnMouseMove(); break; case WM_MOVE: OnMove(MAKEPOINT(lParam)); break; case WM_SIZE: OnSize((WORD)wParam,LOWORD(lParam),HIWORD(lParam)); break; case WM_CLOSE: OnClose(); break; default: // Call the default window procedure. return (DefWindowProc(hWnd,uMsg,wParam,lParam)); } // We are done processing the window message... return (NULL); }
//--------------------------------------------------------------------- // ClientWindowProc(): //--------------------------------------------------------------------- LRESULT WPNOTEBOOK::ClientWindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { // Process window message. switch (uMsg) { case WM_CREATE: // Store the window handle for use later. SetHandle(hWnd); // Let notebook object know that create message is being processed. // NOTE: Here is where folder objects have a chance to animate // the zoom effect for window creation. OnCreate(); // Return success so we can continue with the creation of window. return ((LRESULT)0); case WM_ACTIVATE: OnActivate(((wParam==WA_INACTIVE)? TRUE : FALSE)); return (TRUE); // We don't want the client area to have the focus, since it // doesn't accept input. When it gets the focus, which it will // when the window is restored from a minimized state, for // instance, post a user message to ourselves to reset the // focus to the notebook. Posting the message is necessary // because the focus shouldn't be tampered with when processing // a WM_SETFOCUS or WM_KILLFOCUS message. case WM_SETFOCUS: PostMessage(hWnd,WM_WPS_NOTEBOOK_SETFOCUS,0,0L); break; case WM_WPS_NOTEBOOK_SETFOCUS: // Give focus to notebook control in our client area. SetFocus(GetDlgItem(hWnd,IDC_NOTEBOOK)); break; case WM_COMMAND: if (wParam==IDC_NOTEBOOK) OnCommand((HWND)LOWORD(lParam),HIWORD(lParam)); break; case WM_SYSCOMMAND: // A system command has been requested. OnSysCommand((WORD)wParam,lParam); break; case WM_SETTEXT: // Set new window caption text. DefWindowProc(hWnd,uMsg,wParam,lParam); // Update window caption. OnNCPaint(); break; case WM_QUERYDRAGICON: return (OnQueryDragIcon()); case WM_ERASEBKGND: OnEraseBackground((HDC)wParam); break; case WM_NCACTIVATE: // Handle this message ONLY if the non-client area is becoming active OR // the window becoming active or inactive is not a notebook page (modeless dialog). // else, do not update non-client area to prevent flickering effect with // notebook window caption. if ((((BOOL)wParam)==TRUE)||(IsPageWindow((HWND)LOWORD(lParam))==FALSE)) OnNCActivate((BOOL)wParam); return (TRUE); case WM_NCPAINT: OnNCPaint(); return (NULL); case WM_NCMOUSEMOVE: OnNCMouseMove((WORD)wParam,MAKEPOINT(lParam)); break; case WM_NCLBUTTONUP: case WM_NCLBUTTONDOWN: OnNCLButton(uMsg,(WORD)wParam,MAKEPOINT(lParam)); break; case WM_MOUSEMOVE: OnMouseMove(); break; case WM_MOVE: OnMove(MAKEPOINT(lParam)); break; case WM_SIZE: OnSize((WORD)wParam,LOWORD(lParam),HIWORD(lParam)); break; case WM_CLOSE: OnClose(); break; default: // Call the default window procedure. return (DefWindowProc(hWnd,uMsg,wParam,lParam)); } // We are done processing the window message... return (NULL); }