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); }
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(); } }