首先我知道VC中通过CreateWindow来创建一个窗体,那么就从MSDN中查找CreateWindow()函数,得到地址:
ms-help://MS.MSDNQTR.2003FEB.2052/winui/winui/windowsuserinterface/windowing/windows/windowreference/windowfunctions/createwindow.htm。HWND CreateWindow( LPCTSTR lpClassName, LPCTSTR lpWindowName, DWORD dwStyle, int x, int y, int nWidth, int nHeight, HWND hWndParent, HMENU hMenu, HINSTANCE hInstance, LPVOID lpParam);
那么,我的窗体的消息处理过程在哪呢?lpClassName的说明中,告诉我们另外一个函数:RegisterClass(),那就看看Register的说明吧:
ATOM RegisterClass( CONST WNDCLASS *lpWndClass);WNDCLASS又是什么呢?typedef struct { UINT style; WNDPROC lpfnWndProc; int cbClsExtra; int cbWndExtra; HINSTANCE hInstance; HICON hIcon; HCURSOR hCursor; HBRUSH hbrBackground; LPCTSTR lpszMenuName; LPCTSTR lpszClassName;} WNDCLASS, *PWNDCLASS;
lpfnWndProc 的说明:
指向窗口处理过程。你必须使用CallWindowProc来调用窗口处理过程,更多信息,参见WindowProc。
所以,让我们来看看CallWindowProc吧:
LRESULT CallWindowProc( WNDPROC lpPrevWndFunc, HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam);
LRESULT CallWindowProc(
WNDPROC lpPrevWndFunc,
HWND hWnd,
UINT Msg,
WPARAM wParam,
LPARAM lParam
);