这里以窗口处理函数WindowProc(UINT message, WPARAM wParam, LPARAM lParam)为例,例举几个常见的消息,说明如何在WindowProc中对参数wParam和lParam进行转换,然后调用相应的处理函数。
1、 WM_SYSCOMMAND
消息响应函数:void OnSysCommand(UINT nID, LPARAM lParam );
参数转换及调用:OnSysCommand(wParam, lParam);
2、 WM_NCPAINT
消息响应函数:void OnNcPaint( HRGN rgn );
参数转换及调用:OnNcPaint( (HRGN) wParam);
3、 WM_NCCALCSIZE
消息响应函数:void OnNcCalcSize( BOOL bCalcValidRects, NCCALCSIZE_PARAMS* lpncsp);
参数转换及调用:OnNcCalcSize( (BOOL) wParam, (NCCALCSIZE_PARAMS *) lParam);
4、 WM_SIZE
消息响应函数:void OnSize(UINT nType, int cx, int cy );
参数转换及调用:OnSize(wParam, LOWORD(lParam), HIWORD(lParam) );
5、 WM_NCACTIVATE
消息响应函数:BOOL OnNcActivate( BOOL bActive );
参数转换及调用:OnNcActivate( (BOOL) wParam);
6、 WM_NCHITTEST
消息响应函数:UINT OnNcHitTest( CPoint point );
参数转换及调用: OnNcHitTest(CPoint(LOWORD(lParam), HIWORD(lParam)));
7、 WM_NCLBUTTONUP
消息响应函数:void OnNcLButtonUp( UINT nHitTest, CPoint point );
参数转换及调用:OnNcLButtonUp(wParam, CPoint(LOWORD(lParam), HIWORD(lParam)));
8、 WM_NCMOUSEMOVE
消息响应函数:void OnNcMouseMove( UINT nHitTest, CPoint point );
参数转换及调用:OnNcMouseMove(wParam,CPoint(LOWORD(lParam), HIWORD(lParam)));
9、 WM_GETMINMAXINFO
消息响应函数:void OnGetMinMaxInfo( MINMAXINFO* lpMMI );
调用方法:OnGetMinMaxInfo( (MINMAXINFO *) lParam);
10、 WM_WINDOWPOSCHANGING
消息响应函数:void OnWindowPosChanging( WINDOWPOS* lpwndpos );
调用方法:OnWindowPosChanging((WINDOWPOS *) lParam);
11、WM_ACTIVATE
消息响应函数:void OnActivate(UINT nState, CWnd* pWndOther);
调用方法:OnActivate(wParam, CWnd::FromHandle((HWND) lParam));
12、WM_ERASEBKGND
消息响应函数:BOOL OnEraseBkgnd( CDC *pDC);
调用方法:OnEraseBkgnd(CDC::FromHandle((HDC) wParam) );
源文档地址:http://blog.chinaunix.net/uid-20794284-id-470261.html