首先我知道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
);