�������� Linux Tags
3. �Ӵ���ѶϢ
MessageBox��ʽ����һ���Ӵ�������ֻ��һ���������޵������Ӵ���ѶϢ�Ӵ���һ�����رհ�ť�ı����С�һ��ѡ��ͼʾ��һ�л�������֣��Լ�����ĸ���ť����Ȼ������ѡ��Windows�ṩ������ͼʾ�밴ť��
MessageBox��ʽ�dz����ã������治������ʹ���������Dz�����ѶϢ��������ʾͼ�Σ�����Ҳ������ѶϢ���������ӹ��ܱ���Ҫ������Щ���������Ҫ�����Լ����Ӵ������ھͿ�ʼ��
�Լ����Ӵ�
��
�����Ӵ��ܼ򵥣�ֻ�����CreateWindow��ʽ���ɡ�
��������Ȼ�����Ӵ��ĺ�ʽ��ȷ��ΪCreateWindow��������Ҳ����/Platform SDK/User Interface Services/Windowing/Windows/Window Reference/Window Functions�ҵ����ļ�������������CreateWindow�ĵ�һ������������ν�ġ��Ӵ�������ơ������Ҹ��Ӵ����������ν�ġ��Ӵ�ѶϢ������ʽ���������Ǻ���CreateWindow֮ǰ����һ�㱳��֪ʶ��������а�����
����ṹ
��
����Windows��ʽ��ƣ�ʵ�������ڽ���һ���������ij�ʽ��ƣ�OOP������һ����Windows��ʹ�õ���������ϱ�����Ϊ���ԡ������������Windows֮��������Ϊ��Windows����Ô���������˸ñ»¯µï¿½ï¿½ï¿½ï¿½ç£¬ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½Ü»ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½Ð³ï¿½ï¿½Ö£ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½Ç¸ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½Ó´ï¿½ï¿½ï¿½ï¿½Ä¶ï¿½ï¿½ï¿½ï¿½ï¿½
�����������Ե��Ӵ�����Ӧ�ó�ʽ�Ӵ�����Щ�Ӵ�������ʾ��ʽ���Ƶı����С����ܱ��������ܻ��й����к;����С���һ���Ӵ��ǶԻ����飬�������б�����Ҳ����û�б����С�
װ�ζԻ��������Ļ��и�ʽ�����İ�������ѡ��ť����ȡ���顢�嵥���顢�����к�����������������ÿһ��С���Ӿ��������һ���Ӵ�����ȷ�е�˵����Щ����Ϊ�����Ӵ����򡸿������Ӵ��������Ӵ��������
��Ϊ�����ʹ���߻���өĻ�Ͽ�����Щ�Ӵ�����ͨ�����̺ͻ���ֱ�������ǽ��н�������������Ȥ���ǣ���ʽд���ߵĹ۵���ʹ���ߵĹ۵㼫�����ơ��Ӵ��ԡ�ѶϢ������ʽ�����Ӵ������룬�Ӵ�Ҳ��ѶϢ�������Ӵ�ͨѶ����ѶϢ�����⽫��ѧϰ���д��Windows��ʽ������Խ�����ϰ�֮һ��
����һ��Windows��ѶϢ����������֪�����������Windows��ʽ���д�С���ʵ�Ӧ�ó�ʽ�Ӵ���Ҳ����˵�����ܹ�ͨ�������϶��Ӵ��ı߿����ı��Ӵ��Ĵ�С��ͨ������ʽ��ͨ���ı��Ӵ��е���������Ӧ���ִ�С�ı仯�������ܻ�²⣨������Ҳ����ȷ�ģ�����Windows����������Ӧ�ó�ʽ�ڴ�����ʹ�������µ����Ӵ���С��ص�ȫ�����ҳ�ʽ�����Ӧ�ó�ʽ�ܸı�����ʾ�����ӣ�������Ҳ��֪�����Ӵ���С�ı��ˡ�
Ӧ�ó�ʽ�����֪��ʹ���߸ı����Ӵ��Ĵ�С���أ���춳�ʽд����ϰ��������������ģʽ��ʽ����ҵϵͳû�����ý�����ѶϢ֪ͨ��ʹ���ߵĻ��ơ�����Ĺؼ��������Windows��ʹ�õļܹ�����ʹ���߸ı��Ӵ��Ĵ�Сʱ��Window����ʽ����һ��ѶϢָ�����Ӵ��Ĵ�С��Ȼ���ʽ�Ϳ��Ե����Ӵ��е����ݣ��Ի�Ӧ��С�ı仯��
��Windows����ʽ����ѶϢ��������ϣ�����߲�Ҫ����仰�Ӷ������������ױ�����ʲô��˼�أ��������������۵��dz�ʽ�룬������һ�������ʼ�ϵͳ����ҵϵͳ��ô����ʽ����ѶϢ�أ�
��ʵ����ν��Windows����ʽ����ѶϢ������ָWindows���г�ʽ�е�һ����ʽ���ú�ʽ�IJ�������������ض�ѶϢ������λ�Windows��ʽ�еĺ�ʽ��Ϊ���Ӵ�ѶϢ������ʽ����
���ɣ����߶Գ�ʽ������ҵϵͳ�������Ǻ���Ϥ�ġ����磬��ʽ�ڴ򿪴�Ƭ����ʱ��Ҫʹ���йص�ϵͳ���С���������ϰ�ߵģ���������ҵϵͳ���г�ʽ����������Windows�������ܹ��Ļ�����
��ʽ������ÿһ���Ӵ�������ص��Ӵ�ѶϢ������ʽ������Ӵ�ѶϢ������ʽ��һ����ʽ���ȿ����ڳ�ʽ�У�Ҳ�����ڶ�̬�����ʽ���С�Windowsͨ�������Ӵ�ѶϢ������ʽ�����Ӵ�����ѶϢ���Ӵ�ѶϢ������ʽ���ݴ�ѶϢ���д�����Ȼ�Ὣ���ƴ��ظ�Windows��
��ȷ�е�˵���Ӵ�ͨ�����ڡ��Ӵ���𡹵Ļ����Ͻ����ġ��Ӵ�����ʶ�˴����Ӵ�ѶϢ���Ӵ�ѶϢ������ʽ��ʹ���Ӵ����ʹ����Ӵ��ܹ����ͬһ���Ӵ���𣬲�ʹ��ͬһ���Ӵ�ѶϢ������ʽ�����磬����Windows��ʽ�е����а�ť������ͬһ���Ӵ��������Ӵ������һ���������а�ťѶϢ���Ӵ�ѶϢ������ʽ��λ�Windows�Ķ�̬�����ʽ���У����ᡣ
���������ij�ʽ����У�����dz�ʽ�����ϵ���ϡ��Ӵ���һ����������ʽ���Ӵ�ѶϢ������ʽ���������Ӵ�ѶϢ������ʽ�������Ѷ��WindowsΪÿ���Ӵ��Լ�ϵͳ���Ǹ��Ӵ���𱣴����Ѷ��
�Ӵ�ѶϢ������ʽ�������Ӵ�����ѶϢ����ЩѶϢ�����Ǹ�֪�Ӵ���ʹ������ʹ�ü��̻��߻���������롣�����ǰ����Ӵ�֪�����������¡��İ������ڡ����Ӵ���С�ı䣬�����Ӵ�������Ҫ�ػ�ʱ��������ѶϢ֪ͨ�Ӵ���
Windows��ʽ��ʼִ���ᣬWindowsΪ�ó�ʽ����һ����ѶϢ���С������ѶϢ����������Ÿó�ʽ���ܽ����ĸ��ֲ�ͬ�Ӵ���ѶϢ����ʽ����һС�γ�ʽ�룬������ѶϢ��Ȧ����������������ȡ��ѶϢ�����ҽ����Ƿ��͸���Ӧ���Ӵ�ѶϢ������ʽ����ЩѶϢֱ�ӷ��͸��Ӵ�ѶϢ������ʽ�����÷���ѶϢ�����С�
����������Windows�ܹ���춼��Ե��������Ž��ɣ���������ȥ������ʵ�ʵij�ʽ�У��Ӵ����Ӵ�����Ӵ�ѶϢ������ʽ��ѶϢ���С�ѶϢ��Ȧ���Ӵ�ѶϢ������໥��ϵġ�������������Щ������
HELLOWIN��ʽ
��
����һ���Ӵ�������Ҫע��һ���Ӵ��������Ҫһ���Ӵ�ѶϢ������ʽ�������Ӵ�ѶϢ�������Ӵ�ѶϢ��ÿ��Windows��ʽ��������Щ��������ʽ3-1��ʾ��HELLOWIN��ʽ�������������������������Щ���顣
��ʽ3-1 HELLOWIN HELLOWIN.C /*------------------------------------------------------------------------ HELLOWIN.C -- Displays "Hello, Windows 98!" in client area (c) Charles Petzold, 1998 -----------------------------------------------------------------------*/ #include <windows.h> LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ; int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) { static TCHAR szAppName[] = TEXT ("HelloWin") ; HWND hwnd ; MSG msg ; WNDCLAS wndclass ; wndclass.style = CS_HREDRAW | CS_VREDRAW ; wndclass.lpfnWndProc = WndProc ; wndclass.cbClsExtra = 0 ; wndclass.cbWndExtra = 0 ; wndclass.hInstance = hInstance ; wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ; wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ; wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ; wndclass.lpszMenuNam = NULL ; wndclass.lpszClassName = szAppName ; if (!RegisterClass (&wndclass)) { MessageBox ( NULL, TEXT ("This program requires Windows NT!"), szAppName, MB_ICONERROR) ; return 0 ; } hwnd = CreateWindow( szAppName, // window class name TEXT ("The Hello Program"), // window caption WS_OVERLAPPEDWINDOW, // window style CW_USEDEFAULT, // initial x position CW_USEDEFAULT, // initial y position CW_USEDEFAULT, // initial x size CW_USEDEFAULT, // initial y size NULL, // parent window handle NULL, // window menu handle hInstance, // program instance handle NULL) ; // creation parameters ShowWindow (hwnd, iCmdShow) ; UpdateWindow (hwnd) ; while (GetMessage (&msg, NULL, 0, 0)) { TranslateMessage (&msg) ; DispatchMessage (&msg) ; } return msg.wParam ; } LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { HDC hdc ; PAINTSTRUCT ps ; RECT rect ; switch (message) { case WM_CREATE: PlaySound (TEXT ("hellowin.wav"), NULL, SND_FILENAME | SND_ASYNC) ; return 0 ; case WM_PAINT: hdc = BeginPaint (hwnd, &ps) ; GetClientRect (hwnd, &rect) ; DrawText (hdc, TEXT ("Hello, Windows 98!"), -1, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER) ; EndPaint (hwnd, &ps) ; return 0 ; case WM_DESTROY: PostQuitMessage (0) ; return 0 ; } return DefWindowProc (hwnd, message, wParam, lParam) ; }
��ʽ����һ����ͨ��Ӧ�ó�ʽ�Ӵ�����ͼ3-1��ʾ�����Ӵ���ʾ�����������ʾ��Hello, Windows 98!���������װ����Ч������ô��������������Ӧ���ʶ�������
��
ͼ3-1 HELLOWIN�Ӵ� |
������ע�⣺�����ʹ��Microsoft Visual C++ Ϊ�˳�ʽ������ר������ô���ü��������ʽ����ij�ʽ�⵵������ Project ���ܱ�ѡ�� Setting ѡ�Ȼ��ѡȡ Link ҳ���ǩ���� Category �嵥������ѡ�� General ��Ȼ���� Object/Library Modules ���ַ������� WINMM.LIB �� Windows multimedia �� Windows��ý�� ����������������ΪHELLOWIN��ʹ�ö�ý�幦�ܺ��У����ڶ���ר�����ֲ�������ý���ʽ�⵵������Ȼ�����ʽ�����˴�����Ѷ������PlaySound��ʽ�����á�
HELLOWIN����ȡ����HELLOWIN.WAV���õ����ڱ������������HELLOWINĿ¼�С�ִ��HELLOWIN.EXEʱ���ڶ���Ŀ¼������HELLOWIN����Visual C++��ִ�д˳�ʽʱ����Ȼִ�е��������HELLOWIN��RELEASE��DEBUG��Ŀ¼�У���ִ�г�ʽ��Ŀ¼���DZ�����HELLOWIN�С�
ͨ�̿���
��
ʵ���ϣ�ÿһ��Windows��ʽ���ж�����HELLOWIN.C��ʽ�Ĵ󲿷֡�û����������ס�˳�ʽ��ȫ��д����ͨ����Windows��ʽд�����ڿ�ʼдһ���³�ʽʱ���ǻḴ��һ�����еij�ʽ��Ȼ��������Ӧ���޸ġ������԰���ϰ������ʹ�ñ��鸽������еij�ʽ��
�����ᵽ��HELLOWIN�������Ӵ���������ʾ�ִ�������˵��������ȫ��ȷ�ġ�����ʵ����ʾ�ڳ�ʽ��ʾ��������룬����ͼ3-1���DZ����кͱ߽緶Χ�ڵĴ�Ƭ��ɫ�����������������˵����Ҫ����ʾ������dz�ʽ���ɻ�ͼ������ʹ������ʾ���������Ӵ�����
���������˼��һ�£����ᷢ����Ȼֻ��80�г�ʽ�룬����Ӵ�ȴ���˾��ȵؾ������๦�ܡ��������û���ס�����У���өĻ���ƶ��Ӵ������԰�ס��С�߿򣬸ı��Ӵ��Ĵ�С�����Ӵ���С�ı�ʱ����ʽ�Զ��ؽ���Hello, Windows 98!���ִ����¶�λ����ʾ��������롣�����԰���󻯰�ť���Ŵ�HELLOWIN�Գ�������өĻ��Ҳ���԰���С����ť������ʽ��С��һ��ͼʾ����������ϵͳ���ܱ���ִ������ѡ����ǰ����ڱ���������˵�Сͼʾ����Ҳ���Դ�ϵͳ���ܱ���ѡ�� Close ѡ����ߵ������������Ҷ˵Ĺرհ�ť������˫������������˵�ͼʾ�����ر��Ӵ�����ֹ��ʽ��ִ�С�
���ǽ��ڱ��µ����²��ֶԴ˳�ʽ��һ��ϸ�ļ�顣��Ȼ����������Ҫ�������Ͽ�һ�¡�
��ǰ�����еķ�����ʽһ����HELLOWIN.CҲ��һ��WinMain��ʽ��������������һ����ʽ����ΪWndProc��������Ӵ�ѶϢ������ʽ��ע�⣬��HELLOWIN.C��û�к���WndProc�ij�ʽ�롣��Ȼ����WinMain���ж�WndProc�IJο���������Ǹú�ʽҪ�ڳ�ʽ��ͷ���������Ô��
Windows��ʽ����
��
HELLOWIN���ٺ�����18��Windows��ʽ��������������HELLOWIN�г��ֵĴ����г���Щ��ʽ�Լ����Եļ���������
��Щ��ʽ����Platform SDK�ļ���˵�������ڲ�ͬ�ı�ͷ���������棬���о������������WINUSER.H�С�
��д��ĸʶ����
��
���߿���ע�⵽��HELLOWIN.C���м�����д��ʶ���֣���Щʶ��������Windows��ͷ�����ж���ġ���Щʶ���ֺ���������ĸ����������ĸ�����ף���Щ������ͷ����һ�����ߣ�
CS_HREDRAW | DT_VCENTER | SND_FILENAME |
CS_VREDRAW | IDC_ARROW | WM_CREATE |
CW_USEDEFAULT | IDI_APPLICATION | WM_DESTROY |
DT_CENTER | MB_ICONERROR | WM_PAINT |
DT_SINGLELINE | SND_ASYNC | WS_OVERLAPPEDWINDOW |
��Щ�Ǽ򵥵���ֵ����������ָʾ�ó���������������3-1��ʾ��
��3-1 |
���� | ��� |
---|---|
CS | �Ӵ������ʽ |
CW | �����Ӵ� |
DT | �������� |
IDI | ͼʾID |
IDC | �α�ID |
MB | ѶϢ���� |
SND | ���� |
WM | �Ӵ�ѶϢ |
WS | �Ӵ���ʽ |
��Ȱ��ʽд���߲�Ҫ������ȥ����Windows��ʽ����е���ֵ������ʵ���ϣ�Windows��ʹ�õ�ÿ����ֵ�����ڱ�ͷ�����о�����Ӧ��ʶ���ֶ��塣
�µ�������̬
��
HELLOWIN.C�е�����ʶ�������µ�������̬��Ҳ��Windows��ͷ������ʹ��typedef��������#define�������Զ����ˡ������Ϊ�˱�춽�Windows��ʽ��Ô����16λԪϵͳ����ֲ��δ����ʹ��32λԪ(��������)��������ҵϵͳ�ϡ��������������統ʱÿ�������������˳�����������ָ������������ȷ�ġ�
��ʱ��Щ�µ�������ֻ̬��Ϊ�˷�����д�����磬���WndProc�ĵڶ���������UINT������ֻ̬��һ��unsigned int ��������������������Windows 98�У�����һ��32λԪ��ֵ�����WinMain�ĵ�����������PSTR������̬��ָ��һ���ִ���ָ�꣬����һ��char *��
����������̬�ĺ��岻̫���ԡ����磬WndProc�ĵ����͵��ĸ������ֱ𱻶���ΪWPARAM��LPARAM����Щ���ֵ���Դ�е���ʷ��������Windows����16λԪϵͳʱ��WndProc�ĵ���������������Ϊһ��WORD������һ��16λԪ�� �������Ŷ� ��unsigned short�������������ĸ�����������Ϊһ��LONG������һ��32λԪ�������ų��������Ӷ����������֡�PARAM��ǰ�������ǰ�����ס�W���͡�L������Ȼ����32λԪ��Windows�У�WPARAM������Ϊһ��UINT����LPARAM������Ϊһ��LONG�������C�е�long������̬��������Ӵ�ѶϢ������ʽ����������������32λԪ��ֵ����Ҳ���е���֣���ΪWORD������̬��Windows98����Ȼ������Ϊһ��16λԪ�� �������� ��������ˡ�PARAM��ǰ�ġ�W�����е������ˡ�
WndProc��ʽ����һ����̬ΪLRESULT��ֵ����ֵ�򵥵ر�����Ϊһ��LONG��WinMain��ʽ��ָ����һ��WINAPI��̬���ڱ�ͷ�����ж��������Windows��ʽ����ָ��������̬������WndProc��ʽ��ָ��һ��CALLBACK��̬��������ʶ���ֶ�������Ϊ_stdcall����ʾ��Windows������ʹ���ߵ�Ӧ�ó�ʽ֮�䷢���ĺ�ʽ���еĺ��в������ݷ�ʽ��
HELLOWIN��ʹ����Windows��ͷ�����ж�����������Ͻṹ�����ǽ��ڱ�������������ۣ�����Щ���Ͻṹ���3-2��ʾ��
��3-2 |
�ṹ | ���� |
---|---|
MSG | ѶϢ�ṹ |
WNDCLASS | �Ӵ����ṹ |
PAINTSTRUCT | ��ͼ�ṹ |
RECT | ���νṹ |
ǰ���������Ͻṹ��WinMain��ʹ�ã��ֱ�����������Ϊmsg��wndclass�Ľṹ�������������Ͻṹ��WndProc��ʹ�ã��ֱ�����ps��rect�ṹ��
���ż��
��
���ᣬ����������дʶ���֣�����3-3������춲�ͬ��̬�ġ����š���
��3-3 |
ʶ���� | ���� |
---|---|
HINSTANCE | ִ��ʵ�壨��ʽ���������� |
HWND | �Ӵ����� |
HDC | װ�����ݴ��� |
������Windows��ʹ�÷dz�Ƶ�����ڱ��½���֮ǰ�����ǽ�����HICON��ͼʾ���ţ���HCURSOR�������α���ţ���HBRUSH����ˢ���ţ���
������һ����ͨ��Ϊ32λԪ�ģ�������������һ�������Windows�еĴ������ƴ�ͳC����MS-DOS��ʽ�����ʹ�õĵ������š���ʽ��������ͨ������Windows��ʽȡ�ô��š���ʽ������Windows��ʽ��ʹ��������ţ���ʹ������������������ŵ�ʵ��ֵ�Գ�ʽ��˵���޹ؽ�Ҫ�ġ����ǣ������ij�ʽ�ṩ���ŵ�Windowsģ��֪�������������ʹ�����Ӧ�������
��������ʾ��
��
���߿���ע�⵽��HELLOWIN.C����һЩ�����������ԵúܹŹ֡���szCmdLine�����Ǵ��ݸ�WinMain�IJ�����
����Windows��ʽд����ʹ��һ�ֽ�������������ʾ�����ı�������ͨ������Ϊ�˼�����Ե�Microsoft��ʽд����Charles Simonyi���dz��򵥣���������һ�����߶��Сд��ĸ��ʼ����Щ��ĸ��ʾ������������̬�����磬szCmdLine�е�sz��������0��β���ִ�������hInstance��hPrevInstance�е�h���ױ�ʾ�����š�����iCmdShow�е�i���ױ�ʾ���������� WndProc������������Ҳʹ����������ʾ������������ǰ���Ѿ����͹��ģ�����wParamӦ�ø��ʵ��ر�����ΪuiParam��������������������������������Ϊ������������ʹ��������̬WPARAM��LPARAM����ģ���˱������Ǵ�ͳ�����֡�
�������ṹ����ʱ�������ýṹ�������߽ṹ����һ����д����Сд��Ϊ�����������ף������������������������磬��HELLOWIN. C��WinMain��ʽ�У�msg������MSG��̬�Ľṹ��wndclass��WNDCLASSEX��̬��һ���ṹ����WndPmc��ʽ�У�ps��һ��PAINTSTRUCT�ṹ��rect��һ��RECT�ṹ��
��������ʾ���ܹ�������ʽд���߼��緢�ֲ������ʽ�еĴ�����춱������������˱��������ã�����������������̬���ͱȽ����ױ������������̬���ϵĴ���
��3-4�г����ڱ����о����õ��ı������ס�
��3-4 |
���� | ������̬ |
---|---|
c | char��WCHAR��TCHAR |
by | BYTE ������������Ԫ�� |
n | short |
i | int |
x, y | int�ֱ�����x�����y���� |
cx, cy | int�ֱ�����x���Ⱥ�y���ȣ�C�������������� |
b��f | BOOL (int)��f��������꡹ |
w | WORD ���������Ŷ������� |
l | LONG ���������� |
dw | DWORD ���������ų������� |
fn | function����ʽ�� |
s | string���ִ��� |
sz | ��λԪ��ֵ0��β���ִ� |
h | ���� |
p | ָ�� |
ע���Ӵ����
��
�Ӵ�����ijһ�Ӵ���������Ӵ�������Ա�ʶ�����Ӵ�ѶϢ���Ӵ�ѶϢ������ʽ��
��ͬ�Ӵ���������ͬһ���Ӵ�����������磬Windows�е����а�ť�Ӵ���������������ȡ���飬�Լ���ѡ��ť����������ͬһ���Ӵ�������ġ��Ӵ���������Ӵ�ѶϢ������ʽ�����ݴ���������Ӵ����������硣�ڽ����Ӵ�ʱ��Ҫ����һЩ���Ӵ������е����硣
��Ϊ��ʽ�����Ӵ�֮ǰ���������Ⱥ���RegisterClassע��һ���Ӵ���𡣸ú�ʽֻ��Ҫһ����������һ��ָ����̬ΪWNDCLASS�Ľṹָ�ꡣ�˽ṹ��������ָ���ִ�����λ����˽ṹ��WINUSER.H��ͷ�����ж��������ֲ�ͬ�ķ�ʽ����һ����ASCII���WNDCLASSA��
typedef struct tagWNDCLASSA { UINT style ; WNDPROC lpfnWndProc ; int cbClsExtra ; int cbWndExtra ; HINSTANCE hInstance ; HICON hIcon ; HCURSOR hCursor ; HBRUSH hbrBackground ; LPCSTR lpszMenuName ; LPCSTR lpszClassName ; } WNDCLASSA, * PWNDCLASSA, NEAR * NPWNDCLASSA, FAR * LPWNDCLASSA ;
��������ʾһ��������̬����������ʾ�������е�lpfn���״�����ָ��ʽ�ij�ָ�꡹������Win32 API�У���ָ��Ͷ�ָ�꣨���߽���ָ�꣩û��������ֻ��16λԪWindows�������cb���״�����λԪ����������ͨ����Ϊһ����������ʾһ��λԪ��Ĵ�С��h������һ�����ţ���hbr���״�����һ����ˢ�Ĵ��š���lpsz���״�����ָ����0��β�ִ���ָ�꡹��
Unicode��Ľṹ�������£�
typedef struct tagWNDCLASSW { UINT style ; WNDPROC lpfnWndProc ; int cbClsExtra ; int cbWndExtra ; HINSTANCE hInstance ; HICON hIcon ; HCURSOR hCursor ; HBRUSH hbrBackground ; LPCWSTR lpszMenuName ; LPCWSTR lpszClassName ; } WNDCLASSW, * PWNDCLASSW, NEAR * NPWNDCLASSW, FAR * LPWNDCLASSW ;
��ǰ��Ψһ�������������������λ����Ϊָ����ִ�������������ָ��ASCII�ִ�������
WINUSER.H������WNDCLASSA��WNDCLASSW�ṹ���Լ�ָ��ṹ��ָ�꣩���ᣬ��ͷ�������ݶ�UNICODEʶ���ֵĽ��ͣ�������WNDCLASS��ָ��WNDCLASS��ָ�꣨����һЩ�������ݵij�ʽ�룩��
#ifdef UNICODE typedef WNDCLASSW WNDCLASS ; typedef PWNDCLASSW PWNDCLASS ; typedef NPWNDCLASSW NPWNDCLASS ; typedef LPWNDCLASSW LPWNDCLASS ; #else typedef WNDCLASSA WNDCLASS ; typedef PWNDCLASSA PWNDCLASS ; typedef NPWNDCLASSA NPWNDCLASS ; typedef LPWNDCLASSA LPWNDCLASS ; #endif
���������г��ṹʱ����ֻ�г�������ͬ�Ľṹ���壬��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 ;
��Ҳ��������˵��ָ��Ķ��塣һ����ʽд���ߵij�ʽ��Ӧ����Ϊʹ����LP��NPΪ���׵IJ�ָͬ����̬�������ҡ�
��WinMain��ΪWNDCLASS����һ���ṹ��ͨ����������
WNDCLASS wndclass ;
Ȼ�ᣬ��Ϳ��Գ�ʼ���ýṹ��10����λ��������RegisterClass��
��WNDCLASS�ṹ������Ҫ��������λ�ǵڶ���������һ�����ڶ�����λ(lpfnWndProc) �������������������������Ӵ���ʹ�õ��Ӵ�ѶϢ������ʽ��λַ����HELLOWIN.C�У������WndProc��ʽ������һ����λ���Ӵ������������ơ���ʽд���߿������ⶨ�������ơ���ֻ����һ���Ӵ��ij�ʽ�У��Ӵ��������ͨ���趨Ϊ��ʽ���ơ�
������λ��������ķ����������Ӵ�����һЩ���硣���������ο���WNDCLASS�ṹ�е�ÿ����λ��
����
wndclass.style = CS_HREDRAW | CS_VREDRAW ;
ʹ��C��λԪ���������ӽ�����������Ӵ������ʽ��ʶ���֡��ڱ�ͷ����WINUSER.H�У��Ѷ�����һ������CSΪ���׵�ʶ���֣�
#define CS_VREDRAW 0x0001 #define CS_HREDRAW 0x0002 #define CS_KEYCVTWINDOW 0x0004 #define CS_DBLCLKS 0x0008 #define CS_OWNDC 0x0020 #define CS_CLASSDC 0x0040 #define CS_PARENTDC 0x0080 #define CS_NOKEYCVT 0x0100 #define CS_NOCLOSE 0x0200 #define CS_SAVEBITS 0x0800 #define CS_BYTEALIGNCLIENT 0x1000 #define CS_BYTEALIGNWINDOW 0x2000 #define CS_GLOBALCLASS 0x4000 #define CS_IME 0x00010000
���ÿ��ʶ���ֶ�������һ������ֵ������һ��λԪ��ֵ�����԰����ַ�ʽ�����ʶ����ͨ����Ϊ��λԪ��꡹��ͨ������ֻʹ���������Ӵ������ʽ��HELLOWIN���õ���������ʶ���ֱ�ʾ���������ݴ���������Ӵ���ÿ���Ӵ���ˮƽ�����С(CS_HREDRAW)���ߴ�ֱ�����С(CS_VREDRAW)�ı�֮�ᣬ�Ӵ�Ҫ��ȫ�ػ����ı�HELLOWIN���Ӵ���С�����Կ����ִ���Ȼ��ʾ���Ӵ������룬������ʶ����ȷ������һ�㡣�������Ǿͽ������Ӵ�ѶϢ������ʽ����ε�֪�����Ӵ���С�ı仯�ġ�
WNDCLASS�ṹ�ĵڶ�����λ�������������г�ʼ����
wndclass.lpfnWndProc = WndProc ;
��������������Ӵ������Ӵ�ѶϢ������ʽ�趨ΪWndProc����HELLOWIN.C�еĵڶ�����ʽ��������̽�������������Ӵ�������������Ӵ���ȫ��ѶϢ����C�����У��������ڽṹ��ʹ�ú�ʽ��ʱ�������ṩ����ָ��ʽ��ָ�ꡣ
����������λ������Ӵ����ṹ��Windows�ڲ�������Ӵ��ṹ��Ԥ��һЩ����ռ䣺
wndclass.cbClsExtra = 0 ; wndclass.cbWndExtra = 0 ;
��ʽ���Ը�����Ҫ��ʹ��Ԥ���Ŀռ䡣HELLOWINû��ʹ�����ǣ������趨ֵΪ0�����򣬺���������ʾ����ָʾ��һ���������λ�������ɡ�Ԥ����λԪ�����������ڵ����µij�ʽCHECKER3��ʹ��cbWndExtra��λ����
��һ����λ���dz�ʽ��ִ��ʵ����ţ���Ҳ��WinMain�IJ���֮һ����
wndclass.hInstance = hInstance ;
����
wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ;
Ϊ������������Ӵ���������Ӵ�����һ��ͼʾ��ͼʾ��һ��С�ĵ���ͼͼ������ʹ���ߴ�����ʽ����������Windows�������к��Ӵ��ı����е���ˡ��ڱ�������棬����ѧϰ���Ϊ����Windows��ʽ�Զ�ͼʾ�����ڣ�Ϊ�˷�����������ǽ�ʹ��Ԥ�ȶ����ͼʾ��
Ҫȡ��Ԥ�ȶ���ͼʾ�Ĵ��ţ����Խ���һ�������趨ΪNULL������LoadIcon���������ʽд�����Զ���ͼʾʱ��ͼʾӦ�ô���ڴ�Ƭ�ϵ�.EXE��ʽ�����У����������Ӧ�ñ��趨Ϊ��ʽ��ִ��ʵ�����hInstance���ڶ�����������ͼʾ�����Ԥ�ȶ���ͼʾ���˲�������IDI��ʼ��ʶ���֣���ID����ͼʾ������ʶ������WINUSER.H�ж��塣IDI_APPLICATIONͼʾ��һ���򵥵��Ӵ�Сͼ�Ρ�LoadIcon��ʽ���ظ�ͼʾ�Ĵ��š����Dz�������������ŵ�ʵ��ֵ����ֻ�������hIcon��λԪ��ֵ������λ��WNDCLASS�ṹ�ж���ΪHICON��̬������̬���ĺ���Ϊ��handle to an icon��ͼʾ���ţ�����
����
wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ;
��ǰһ�������dz����ơ�LoadCursor��ʽ����һ��Ԥ�ȶ���Ļ����α꣨����ΪIDC_ARROW���������ظ��α�Ĵ��š��ô��ű��趨��WNDCLASS�ṹ��hCursor��λ���������α������������������Ӵ�����ʾ�����ϳ���ʱ�������һ��С��ͷ��
��һ����λָ�����������������Ӵ�������ɫ��hbrBackground��λ�����е�hbr���״�����handle to a brush����ˢ���ţ�������ˢ�Ǹ���ͼ�ʻ㣬ָ�������һ���������ɫ��ʽ��Windows�м�����׼��ˢ��Ҳ��Ϊ������(stock)����ˢ��������ʾ��GetStockObject���н�����һ����ɫ��ˢ�Ĵ��ţ�
wndclass.hbrBackground = GetStockObject (WHITE_BRUSH) ;
����ζ���Ӵ���ʾ����ı�����ȫΪ��ɫ������һ�ּ����ձ��������
��һ����λָ���Ӵ�����ܱ���HElLOWINû��Ӧ�ó�ʽ���ܱ������Ը���λ���趨ΪNULL��
wndclass.lpszMenuName = NULL ;
���ᣬ�������һ��������ơ����С��ʽ��������ƿ������ʽ����ͬ���������szAppName�����еġ�HelloWin���ִ���
wndclass.lpszClassName = szAppName ;
��춸��ִ���ASCII��Ԫ��ɻ���Unicode��Ԫ��ɣ�ȡ����Ƿ�����UNICODEʶ���֡�
�ڳ�ʼ���ýṹ��10����λ�ᣬHELLOWIN����RegisterClass��ע������Ӵ���𡣸ú�ʽֻ��һ����������ָ��WNDCLASS�ṹ��ָ�ꡣʵ���ϣ�RegisterClassA��ʽ�����һ��ָ��WNDCLASSA�ṹ��ָ�꣬��RegisterClassW��ʽ�����һ��ָ��WNDCLASSW�ṹ��ָ�ꡣ��ʽҪʹ���ĸ���ʽ��ע���Ӵ����ȡ��춷��͸��Ӵ���ѶϢ����ASCII���ֻ���Unicode���֡�
������һ�����⣺����ö����UNICODEʶ���ֱ����˳�ʽ����ʽ������RegisterClassW���ó�ʽ������Microsoft Windows NT��ִ�����á�������˳�ʽ��Windows 98��ִ�У�RegisterClassW��ʽ��δ��ر�ִ�е�����ʽ��һ������㣬����ʽ������ֻ����0���������󡣶����Windows 98��ִ�е�Unicode��ʽ��˵������һ��֪ͨʹ���������Ⲣ��ִֹ�еĺû��ᡣ���DZ����ж�����ʽ����RegisterClass��ʽ���еķ�����
if (!RegisterClass (&wndclass)) { MessageBox ( NULL, TEXT ("This program requires Windows NT!"), szAppName, MB_ICONERROR) ; return 0 ; }
���MessageBoxW�ǿ���Windows 98������ִ�еļ���Unicode��ʽ֮һ��������ִ��������
��Ȼ����γ�ʽ�ٶ�RegisterClass����������Ô�������ʧ�ܣ�����WNDCLASS�ṹ��lpfnWndProc��λ���趨��NULL֮��Ĵ���GetLastError��ʽ�������ȷ��������������²��������Ô��GetLastError��Windows�г��õĺ�ʽ���������ں�ʽ����ʧ��ʱ��ø��������Ѷ����ͬ��ʽ���ļ���ָ�����Ƿ��ܹ���GetLastError�������Щ��Ѷ����Windows 98���RegisterClassWʱ��GetLastError������120����WINERROR.H�������Կ�����ֵ120��ʶ����ERROR_CALL_NOT_IMPLEMENTED��ȡ���Ҳ������/Platform SDK/Windows Base Services/Debugging and Error Handling/Error Codes/System Errors - Numerical Order�鿴����
һЩWindows��ʽд����ϲ��������п��ܷ�������ĺ�ʽ���еĴ���ֵ����ô��ȷʵ�е������������Ҳ�dz�ϰ�������ü�����������󡣶�����Windows��ʽ��Ҫ���ü����塣���磬RegisterClass��Ҫ���ü����壬�Ա����Ӵ�������Ѷ�����һ��������Ӧ��Ҫ��������ʽ��ִ�н������һ����˵����������RegisterClass���ܵõ�����Ҫ�ļ����壬�����������ʧ�ܣ���Windows���Ҳ�쵱���ˡ�
�ڱ���ķ�����ʽ�У����������ٵĴ����顣�ⲻ����Ϊ����Ϊ�����鲻��һ���÷�����������Ϊ����������ڳ�ʽ�����з��ġ�
���ᣬһ���Ͼ����ǣ���һЩWindows������ʽ�У���������WinMain�п������³�ʽ�룺
if (!hPrevInstance) { wndclass.cbStyle = CS_HREDRAW | CS_VREDRAW ; ��ʼ������ wndclass RegisterClass (&wndclass) ; }
���dz�춡���ϰ�Ѹġ���Ô����16λԪ��Windows�У��������������ִ�еij�ʽ��һ����ִ��ʵ�壬WinMain��hPrevInstance��������ǰһ��ִ��ʵ���ִ��ʵ����š�Ϊ��ʡ�����壬��������ִ��ʵ��Ϳ��ܻṲ����ͬ���Ӵ�����������Ӵ�����ֻ��hPrevInstance��NULL��ʱ���ע�ᣬ�������ʽû������ִ��ʵ�塣
��32λԪ��Windows�У�hPrevInstance����NULL���˳�ʽ�������ִ�У���ʵ����Ҳû��Ҫ���hPrevInstance��
�����Ӵ�
��
�Ӵ���������Ӵ���һ�����磬��˿���ʹ��ͬһ�Ӵ���������಻ͬ���Ӵ���ʵ�ʺ���CreateWindow�����Ӵ�ʱ������ָ���й��Ӵ��ĸ���ϸ����Ѷ��
Windows��ʽ���������ʱ������Ӵ������Ӵ�֮��������Լ�Ϊʲôһ���Ӵ����������粻�ܱ�һ���趨�á�ʵ���ϣ������ַ�ʽ�ֿ���Щ��ʽ��Ѷ�Ƿdz�����ġ����磬���еİ�ť�Ӵ�����������ͬ�����Ӵ������������������Ӵ������ص��Ӵ�ѶϢ������ʽλ�Windows�ڲ������Ӵ��������������ť�ļ��̺ͻ������룬�����尴ť��өĻ�ϵ�������󡣴���һ�㿴�������еİ�ť������ͬ���ķ�ʽ�����ġ����Dz������еİ�ť����һ���ġ����ǿ����в�ͬ�Ĵ�С����ͬ��өĻλ�ã��Լ���ͬ���ִ������������һЩ�������Ӵ������һ���֣��������Ӵ������ġ�
���ݸ�RegisterClass��ʽ����Ѷ����һ�����Ͻṹ���趨�ã������ݸ�CreateWindow��ʽ����Ѷ���ں�ʽ�����IJ������趨�á�������HELLOWIN.C�е�CreateWindows���У�ÿһ����λ������������˵����
hwnd = CreateWindow (szAppName, // window class name TEXT ( "The Hello Program"), // window caption WS_OVERLAPPEDWINDOW, // window style CW_USEDEFAULT, // initial x position CW_USEDEFAULT, // initial y position CW_USEDEFAULT, // initial x size CW_USEDEFAULT, // initial y size NULL, // parent window handle NULL, // window menu handle hInstance, // program instance handle NULL) ; // creation parameters
������Ҳ�����ʵ������CreateWindowA��ʽ��CreateWindowW��ʽ��������ʽ�ֱ�ǰ������������ASCII����Unicode�ִ���������
���Ϊ��window class name���IJ�����szAppName���������ִ���HelloWin�������dz�ʽע����Ӵ�������ơ���������ǽ������Ӵ������Ӵ����ķ�ʽ��
�˳�ʽ�������Ӵ���һ����ͨ���ص�ʽ�Ӵ���������һ�������У������������һ��ϵͳ���ܱ���ť���������ұ�����С���Ŵ�͹ر�ͼʾ�����ܻ���һ����ʾ�Ӵ���С�ı߿����DZ�׼��ʽ���Ӵ�����ΪWS_OVERLAPPEDWINDOW��������CreateWindow�ġ��Ӵ���ʽ�������С������һ��WINUSER.H�������ᷢ�ִ���ʽ�Ǽ���λԪ������ϣ�
#define WS_OVERLAPPEDWINDOW (WS_OVERLAPPED | \ WS_CAPTION | \ WS_SYSMENU | \ WS_THICKFRAME | \ WS_MINIMIZEBOX | \ WS_MAXIMIZEBOX)
���Ӵ����⡹����ʾ�ڱ������е����֡�
ע������initial x position���͡�initial y position���IJ���ָ�����Ӵ����Ͻ�����өĻ���Ͻǵij�ʼλ�á������Щ����ʹ��CW_USEDEFAULTʶ���֣�ָʾWindowsʹ���ص��Ӵ����ڶ�λ�á���CW_USEDEFAULT����Ϊ0x80000000�����ڶ�����£�Windows���ζ��½������Ӵ���λ��ʹ���Ӵ����ϽǵĴ�ֱ��ˮƽ������өĻ�ϰ�һ���Ĵ�С������������ƣ�ע������initial x size���͡�initial y size���IJ����ֱ�ָ���Ӵ��Ŀ��Ⱥ͸߶ȡ�ͬ��ʹ����CW_USEDEFAULTʶ���֣�����ϣ��Windowsʹ���ڶ��ߴ硣
�ڽ���һ�������ϲ㡹�Ӵ�����Ӧ�ó�ʽ�Ӵ�ʱ��ע��Ϊ�����Ӵ����š��IJ����趨ΪNULL��ͨ��������Ӵ�֮������и��ӹ�ϵ�������Ӵ����dz����ڸ��Ӵ������档Ӧ�ó�ʽ�Ӵ������������Ӵ������棬������Ϊ����CreateWindow���ҳ������Ӵ��Ĵ��š�
��Ϊ�Ӵ�û�й��ܱ������ԡ��Ӵ����ܱ����š�Ҳ�趨ΪNULL������ʽִ��ʵ����š��趨Ϊִ��ʵ����ţ�������ΪWinMain�IJ������ݸ������ʽ�ġ����ᣬ������������ָ���趨ΪNULL�����������������ȡ�����ʽ�п������õ������ϡ�
CreateWindow���ر��������Ӵ��Ĵ��ţ��ô��Ŵ���ڱ���hwnd�У����߱�����ΪHWND��̬�����Ӵ�������̬������Windows�е�ÿ���Ӵ�����һ�����ţ���ʽ�ô�����ʹ���Ӵ�������Windows��ʽ��Ҫʹ��hwnd��Ϊ������������Windows����֪����ʽ������ĸ��Ӵ��ġ����һ����ʽ�����������Ӵ�����ÿ���Ӵ�����һ�����š��Ӵ�������Windows��ʽ����������Ҫ�Ĵ���֮һ��
��ʾ�Ӵ�
��
��CreateWindow���д���֮�ᣬWindows�ڲ��Ѿ�����������Ӵ��������˵��Windows�Ѿ�������һ������壬����������CreateWindow������ָ���Ӵ���ȫ����Ѷ��һЩ������Ѷ����Windows������������Ӵ������ҵ���Щ��Ѷ�ġ�
Ȼ�������������ӣ��Ӵ��������������Ѷ��ʾ���ϡ�������Ҫ������ʽ���У�һ���ǣ�
ShowWindow (hwnd, iCmdShow) ;
��һ�������Ǹո���CreateWindow�������Ӵ����š��ڶ�����������Ϊ��������WinMain��iCmdShow����ȷ����������өĻ����ʾ�Ӵ�����һ���С����С��������󻯡��ڿ�ʼ���ܱ��а�װ��ʽʱ��ʹ���߿����������ѡ������Ӵ���һ���С��ʾ����ôWinMain���յ��ᴫ�ݸ�ShowWindow�ľ���SW_SHOWNORMAL������Ӵ��������ʾ�ģ���ΪSW_SHOWMAXIMIZED��������Ӵ�ֻ��ʾ�ڹ������ϣ�����SW_SHOWMINNOACTIVE��
ShowWindow��ʽ����ʾ������ʾ�Ӵ������ShowWindow�ĵڶ���������SW_SHOWNORMAL�����Ӵ�����ʾ����ͻᱻ�Ӵ�����ж���ı�����ˢ�����ǡ���ʽ����
UpdateWindow (hwnd) ;
���ػ���ʾ���������ɷ��͸��Ӵ�ѶϢ������ʽ����HELLOWIN.C�е�WndProc��ʽ��һ��WM_PAINTѶϢ������һ�㡣���棬���ǽ�˵��WndProc��δ������ѶϢ��
ѶϢ��Ȧ
��
����UpdateWindow֮�ᣬ�Ӵ��ͳ�������Ѷ��ʾ���ϡ���ʽ���ڱ���׼������ʹ�����ü��̺ͻ�����������ϡ�WindowsΪ��ǰִ�е�ÿ��Windows��ʽά��һ����ѶϢ���С����ڷ��������¼�֮�ᣬWindows���¼�ת��Ϊһ����ѶϢ������ѶϢ�����ʽ��ѶϢ�����С�
��ʽͨ��ִ��һ���֮Ϊ��ѶϢ��Ȧ���ij�ʽ���ѶϢ������ȡ��ѶϢ��
while (GetMessage (&msg, NULL, 0, 0)) { TranslateMessage (&msg) ; DispatchMessage (&msg) ; }
msg��������̬ΪMSG�Ľṹ����̬MSG��WINUSER.H�ж������£�
typedef struct tagMSG { HWND hwnd ; UINT message ; WPARAM wParam ; LPARAM lParam ; DWORD time ; POINT pt ; } MSG, * PMSG ;
POINT������̬Ҳ��һ���ṹ������WINDEF.H�ж������£�
typedef struct tagPOINT { LONG x ; LONG y ; } POINT, * PPOINT;
ѶϢ��Ȧ��GetMessage���п�ʼ������ѶϢ������ȡ��һ��ѶϢ��
GetMessage (&msg, NULL, 0, 0)
��һ���д���Windowsһ��ָ�ָ꣬����Ϊmsg��MSG�ṹ���ڶ��������͵��ĸ������趨ΪNULL����0����ʾ��ʽ�������Լ������������Ӵ�������ѶϢ��Windows�ô�ѶϢ������ȡ������һ��ѶϢ�����ѶϢ�ṹ�ĸ�����λ���ṹ�ĸ�����λ������
ֻҪ��ѶϢ������ȡ��ѶϢ��message��λ��ΪWM_QUIT����ֵΪ0x0012����GetMessage�ʹ���һ������ֵ��WM_QUITѶϢ������GetMessage����0��
����
TranslateMessage (&msg) ;
��msg�ṹ����Windows������һЩ����ת�����������һ�㣬���ǽ��ڵ��������������ۡ���
����
DispatchMessage (&msg) ;
�ֽ�msg�ṹ�ش���Windows��Ȼ�ᣬWindows����ѶϢ���͸��ʵ����Ӵ�ѶϢ������ʽ���������д�������Ҳ����˵��Windows�������Ӵ�ѶϢ������ʽ����HELLOWIN�У�����Ӵ�ѶϢ������ʽ����WndProe��ʽ��������ѶϢ֮�ᣬWndProc���ص�Windows����ʱ��Windows��ͣ����DispatchMessage�����С��ڽ���DispatchMessage���еĴ���֮�ᣬWindows�ص�HELLOWIN�����ҽ�������һ��GetMessage���п�ʼѶϢ��Ȧ��
�Ӵ�ѶϢ������ʽ
��
�������������۵Ķ��DZ�Ҫ�ĸ�����ע���Ӵ���𣬽����Ӵ���Ȼ����өĻ����ʾ�Ӵ�����ʽ����ѶϢ��Ȧ��Ȼ�᲻�ϴ�ѶϢ������ȡ��ѶϢ��������
ʵ�ʵĶ����������Ӵ�ѶϢ������ʽ�С��Ӵ�ѶϢ������ʽȷ�������Ӵ�����ʾ��������ʾЩʲô�Լ��Ӵ�������Ӧʹ�������롣
��HELLOWIN�У��Ӵ�ѶϢ������ʽ������ΪWndProc�ĺ�ʽ���Ӵ�ѶϢ������ʽ������������ֻҪ�󲻺��������ַ�����ͻ����һ��Windows��ʽ���԰�������Ӵ�ѶϢ������ʽ��һ���Ӵ�ѶϢ������ʽ���������RegisterClassע����ض��Ӵ�����������CreateWindow��ʽ�����ض��Ӵ������һ���Ӵ���������һ���Ӵ���𣬿��Խ�������Ӵ���
�Ӵ�ѶϢ������ʽ���Ƕ���Ϊ������ʽ��
LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
ע�⣬�Ӵ�ѶϢ������ʽ���ĸ�������MSG�ṹ��ǰ�ĸ���λ����ͬ�ġ���һ������hwnd�ǽ���ѶϢ���Ӵ��Ĵ��ţ�����CreateWindow��ʽ�Ĵ���ֵ��ͬ�������HELLOWIN���Ƶij�ʽ��ֻ����һ���Ӵ�������������dz�ʽ��֪����Ψһ�Ӵ����š������ʽ������ͬһ�Ӵ����ͬʱҲ��ͬһ�Ӵ�ѶϢ������ʽ����������Ӵ�����hwnd��ʶ����ѶϢ���ض��Ӵ���
�ڶ���������MSG�ṹ�е�message��λ��ͬ�����DZ�ʶѶϢ����ֵ������������������32λԪ��ѶϢ�������ṩ���ѶϢ�ĸ�����Ѷ����Щ��������ÿ��ѶϢ��̬����ϸ��Ѷ����ʱѶϢ���������������һ���16λԪֵ������ʱѶϢ��������һ��ָ���ִ������Ͻṹ��ָ�ꡣ
��ʽͨ����ֱ�Ӻ����Ӵ�ѶϢ������ʽ���Ӵ�ѶϢ������ʽͨ����Windows�������С�ͨ������SendMessage��ʽ����ʽ�ܹ�ֱ�Ӻ������Լ����Ӵ�ѶϢ������ʽ�����ǽ���������½�����SendMessage��ʽ��
����ѶϢ
��
�Ӵ�ѶϢ������ʽ�����ܵ�ÿ��ѶϢ������һ����ֵ����ʶ�ģ�Ҳ���Ǵ����Ӵ�ѶϢ������ʽ��message������Windows��ͷ����WINUSER.HΪÿ��ѶϢ���������ԡ�WM�����Ӵ�ѶϢ��Ϊ���׿�ͷ��ʶ���֡�
һ����˵��Windows��ʽд����ʹ��switch��case�ṹ��ȷ���Ӵ�ѶϢ������ʽ���յ���ʲôѶϢ���Լ�����ʵ��ش��������Ӵ�ѶϢ������ʽ�ڴ���ѶϢʱ�����봫��0���Ӵ�ѶϢ������ʽ���账��������ѶϢӦ�ñ�������ΪDefWindowProc��Windows��ʽ����DefWindowProc���ص�ֵ�������Ӵ�ѶϢ������ʽ���ء�
��HELLOWIN�У�WndProcֻѡ��������ѶϢ��WM_CREATE��WM_PAINT��WM_DESTROY���Ӵ�ѶϢ������ʽ�Ľṹ���£�
switch (iMsg) { case WM_CREATE : ����WM_CREATEѶϢ return 0 ; case WM_PAINT : ����WM_PAINTѶϢ return 0 ; case WM_DESTROY : ����WM_DESTROYѶϢ return 0 ; } return DefWindowProc (hwnd, iMsg, wParam, lParam) ;
����DefWindowProc��Ϊ�Ӵ�ѶϢ������ʽ���账��������ѶϢ�ṩ�ڶ����������Ǻ���Ҫ�ġ���Ȼһ�㶯��������ֹ��ʽ������������ִ�С�
����������
��
�Ӵ�ѶϢ������ʽ���յĵ�һ��ѶϢ��Ҳ��WndProcѡ�����ĵ�һ��ѶϢ����WM_CREATE����Windows��WinMain�д���CreateWindow��ʽʱ��WndProc�������ѶϢ������˵����HELLOWIN����CreateWindowʱ��Windows����һЩ���������Ĺ���������Щ�����У�Windows����WndProc������һ�������趨Ϊ�Ӵ����ţ��ڶ��������趨ΪWM_CREATE��WndProc����WM_CREATEѶϢ�������ƴ��ظ�Windows�� WindowsȻ����Դ�CreateWindow�����д��ص�HELLOWIN�У�������WinMain�н�����һ���Ĵ�����
ͨ�����Ӵ�ѶϢ������ʽ��WM_CREATE�����ڼ����һ���Ӵ���ʼ����HELLOWIN�����ѶϢ�Ĵ����в���һ����ΪHELLOWIN.WAV����Ч��������ʹ�ü򵥵�PlaySound��ʽ��������һ�㡣�ú�ʽ˵����/Platform SDK/Graphics and Multimedia Services/Multimedia Audio/Waveform Audio�У����ļ���/Platform SDK/Graphics and Multimedia Services/Multimedia Reference/Multimedia Functions�С�
PlaySound�ĵ�һ����������Ч���������ƣ���Ҳ��������Control Panel��Sounds�ж����һ�������ı�����������һ����ʽ��Դ�����ڶ�������ֻ�е���Ч������һ����Դʱ�ű�ʹ�á�����������ָ��һЩѡ�����������У���ָ����һ��������һ�������������ҷ�ͬ���ز�����������PlaySound��ʽ��������Ч������ʼ����ʱ�������أ�������ȴ�������ɡ������ַ����£���ʽ�ܹ�������ʼ����
WndProcͨ�����Ӵ�ѶϢ������ʽ�д���0������������WM_CREATE�Ĵ�����
WM_PAINTѶϢ
��
WndProc�����ĵڶ���ѶϢΪWM_PAINT�����ѶϢ��Windows��ʽ������Ǻ���Ҫ�ġ����Ӵ���ʾ�����һ������ʾ���ݻ���ȫ����Ϊ����Ч��������춱��롸���»��桹ʱ���������ѶϢ֪ͨ��ʽ��
��ʾ�������ʾ������ô������Ч�أ�����������Ӵ���ʱ��������ʾ��������Ч�ģ���Ϊ��ʽ��û�����Ӵ��ϻ�ʲô��������һ��WM_PAINTѶϢ��ͨ��������WinMain�к���UpdateWindowʱ��ָʾ�Ӵ�ѶϢ������ʽ����ʾ�����ϻ�һЩ������
��ʹ���߸ı�HELLOWIN�Ӵ��Ĵ�С�ᣬ��ʾ�������ʾ�������±����Ч������Ӧ�û��ǵã�HELLOWIN��wndclass�ṹ��style��λ�趨Ϊ��־CS_HREDRAW��CS_VREDRAW�������ĸ�ʽ�趨ָʾWindows�����Ӵ���С�ı��ᣬ�Ͱ������Ӵ���ʾ���ݵ�����Ч��Ȼ�ᣬ�Ӵ�ѶϢ������ʽ���յ�һ��WM_PAINTѶϢ��
��ʹ���߽�HELLOWIN��С����Ȼ���ٴν��Ӵ��ָ�Ϊ��ǰ�Ĵ�Сʱ��Windows�����ᱣ����ʾ��������ݡ���ͼ�λ����£��Ӵ���ʾ�����漰���������ܴ���ˣ�Windows���Ӵ���Ч���Ӵ�ѶϢ������ʽ����һ��WM_PAINTѶϢ�����Զ��ָ����Ӵ������ݡ�
���ƶ��Ӵ��������໥�ص�ʱ��Windows������һ���Ӵ��б���һ���Ӵ����ڸǵ����ݡ�����һ���ֲ��ٱ��ڸ�֮�ᣬ���ͱ���־Ϊ��Ч���Ӵ�ѶϢ������ʽ���յ�һ��WM_PAINTѶϢ���Ը����Ӵ������ݡ�
��WM_PAINT�Ĵ����������Ǵ�һ��BeginPaint���п�ʼ��
hdc = BeginPaint (hwnd, &ps) ;
����һ��EndPaint���н�����
EndPaint (hwnd, &ps) ;
�������������У���һ���������dz�ʽ���Ӵ����ţ��ڶ���������ָ����̬ΪPAINTSTRUCT�Ľṹָ�ꡣPAINTSTRUCT�ṹ�а���һЩ�Ӵ�ѶϢ������ʽ����������������ʾ��������ݡ����ǽ�����һ�������۸ýṹ�ĸ�����λ����������ֻ��BeginPaint��EndPaint��ʽ���õ�����
��BeginPaint�����У������ʾ����ı�����δ��ɾ��������Windows��ɾ������ʹ��ע���Ӵ�����WNDCLASS�ṹ��hbrBackground��λ��ָ���Ļ�ˢ��ɾ����������HELLOWIN�У� ����һ����ɫ���û�ˢ������ζ����Windows��ͨ�����Ӵ������趨Ϊ��ɫ��ɾ���Ӵ�������BeginPaint������������ʾ������Ч��������һ����װ�����ݴ��š���װ��������ָʵ������豸������Ѷ��ʾ��������װ��������ʽ�����Ӵ�����ʾ������ʾ���ֺ�ͼ����Ҫװ�����ݴ��š����Ǵ�BeginPaint���ص�װ�����ݴ��Ų�������ʾ����֮���ͼ�����߿�����һ�ԡ�EndPaint�ͷ�װ�����ݴ��ţ�ʹ֮������Ч��
����Ӵ�ѶϢ������ʽ������WM_PAINTѶϢ�����Ǻܺ����ģ������DZ��뱻���͸�DefWindowProc��DefWindowProcֻ�����κ���BeginPaint��EndPaint����ʹ��ʾ������Ч��
������BeginPaint֮�ᣬWndProc��������GetClientRect��
GetClientRect (hwnd, &rect) ;
��һ�������dz�ʽ�Ӵ��Ĵ��š��ڶ���������һ��ָ�ָ꣬��һ��RECT��̬��rectangle�ṹ���ýṹ���ĸ�LONG��λ���ֱ�Ϊleft��top��right��bottom��GetClientRect�����ĸ���λ�趨Ϊ�Ӵ���ʾ����ijߴ硣left��top��λͨ���趨Ϊ0��right��bottom��λ�趨Ϊ��ʾ����Ŀ��Ⱥ͸߶ȣ�ͼԪ��������
WndProc���˽���RECT�ṹָ����ΪDrawText�ĵ��ĸ����������⣬���ٶ���������������
DrawText ( hdc, TEXT ("Hello, Windows 98!"), -1, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER) ;
DrawText����������֣�������������������һ��������춸ú�ʽҪ������֣���һ�������Ǵ�BeginPaint���ص�װ�����ݴ��ţ��ڶ���������Ҫ��������֣������������� -1��ָʾ�ִ�����λԪ��0�ս�ġ�
DrawText����һ��������һϵ��λԪ��꣬���Ǿ���WINUSER.H�ж��壨��Ȼ�������ʾ�����Ч����ʹ��DrawText��һ��GDI��ʽ���У�����ȷʵ��Ϊ�൱�߼��Ļ�ͼ���ܶ���ΪUserģ���һ���֡��˺�ʽ��/Platform SDK/Graphics and Multimedia Services/GDI/Fonts and Text��˵���������ָʾ�����ֱ�����ʾ��һ���ϣ�ˮƽ����ʹ�ֱ����λ춵��ĸ�����ָ���ľ������롣��ˣ������ʽ���н����ִ���Hello, Windows 98!����ʾ����ʾ��������롣
һ����ʾ��������Ч�������ڸı��Сʱ�����������һ������WndProc�ͽ��յ�һ���µ�WM_PAINTѶϢ��WndProcͨ������GetClientRectȡ�ñ仯����Ӵ���С���������Ӵ���������ʾ���֡�
WM_DESTROYѶϢ
��
WM_DESTROYѶϢ����һ����ҪѶϢ����һ��ѶϢָʾ��Windows���ڸ���ʹ���ߵ�ָʾ�ر��Ӵ�����ѶϢ��ʹ���ߵ���Close��ť�����ڳ�ʽ��ϵͳ���ܱ���ѡ�� Closeʱ�����ģ��ڱ��µ����棬���ǽ���ϸ����WM_DESTROYѶϢ�������Ч�ģ���
HELLOWINͨ������PostQuitMessage�Ա�׼��ʽ��ӦWM_DESTROYѶϢ��
PostQuitMessage (0) ;
�ú�ʽ�ڳ�ʽ��ѶϢ�����в���һ��WM_QUITѶϢ��ǰ���ᵽ����GetMessage��춳���WM_QUIT֮��Ĵ�ѶϢ������ȡ��������ѶϢ�����ط�0ֵ������GetMessage�õ�һ��WM_QUITѶϢʱ��������0���⽫����WinMain�˳�ѶϢ��Ȧ������ֹ��ʽ��Ȼ���ʽִ�������������
return msg.wParam ;
�ṹ��wParam��λ�Ǵ��ݸ�PostQuitMessage��ʽ��ֵ��ͨ����0����Ȼ��return�������˳�WinMain����ֹ��ʽ��
WINDOWS��ʽ��Ƶ��ѵ�
��
��ʹ���˶�HELLOWIN��˵�������߶Գ�ʽ�Ľṹ��Ô��������Ȼ�������ء���Ϊ��ͳ������д�òµ¥µï¿½C��ʽʱ��������ʽ���ܰ�����main��ʽ�С�����HELLOWIN�У�WinMainֻ������ע���Ӵ���𣬽����Ӵ�����ѶϢ������ȡ��ѶϢ�ͷ���ѶϢ������ij�ʽ�롣
��ʽ������ʵ�ʶ��������Ӵ�ѶϢ������ʽ�з�������HELLOWIN�У���Щ�������࣬WndProcֻ�Ǽ򵥵ز�����һ����Ч���������Ӵ�����ʾһ���ִ���������������½��У����߽����֣�Windows��ʽ������һ�У����ǻ�Ӧ���͸��Ӵ�ѶϢ������ʽ��ѶϢ�����Ǹ����ϵ���Ҫ�ѵ�֮һ���ڿ�ʼд��Windows��ʽ֮ǰ�������ȸ������
������ң��һ������
��
ǰ�������ᵽ������ʽд�����Ѿ���Ϥ��ʹ����ҵϵͳ���е����������磬C��ʽд����ʹ��fopen��ʽ�򿪵�����fopen��ʽ����ͨ��������ҵϵͳ���򿪵�������һ������Ҳû�С�
����Windows��ͬ������Windows��1000�����ϵĺ�ʽ�ɹ���ʽ���У���WindowsҲ����ʹ���߳�ʽ������ǰ�涨����Ӵ�ѶϢ������ʽWndProc���Ӵ�ѶϢ������ʽ���Ӵ������أ��Ӵ�����dz�ʽ����RegisterClassע��ġ����ݸ���������Ӵ�ʹ������Ӵ�ѶϢ������ʽ�������Ӵ�������ѶϢ��Windowsͨ�������Ӵ�ѶϢ������ʽ���Ӵ�����ѶϢ��
�ڵ�һ�ν����Ӵ�ʱ��Windows����WndProc�����Ӵ��ر�ʱ��WindowsҲ����WndProc���Ӵ��ı��С���ƶ����߱��ͼʾʱ���ӹ��ܱ���ѡ��ijһ��Ŀ��Ų�������С����»���ť���ߴӼ���������Ԫʱ���Լ��Ӵ���ʾ������뱻����ʱ��Windows��Ҫ����WndProc��
������ЩWndProc���ж���ѶϢ����ʽ���С��ڴ����Windows��ʽ�У���ʽ����Ҫ���ֶ���������ѶϢ��Windows���Է��͸��Ӵ�ѶϢ������ʽ��ѶϢͨ������WM��ͷ�����ֱ�ʶ�����Ҷ���WINUSER.H��ͷ�����ж��塣
ʵ���ϣ��ӳ�ʽ����г�ʽ�ڵij�ʽ��һ���������ڴ�ͳ�ij�ʽ����в���ǰ��δ�š�C�е�signal��ʽ��������Ctrl-C�жϻ���ҵϵͳ�������жϡ�ΪMS-DOS��д���ϳ�ʽ�о���������Ӳ���жϵij�ʽ�롣
����Windows�У����ָ�����չΪ����һ���¼����Ӵ��з�����һ�ж���ѶϢ����ʽ�����Ӵ�ѶϢ������ʽ��Ȼ�ᣬ�Ӵ�ѶϢ������ʽ��ij�ַ�ʽ��Ӧ���ѶϢ�����߽�ѶϢ����DefWindowProc�������ڶ�������
��HELLOWIN�У��Ӵ�ѶϢ������ʽ��wParam��lParam����������Ϊ���ݸ�DefWindowProc�IJ����⣬�����������ô�����Щ���������˹��ѶϢ��������Ѷ�������ĺ��������ѶϢ��ء�
����������һ�����ӡ�һ���Ӵ�����ʾ�����С�����˸ı䣬Windows�ͺ����Ӵ����Ӵ�ѶϢ������ʽ���Ӵ�ѶϢ������ʽ��hwnd�����Ǹı��С���Ӵ��Ĵ��ţ����ס��һ���Ӵ�ѶϢ������ʽ�ܴ�������ͬһ���Ӵ�������Ķ���Ӵ���ѶϢ������hwnd���Ӵ�ѶϢ������ʽ֪�����ĸ��Ӵ��ڽ���ѶϢ��������message��WM_SIZE��ѶϢWM_SIZE�IJ���wParam��ֵ��SIZE_RESTORED��SIZE_MINIMIZED��SIZE_MAXIMIZED��SIZE_MAXSHOW��SIZE_MAXHIDE ����WINUSER.H��ͷ�����зֱ���Ϊ����0��4����Ҳ����˵������wParam�����Ӵ��Ƿ���С�����Ƿ���󻯣�����С������󻯣��������ء�
lParam�������������Ӵ��Ĵ�С���¿��Ⱥ��¸߶Ⱦ�Ϊ16λԪֵ������һ���Ϊ32λԪ��lParam��WINDEF.H���ṩ�˰�����ʽд���ߴ�lParam��ȡ��������ֵ�ľ޼������ǽ�����һ��˵������޼���
��ʱ��DefWindowProc������ѶϢ������������ѶϢ�����磬����ʹ����ִ��HELLOWIN������ʹ�������յ����� Close ��ť�����߼����ü��̻����ϵͳ���ܱ���ѡ���� Close �� DefWindowProc������һ���̻��߻������룬�ڼ�⵽ʹ����ѡ���� Close ѡ��֮�ᣬ�����Ӵ�ѶϢ������ʽ����һ��WM_SYSCOMMANDѶϢ��WndProc�����ѶϢ����DefWindowProc��DefWindowProc���Ӵ�ѶϢ������ʽ����һ��WM_CLOSEѶϢ����Ӧ֮��WndProc�ٴν�������DefWindowProc��DestroyWindow����DestroyWindow����Ӧ����WM_CLOSEѶϢ��DestroyWindow����Windows���Ӵ�ѶϢ������ʽ����һ��WM_DESTROYѶϢ��WndProc�ٺ���PostQuitMessage����һ��WM_QUITѶϢ����ѶϢ�����У��Դ�����Ӧ��ѶϢ�����ѶϢ����WinMain�е�ѶϢ��Ȧ��ֹ��Ȼ���ʽ������
���л�ѶϢ������л�ѶϢ
��
�����Ѿ�̸������Windows���Ӵ�����ѶϢ������ζ��Windows�����Ӵ�ѶϢ������ʽ�����ǣ�Windows��ʽҲ��һ��ѶϢ��Ȧ��������GetMessage��ѶϢ������ȡ��ѶϢ�����Һ���DispatchMessage��ѶϢ���͸��Ӵ�ѶϢ������ʽ��
��ô��Windows��ʽ�����εȴ�ѶϢ����������ͨ��ʽ����ͬ�ļ������룩��Ȼ�ὫѶϢ�͵�ij�ط�ȥ���𣿻��ߣ�����ֱ�Ӵӳ�ʽ�������ѶϢ����ʵ���ϣ�������������ڡ�
ѶϢ�ܹ�����Ϊ�����л��ġ��͡������л��ġ������л���ѶϢ����Windows�����ʽѶϢ�����еġ��ڳ�ʽ��ѶϢ��Ȧ�У����´��ز�������Ӵ�ѶϢ������ʽ�������л���ѶϢ��Windows�����Ӵ�ʱֱ���͸��Ӵ�ѶϢ������ʽ��Ҳ����˵�����л���ѶϢ�������͡���ѶϢ���У��������л���ѶϢ�򡸷��͡����Ӵ�ѶϢ������ʽ���κ�����£��Ӵ�ѶϢ������ʽ��������Ӵ����е�ѶϢ--�������л��ĺͷ����л��ġ��Ӵ�ѶϢ������ʽ���Ӵ��ġ�ѶϢ���ġ���
���л�ѶϢ��������ʹ��������Ľ�����Ի�������WM_KEYDOWN��WM_KEYUPѶϢ����������������Ԫ��WM_CHAR���������ƶ���WM_MOUSEMOVE���ͻ���ť��WM_LBUTTONDOWN������ʽ���������л�ѶϢ������ʱ��ѶϢ��WM_TIMER��������ѶϢ��WM_PAINT�����˳�ѶϢ��WM_QUIT����
�����л�ѶϢ��������ѶϢ������������£������л�ѶϢ���Ժ����ض���Windows��ʽ�����磬��WinMain����CreateWindowʱ��Windows�������Ӵ����ڴ����и��Ӵ�ѶϢ������ʽ����һ��WM_CREATEѶϢ����WinMain����ShowWindowʱ��Windows�����Ӵ�ѶϢ������ʽ����WM_SIZE��WM_SHOWWINDOWѶϢ����WinMain����UpdateWindowʱ��Windows�����Ӵ�ѶϢ������ʽ����WM_PAINTѶϢ�����̻�������ʱ���������л�ѶϢ�źţ�Ҳ���ڷ����л�ѶϢ�г��֡����磬�ü��̻���ѡ����һ�����ܱ���ʱ�����̻���ѶϢ�������л��ģ���˵�����ܱ�����ѡ�е�WM_COMMANDѶϢ����ܾ��Ƿ����л��ġ�
��һ������Ȼ�ܸ��ӣ������˵��ǣ����еĴ󲿷�����Windows����ģ��������ǵij�ʽ���¡����Ӵ�ѶϢ������ʽ�ĽǶ���������ЩѶϢ����һ������ġ�ͬ���ķ�ʽ�����ġ��Ӵ�ѶϢ������ʽ���Դ������ǣ�Ҳ���Բ�������
����˵ѶϢ����һ�������ͬ���ķ�ʽ����ʱ������˵����ѶϢ��Ӳ����жϲ�ͬ����һ���Ӵ�ѶϢ������ʽ�д���ѶϢʱ����ʽ���ᱻ����ѶϢͻȻ�жϡ�
��ȻWindows��ʽ���Զ�ִ����ִ�У���ÿ��ִ������ѶϢ����ֻΪ�Ӵ�ѶϢ������ʽ�ڸ�ִ������ִ�е��Ӵ�����ѶϢ�����仰˵��ѶϢ��Ȧ���Ӵ�ѶϢ������ʽ���Dz���ִ�еġ���һ��ѶϢ��Ȧ����ѶϢ�����н���һ��ѶϢ��Ȼ�����DispatchMessage��ѶϢ���͸��Ӵ�ѶϢ������ʽʱ��ֱ���Ӵ�ѶϢ������ʽ�����ƴ��ظ�Windows��DispatchMessage���ܽ���ִ�С�
��Ȼ���Ӵ�ѶϢ������ʽ�ܺ��и��Ӵ�ѶϢ������ʽ������һ��ѶϢ�ĺ�ʽ����ʱ���Ӵ�ѶϢ������ʽ�����ں�ʽ���д���֮ǰ��ɶԵڶ���ѶϢ�Ĵ�������ʱ�Ӵ�ѶϢ������ʽ�����������ѶϢ�����磬���Ӵ��������UpdateWindowʱ��Windows�������Ӵ�ѶϢ������ʽ������WM_PAINTѶϢ���Ӵ�ѶϢ������ʽ����WM_PAINTѶϢ�������ᣬUpdateWindow���н��ѿ��ƴ��ظ��Ӵ�ѶϢ������ʽ��
��Ҳ����˵�Ӵ�ѶϢ������ʽ�����ǿ����롣�ڴ��������£��ⲻ��������⣬���dz�ʽд����Ӧ����ʶ����һ�㡣���磬���������Ӵ�ѶϢ������ʽ�д���һ��ѶϢʱ������һ����̬������Ȼ�������һ��Windows��ʽ���������ʽ����ʱ�������ܱ�֤�Ǹ�������ֵ����Ô���Ǹ�����˵--�ܿ��������е�Windows��ʽ����������һ��ѶϢ�������Ӵ�ѶϢ������ʽ�ڴ������ѶϢʱ�ı��˸ñ�����ֵ����Ҳ���ڱ���Windows��ʽʱ����Щ������ѻ�ѡ�����رյ�Ô��֮һ��
����������£��Ӵ�ѶϢ������ʽ���뱣������ѶϢ��ȡ�õ���Ѷ�����ڴ�����һ��ѶϢʱʹ����Щ��Ѷ����Щ��Ѷ���Դ������Ӵ��ľ�̬��static����������������С�
��Ȼ�����߽������漸�¶Դ���һ����������˽⣬��Ϊ�Ӵ�ѶϢ������ʽ�����������ѶϢ��
�ж�Ѹ��
��
Windows 98��Windows NT��������Ȩʽ�Ķ๤����������ζ����һ����ʽ�ڽ���һ�ʱ�乤��ʱ��Windows��������ʹ���߽������л�����һ����ʽ�С�����һ�����£�Ҳ�����ڵ�Windows��Խ���ǰ16λԪWindows�ĵط���
Ȼ�������Windows��Ƶķ�ʽ����������Ȩʽ�๤������������ϣ�������ӹ��������磬�������ij�ʽ����һ��������������ijһ��ѶϢ���ǵģ�ʹ���߿��Խ������л�����һ����ʽ������ȴ�޷������ij�ʽ�����κζ�����ʹ�����޷��ƶ����ij�ʽ�Ӵ�������������С�����ر�����ʲô����������������Ϊ�����Ӵ�ѶϢ������ʽ��æ춽���һ�ʱ�����ҵ�������ϲ������Ӵ�ѶϢ������ʽ��ִ�����Լ����ƶ������Ų�������ʵ����ȷʵ���������������DefWindowProc���ֵĹ����������뱻����Ϊ�����Ӵ�ѶϢ������ʽ��һ���֡�
������ij�ʽ�ڴ���ijЩѶϢʱ��Ҫ��ʱ�����ҵ�Ļ�������ѡ�����ڵڶ�ʮ������������Щ���������ø�������һЩ����ʹ��������Ȩʽ�๤�����У�Ҳ��Ӧ�������ij�ʽ����өĻ��һ�������������ʹ��������ģ����ǻ���Ϊ���ij�ʽ����bug������׼�Ķ�����˵������ûд�á������ʹ���߾��ó�ʽֻͣ��һ���ӾͰ�ȫ��ѶϢ�п����������ˡ�