ÓÑÇéÌáʾ£ºÈç¹û±¾ÍøÒ³´ò¿ªÌ«Âý»òÏÔʾ²»ÍêÕû£¬Çë³¢ÊÔÊó±êÓÒ¼ü¡°Ë¢Ð¡±±¾ÍøÒ³£¡
CÓïÑÔʵÀý½Ì³Ì(PDF¸ñʽ)-µÚ16²¿·Ö
¿ì½Ý²Ù×÷: °´¼üÅÌÉÏ·½Ïò¼ü ¡û »ò ¡ú ¿É¿ìËÙÉÏÏ·ҳ °´¼üÅÌÉ쵀 Enter ¼ü¿É»Øµ½±¾ÊéĿ¼ҳ °´¼üÅÌÉÏ·½Ïò¼ü ¡ü ¿É»Øµ½±¾Ò³¶¥²¿! Èç¹û±¾ÊéûÓÐÔĶÁÍ꣬ÏëÏ´μÌÐø½Ó×ÅÔĶÁ£¬¿ÉʹÓÃÉÏ·½ "Êղص½ÎÒµÄä¯ÀÀÆ÷" ¹¦ÄÜ ºÍ "¼ÓÈëÊéÇ©" ¹¦ÄÜ£¡
³£Á¿µÄÏêϸ²Î¿¼Çë¡¡×ÔÐвÎÔÄWin32¡¡SDKÖеÄÎĵµ¡£¡¡¡¡
¡¡¡¡l¡¡×¢Ò⣺¡¡¡¡
¡¡¡¡l¡¡¾¡¹ÜWindows¡¡95ÊÇÒ»¸ö32λµÄ²Ù×÷ϵͳ£¬µ«ÊÇ£¬ÆäÖÐÒ²±£ÁôÁ˺ܡ¡
¡¡¡¡¡¡¡¡¶à16λµÄÌØÕ÷£¬±ÈÈç˵£¬ÔÚWindows¡¡95»·¾³Ï£¬ÏµÍ³×î¶àÖ»¿ÉÒÔ¡¡
¡¡¡¡¡¡ÓÐ16384¸ö´°¿Ú¾ä±ú¡£¶øÔÚWindows¡¡NTÏÂÔòÎÞ´ËÏÞ¡£È»¶ø£¬ÊÂʵ¡¡
¡¡¡¡¡¡ÉÏ£¬¶ÔÓÚÒ»°ãµÄ×ÀÃæ¸öÈË»úϵͳÀ´Ëµ£¬ÎÒÃǼ¸ºõ²»¿ÉÄܳ¬¹ýÕâ¸ö¡¡
¡¡¡¡¡¡¡¡ÏÞÖÆ¡£¡¡¡¡
´´½¨´°¿ÚÍê³ÉÖ®ºó£¬ShowWindowsÏÔʾ¸Ã´°¿Ú£¬µÚ¶þ¸ö²ÎÊýSW_SHOW±í¡¡
ʾÔÚµ±Ç°Î»ÖÃÒÔµ±Ç°´óС¼¤»î²¢ÏÔʾÓɵÚÒ»¸ö²ÎÊý±êʶµÄ´°¿Ú¡£È»¡¡
ºó£¬º¯ÊýUpdateWindowsÏò´°¿Ú·¢ËÍÒ»ÌõWM_PAINTÏûÏ¢£¬ÒÔ֪ͨ´°¿Ú¡¡
¸üÐÂÆä¿Í»§Çø¡£ÐèҪעÒâµÄÊÇ£¬ÓÉUpdateWindows·¢Ë͵ÄWM_PAINTÏû¡¡
Ï¢½«Ö±½Ó·¢Ë͵½´°¿Ú¹ý³Ì¡¡£¨ÔÚÉÏÃæµÄÀý×ÓÖÐÊÇWndProcº¯Êý£©£¬¶ø²»ÊÇ¡¡
·¢Ë͵½½ø³ÌµÄÏûÏ¢¶ÓÁУ¬Òò´Ë£¬¾¡¹ÜÕâʱӦÓóÌÐòµÄÖ÷ÏûϢѻ·ÉÐδ¡¡
Æô¶¯£¬µ«ÊÇ´°¿Ú¹ý³ÌÈԿɽÓÊÕµ½¸ÃWM_PAINTÏûÏ¢²¢¸üÐÂÆäÓû§Çø¡£¡¡¡¡
ÔÚÍê³ÉÉÏÃæµÄ²½ÖèÖ®ºó£¬½øÈëÓ¦ÓóÌÐòµÄÖ÷ÏûϢѻ·¡£Ò»°ãÇé¿öÏ£¬¡¡
Ö÷ÏûϢѻ·¾ßÓÐÏÂÃæµÄ¸ñʽ£º¡¡¡¡
while¡¡£¨GetMessage£¨&msg£»NULL£»0£»0£©£©¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡133¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
£û¡¡¡¡
TranslateMessage£¨&msg£©£»¡¡¡¡
DispatchMessage£¨&msg£©£»¡¡¡¡
£ý¡¡¡¡
Ö÷ÏûϢѻ·ÓɶÔÈý¸öAPIº¯ÊýµÄµ÷ÓúÍÒ»¸öwhile½á¹¹×é³É¡£ÆäÖС¡
GetMessage´Óµ÷ÓÃÏ̵߳ÄÏûÏ¢¶ÓÁÐÖлñÈ¡ÏûÏ¢£¬²¢½«ÏûÏ¢·Åµ½ÓɵÚÒ»¡¡
¸ö²ÎÊýÖ¸¶¨µÄÏûÏ¢½á¹¹ÖС£Èç¹ûÖ¸¶¨Á˵ڶþ¸ö²ÎÊý£¬ÔòGetMessage»ñ¡¡
È¡ÊôÓڸòÎÊýÖ¸¶¨µÄ´°¿Ú¾ä±úËù±êʶµÄ´°¿ÚµÄÏûÏ¢£¬Èç¹û¸Ã²ÎÊýΪ¡¡
NULL£¬ÔòGetMessage»ñÈ¡ÊôÓÚµ÷ÓÃÏ̼߳°ÊôÓÚ¸ÃÏ̵߳ÄËùÓд°¿ÚµÄÏû¡¡
Ï¢¡£×îºóÁ½¸ö²ÎÊýÖ¸¶¨ÁËGetMessageËù»ñÈ¡ÏûÏ¢µÄ·¶Î§£¬Èç¹ûÁ½¸ö²Î¡¡
Êý¾ùΪ0£¬ÔòGetMessage¼ìË÷²¢»ñÈ¡ËùÓпÉÒԵõ½µÄÏûÏ¢¡£¡¡¡¡
ÔÚÉÏÃæµÄ´úÂëÖУ¬±äÁ¿msgÊÇÒ»¸öÀàÐÍΪMSGµÄ½á¹¹¶ÔÏ󣬸ýṹÌåµÄ¡¡
¶¨ÒåÈçÏ£º¡¡¡¡
typedef¡¡struct¡¡tagMSG¡¡£û¡¡//¡¡msg¡¡¡¡
HWND¡¡hwnd£»¡¡¡¡
UINT¡¡message£»¡¡¡¡
WPARAM¡¡wParam£»¡¡¡¡
LPARAM¡¡lParam£»¡¡¡¡
DWORD¡¡time£»¡¡¡¡
POINT¡¡pt£»¡¡£ý¡¡MSG£»¡¡¡¡
ÏÂÃæ½âÊ͸÷³ÉÔ±µÄº¬Ò壺¡¡¡¡
hwnd£º¡¡±êʶ»ñµÃ¸ÃÏûÏ¢µÄ´°¿Ú½ø³ÌµÄ´°¿Ú¾ä±ú¡£¡¡¡¡
message£º¡¡Ö¸¶¨ÏûÏ¢Öµ¡£¡¡¡¡
wParam£º¡¡Æ京ÒåÌض¨ÓÚ¾ßÌåµÄÏûÏ¢ÀàÐÍ¡£¡¡¡¡
lParam£º¡¡Æ京ÒåÌض¨ÓÚ¾ßÌåµÄÏûÏ¢ÀàÐÍ¡£¡¡¡¡
time£º¡¡Ö¸¶¨ÏûÏ¢·¢ËÍʱµÄʱ¼ä¡£¡¡¡¡
pt£º¡¡ÒÔÆÁÄ»×ø±ê±íʾµÄÏûÏ¢·¢ËÍʱµÄÊó±êÖ¸ÕëµÄλÖᣡ¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡134¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
ÔÚwhileÑ»·ÌåÖеÄTranslateMessageº¯Êý½«ÐéÄâ°´¼üÏûÏ¢·ÒëΪ×Ö¡¡
·ûÏûÏ¢£¬È»ºó½«ÏûÏ¢·¢Ë͵½µ÷ÓÃÏ̵߳ÄÏûÏ¢¶ÓÁУ¬ÔÚÏÂÒ»´Îµ÷Óá¡
GetMessageº¯Êý»òPeekMessageº¯Êýʱ£¬¸Ã×Ö·ûÏûÏ¢½«±»»ñÈ¡¡£¡¡
TranslateMessageº¯Êý½«WM_KEYDOWNºÍWM_KEYUPÐéÄâ°´¼ü×éºÏ·ÒëΪ¡¡
WM_CHARºÍWM_DEADCHAR£¬½«WM_SYSKEYDOWNºÍWM_SYSKEYUPÐéÄâ°´¼ü×é¡¡
ºÏ·ÒëΪWM_SYSCHARºÍWM_SYSREADCHAR¡£ÐèҪעÒâµÄÒ»µãÊÇ£¬½öµ±Ïà¡¡
Ó¦µÄÐéÄâ°´¼ü×éºÏÄܹ»±»·ÒëΪËù¶ÔÓ¦µÄASCII×Ö·ûʱ£¬¡¡
TranslateMessage²Å·¢ËÍÏàÓ¦µÄWM_CHARÏûÏ¢¡£¡¡¡¡
Èç¹ûÒ»¸ö×Ö·ûÏûÏ¢±»·¢Ë͵½µ÷ÓÃÏ̵߳ÄÏûÏ¢¶ÓÁУ¬Ôò¡¡
TranlateMessage·µ»Ø·ÇÁãÖµ£¬·ñÔò·µ»ØÁãÖµ¡£¡¡¡¡
¡¡¡¡l¡¡×¢Ò⣺¡¡¡¡
¡¡¡¡l¡¡ÓëÔÚWindows¡¡95²Ù×÷ϵͳϲ»Í¬£¬ÔÚWindows¡¡NTÏ£¬¡¡
¡¡¡¡¡¡TranslateMessage¶ÔÓÚ¹¦ÄܼüºÍ¹â±ê¼ýÍ·¼üÒ²·µ»ØÒ»¸ö·ÇÁãÖµ¡£¡¡¡¡
È»ºó£¬º¯ÊýDispatchMessage½«ÊôÓÚijһ´°¿ÚµÄÏûÏ¢·¢Ë͸ô°¿ÚµÄ´°¡¡
¿Ú¹ý³Ì¡£Õâ¸ö´°¿ÚÓÉMSG½á¹¹ÖеÄhwnd³ÉÔ±Ëù±êʶµÄ¡£º¯ÊýµÄ·µ»ØÖµ¡¡
Ϊ´°¿Ú¹ý³ÌµÄ·µ»ØÖµ£¬µ«ÊÇ£¬ÎÒÃÇÒ»°ã²»Ê¹ÓÃÕâ¸ö·µ»ØÖµ¡£ÕâÀïҪע¡¡
ÒâµÄÊÇ£¬²¢²»Ò»¶¨ÊÇËùÓÐÊôÓÚijһ¸ö´°¿ÚµÄÏûÏ¢¶¼·¢Ë͸ø´°¿ÚµÄ´°¿Ú¡¡
¹ý³Ì£¬±ÈÈç¶ÔÓÚWM_TIMERÏûÏ¢£¬Èç¹ûÆälParam²ÎÊý²»ÎªNULLµÄ»°£¬ÓÉ¡¡
¸Ã²ÎÊýËùÖ¸¶¨µÄº¯Êý½«±»µ÷Ó㬶ø²»ÊÇ´°¿Ú¹ý³Ì¡£¡¡¡¡
Èç¹ûGetMessage´ÓÏûÏ¢¶ÓÁÐÖеõ½Ò»¸öWM_QUITÏûÏ¢£¬ÔòËü½«·µ»ØÒ»¡¡
¸ö¼ÙÖµ£¬´Ó¶øÍ˳öÏûϢѻ·£¬WM_QUITÏûÏ¢µÄwParam²ÎÊýÖ¸¶¨ÁËÓÉ¡¡
PostQuitMessageº¯Êý¸ø³öµÄÍ˳öÂ룬һ°ãÇé¿öÏ£¬WinMainº¯Êý·µ»Ø¡¡
ͬһֵ¡£¡¡¡¡
ÏÂÃæÎÒÃÇÀ´¿´Ò»Ï³ÌÐòÖ÷´°¿ÚµÄ´°¿Ú¹ý³ÌWndProc¡£´°¿Ú¹ý³ÌÃûÊÇ¿É¡¡
ÒÔÓÉÓû§×ÔÐж¨Ò壬ȻºóÔÚ×¢²á´°¿ÚÀàʱÔÚWNDCLASS½á¹¹ÖÐÖ¸¶¨¡£µ«¡¡
ÊÇ£¬Ò»°ãÀ´Ëµ£¬³ÌÐò¶¼°Ñ´°¿Ú¹ý³ÌÃüÁîΪWndProcÀ´ÀàËƵÄÃû³Æ£¬Èç¡¡
MainWndProcµÈ£¬²¢²»ÊÇÒ»¶¨ÒªÕâÑù×ö£¬µ«ÊÇÕâÑùÃ÷ÏÔµÄÓÐÀûÓÚÔÄ¡¡
¶Á£¬Òò´ËÒ²ÊÇÎÒÃÇÍƼöµÄ×ö·¨¡£´°¿Ú¹ý³Ì¾ßÓÐÈçϵÄÔÐÍ£º¡¡¡¡
LRESULT¡¡WINAPI¡¡WndProc£¨HWND£»UINT£»WPARAM£»LPARAM£©£»¡¡¡¡
»ò¡¡¡¡
LRESULT¡¡CALLBACK¡¡WndProc£¨HWND£»UINT£»WPARAM£»LPARAM£©£»¡¡¡¡
¶ÔÓÚ±àÒëÆ÷¶øÑÔ£¬Á½ÖÖÊéдÐÎʽ¶¼ÊÇÒ»ÑùµÄ£¬ËüÃǶ¼µÈ¼ÛÓÚ¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡135¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
long¡¡__stdcall¡¡WndProc£¨void¡¡*£»unsigned¡¡int£»unsigned¡¡int£»long£©¡¡¡¡
´°¿Ú¹ý³ÌʹÓÃÁËËĸö²ÎÊý£¬ÔÚËü±»µ÷ÓÃʱ£¨ÔÙÇ¿µ÷Ò»µã£¬Ò»°ãÇé¿ö¡¡
Ï£¬´°¿Ú¹ý³ÌÊÇÓɲÙ×÷ϵͳµ÷Ó㬶ø²»ÊÇÓÉÓ¦ÓóÌÐòµ÷Óõģ¬Õâ¾ÍÊÇ¡¡
ÎÒÃÇΪʲô½«ËüÃdzÆΪ»Øµ÷º¯ÊýµÄµÀÀí£©£¬ÕâËĸö²ÎÊý¶ÔÓ¦ÓÚËù·¢ËÍ¡¡
ÏûÏ¢½á¹¹µÄÇ°Ëĸö³ÉÔ±¡£ÏÂÃæ¸ø³öÁËÒ»¸ö´°¿Ú¹ý³ÌµÄÀý×Ó£º¡¡¡¡
//¡¡WndProc¡¡Ö÷´°¿Ú¹ý³Ì¡¡¡¡
LRESULT¡¡WINAPI¡¡WndProc¡¡£¨HWND¡¡hWnd£»¡¡¡¡
UINT¡¡msg£»¡¡¡¡
WPARAM¡¡wParam£»¡¡¡¡
LPARAM¡¡lParam£©¡¡¡¡
£û¡¡¡¡
HDC¡¡hdc£»¡¡¡¡
RECT¡¡rc£»¡¡¡¡
HPEN¡¡hPen£»hPenOld£»¡¡¡¡
HBRUSH¡¡hBrush£»hBrushOld£»¡¡¡¡
switch¡¡£¨msg£©¡¡¡¡
£û¡¡¡¡
case¡¡WM_PAINT£º¡¡¡¡
hdc=GetDC£¨hWnd£©£»¡¡¡¡
GetClientRect£¨hWnd£»&rc£©£»¡¡¡¡
hPen=CreatePen£¨PS_SOLID£»0£»RGB£¨0£»0£»0£©£©£»¡¡¡¡
hBrush=CreateHatchBrush£¨HS_DIAGCROSS£»RGB£¨0£»0£»0£©£©£»¡¡¡¡
hPenOld=SelectObject£¨hdc£»hPen£©£»¡¡¡¡
hBrushOld=SelectObject£¨hdc£»hBrush£©£»¡¡¡¡
Ellipse£¨hdc£»rc¡£left£»rc¡£top£»rc¡£right£»rc¡£bottom£©£»¡¡¡¡
SelectObject£¨hdc£»hPenOld£©£»¡¡¡¡
SelectObject£¨hdc£»hBrushOld£©£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡136¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
ReleaseDC£¨hWnd£»hdc£©£»¡¡¡¡
break£»¡¡¡¡
case¡¡WM_DESTROY£º¡¡¡¡
PostQuitMessage£¨0£©£»¡¡¡¡
break£»¡¡¡¡
default£º¡¡¡¡
break£»¡¡¡¡
£ý¡¡¡¡
return¡¡DefWindowProc£¨hWnd£»msg£»wParam£»lParam£©£»¡¡¡¡
£ý¡¡¡¡
Ôڸô°¿Ú¹ý³ÌÖУ¬ÎÒÃÇ´¦ÀíÁË×î»ù±¾Á½ÌõÏûÏ¢¡£¡¡¡¡
µÚÒ»ÌõÏûÏ¢ÊÇWM_PAINT£¬µ±´°¿Ú¿Í»§ÇøµÄÈ«²¿»òÒ»²¿·ÖÐèÒªÖØ»æʱ£¬¡¡
ϵͳÏò¸Ã´°¿Ú·¢Ë͸ÃÏûÏ¢¡£ÔÚÇ°ÃæµÄ¹ý³ÌÖÐÎÒÃÇÒѾÌáµ½¹ý£¬ÔÚʹÓá¡
ShowWindowº¯ÊýÏÔʾ´°¿ÚÖ®ºó£¬Í¨³£Ëæ¼´µ÷Óú¯ÊýUpdateWindow£¬¸Ã¡¡
º¯ÊýÖ±½ÓÏò´°¿Ú¹ý³Ì·¢ËÍÒ»¸öWM_PAINTÏûÏ¢£¬ÒÔ֪ͨ´°¿Ú»æÖÆÆä¿Í»§¡¡
Çø¡£ÔÚ¸ÃÏûÏ¢µÄ´¦Àíº¯ÊýÖУ¬ÎÒÃÇÏÈʹÓÃGetDC»ñµÃ´°¿ÚµÄÉ豸¾ä¡¡
±ú£¬¹ØÓÚÉ豸¾ä±ú±¾ÊéºóÃ潫ҪרÃÅÉæ¼°£¬ÕâÀïÎÒÃÇÖ»ÐèÖªµÀËüÊÇÓá¡
À´µ÷Óø÷ÖÖ»æͼ·½·¨µÄ¡£È»ºóµ÷ÓÃGetClientRect»ñµÃµ±Ç°´°¿ÚµÄ¿Í¡¡
»§Çø¾ØÐΡ£½Ó×ŵ÷ÓÃCreatePen´´½¨Ò»¸öºÚÉ«»±Ê£¬µ÷Óá¡
CreateHatchBrush´´½¨Ò»¸ö45¶È½»²æÏßµÄÌî³ä»Ë¢£¬²¢ÇÒ¡¡
SelectObjectº¯Êý½«ËüÃÇÑ¡ÈëÉ豸ÃèÊö±íÖУ¬ÔÓеĻ±ÊºÍ»Ë¢±»±£¡¡
´æµ½hPenOldºÍhBrushOldÖУ¬ÒÔ±ãÒÔºó»Ö¸´¡£Íê³ÉÒÔÉϲ½ÖèÖ®ºó£¬µ÷¡¡
ÓÃEllipseº¯ÊýÒÔµ±Ç°¿Í»§Çø´óС»æÖÆÒ»¸öÍÖÔ²¡£×îºó£¬ÔÙÒ»´Îµ÷Óá¡
SelectObjectº¯Êý»Ö¸´ÔÓеĻ±ÊºÍ»Ë¢£¬²¢µ÷ÓÃReleaseDCÊÍ·ÅÉè¡¡
±¸ÃèÊö±í¾ä±ú¡£ÔÚÕâ¸öÏûÏ¢µÄ´¦Àí´úÂëÖУ¬ÎÒÃÇÉæ¼°µ½ÁËһЩеĸš¡
Äî¡¢Êý¾ÝÀàÐͺÍAPIº¯Êý£¬È»¶ø±¾Õ²¢²»×ÅÒâÓÚ½²ÊöÕâЩÄÚÈÝ£¬¶ÁÕß¡¡
Ò²²»±ØÉËüÃÇ£¬ÕâЩ´úÂëÖ»ÊÇΪÁËÍêÕû¸ÃʾÀý³ÌÐò²ÅʹÓõġ£¶ÔÓÚ¡¡
´°¿ÚÀ´Ëµ£¬³ýÁË¿Í»§ÇøÒÔÍâµÄÆäËüÄÚÈݽ«ÓÉϵͳ½øÐÐÖػ棬ÕâЩÄÚÈÝ¡¡
°üÀ¨´°¿Ú±êÌâÌõ¡¢±ß¿ò¡¢²Ëµ¥Ìõ¡¢¹¤¾ßÌõÒÔ¼°ÆäËü¿Ø¼þ£¬Èç¹û°üº¬ÁË¡¡
ËüÃǵĻ°¡£ÕâÖÖÖØ»æÍùÍù·¢ÉúÔÚ¸²¸ÇÓÚ´°¿ÚÉÏ·½µÄÆäËü´°¿Ú±»ÒÆ×ߣ¬¡¡
»òÕßÊÇ´°¿Ú±»Òƶ¯»ò¸Ä±ä´óСʱ¡£Òò´Ë£¬¶ÔÓÚ´ó¶àÊý´°¿Ú¹ý³ÌÀ´Ëµ£¬¡¡
WM_PAINTÏûÏ¢ÊDZØÐë´¦ÀíµÄ¡£¡¡¡¡
ÁíÒ»¸ö¶ÔÓÚ¾ø´ó¶àÊý´°¿Ú¹ý³Ì¶¼±ØÐë´¦ÀíµÄÏûÏ¢ÊÇWM_DESTROY£¬µ±´°¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡137¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
¿Ú±»³·Ïûʱ£¨±ÈÈçÓû§´Ó´°¿ÚµÄϵͳ²Ëµ¥ÖÐÑ¡ÔñÁË¡¡¡°¹Ø±Õ¡±£¬»òÕßµ¥¡¡
»÷ÁËÓұߵÄС²æ£¬¶ÔÓÚÕâЩʼþ£¬WindowsµÄĬÈÏ´¦ÀíÊǵ÷Óá¡
DestroyWindowº¯Êý³·ÏúÏàÓ¦µÄ´°¿Ú£©£¬½«»á½ÓÊÕµ½¸ÃÏûÏ¢¡£ÓÉÓÚ±¾³Ì¡¡
Ðò½öÔÚÒ»¸ö´°¿Ú£¬Òò´ËÔÚÕâÖÖÇé¿öÏÂÓ¦¸ÃÖÕÖ¹Ó¦ÓóÌÐòµÄÖ´ÐУ¬Òò´Ë¡¡
ÎÒÃǵ÷ÓÃÁËPostQuitMessageº¯Êý£¬¸Ãº¯ÊýÏòÏ̵߳ÄÏûÏ¢¶ÓÁÐÖзÅÈë¡¡
Ò»¸öWM_QUITÏûÏ¢£¬´«µÝ¸øPostQuitMessageº¯ÊýµÄ²ÎÊý½«³ÉΪ¡¡
WM_QUITÏûÏ¢µÄwParam²ÎÊý£¬ÔÚÉÏÃæµÄÀý×ÓÖУ¬¸ÃֵΪ0¡£¡¡¡¡
¶ÔÓÚÆäËüÇé¿ö£¬ÔÚÉÏÃæµÄʾÀý³ÌÐòÖÐÎÒÃÇûÓбØÒª½øÐд¦Àí£¬¡¡
WindowsרÃÅΪ´ËÌṩÁËÒ»¸öĬÈϵĴ°¿Ú¹ý³Ì£¬³ÆΪDefWindowProc£¬¡¡
ÎÒÃÇÖ»ÐèÒªÒÔWndProcµÄ²ÎÊýÔ·â²»¶¯µÄµ÷ÓÃĬÈÏ´°¿Ú¹ý³Ì¡¡
DefWindowProc£¬²¢½«Æä·µ»ØÖµ×÷ΪWndProcµÄ·µ»ØÖµ¼´¿É¡£¡¡¡¡
½«ÉÏÃæ½²ÊöµÄËùÓÐÄÚÈÝ×ÛºÏÆðÀ´£¬ÎÒÃǾÍÒѾʹÓÃWin32¡¡¡¡¡¡SDKÍê³ÉÁË¡¡
Ò»¸ö¹¦Äܼòµ¥£¬µ«ÊǽṹÍêÕûµÄWin32Ó¦ÓóÌÐòÁË¡£¶ÔÓÚʹÓÃWin32¡¡¡¡
SDK±àдµÄʵÓõÄWin32Ó¦ÓóÌÐò£¬ËüÃǵĽṹÓë´ËÏà±ÈÒª¸´Ôӵö࣬¡¡
ÔÚÕâЩÇé¿öÏ£¬Ó¦ÓóÌÐòÒ²Ðí²»½ö½ö°üÀ¨Ò»¸ö´°¿Ú£¬¶ø¶ÔÓ¦µÄ´°¿Ú¹ý¡¡
³ÌÖеÄswitch½á¹¹Ò»°ãÒ²»áÊÇÒ»¸öÒì³£ÅòÕ͵ÄǶÌ×ʽswitch½á¹¹¡£Èç¡¡
´ËÅÓ´óµÄÏûÏ¢´¦Àí¹ý³Ì´ó´óÔö¼ÓÁ˳ÌÐòµ÷ÊÔºÍά»¤µÄÄѶȣ¬Ê¹ÓÃMFC¡¡
ÔòÓпÉÄÜÔںܶà³Ì¶ÈÉϼõÇáÕâÖÖ¸ºµ££¬Õâ±ãÊÇMFCΪ¹ã´ó³ÌÐòÔ±ËùÀÖ¡¡
ÓÚ½ÓÊÜ£¬ÒÔÖÁ½ñÌì³ÉΪʵ¼ÊÉϵĹ¤Òµ±ê×¼µÄÔÒò¡£µ«ÊÇ£¬²»¹ÜËüÈçºÎ¡¡
¸´ÔÓ£¬¹é¸ùµ½µ×£¬Ò»°ãÇé¿öÏ£¬ËüÈÔÈ»¾ßÓкÍÎÒÃǵÄÕâ¸ö¹¦Äܼòµ¥µÄ¡¡
Win32Ó¦ÓóÌÐòÒ»Ñù»òÀàËƵĽṹ¡£ÎªÁ˶ÁÕßÔĶÁºÍ·ÖÎö·½±ã£¬ÎÒÃÇ¡¡
°ÑÕâ¸ö³ÌÐòµÄÍêÕû´úÂë¸ø³öÈçÏ£º¡¡¡¡
#include¡¡¡¡¡¡
//¡¡º¯ÊýÔÐÍ¡¡¡¡
int¡¡WINAPI¡¡WinMain£¨HINSTANCE£»HINSTANCE£»LPSTR£»int£©£»¡¡¡¡
LRESULT¡¡WINAPI¡¡WndProc£¨HWND£»UINT£»WPARAM£»LPARAM£©£»¡¡¡¡
//¡¡WinMain¡¡º¯Êý¡¡¡¡
int¡¡WINAPI¡¡WinMain¡¡£¨HINSTANCE¡¡hInstance£»¡¡¡¡
HINSTANCE¡¡hPrevInstance£»¡¡¡¡
LPSTR¡¡lpCmdLine£»¡¡¡¡
int¡¡nCmdShow£©¡¡¡¡
£û¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡138¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
HWND¡¡hWnd£»¡¡//¡¡Ö÷´°¿Ú¾ä±ú¡¡¡¡
MSG¡¡msg£»¡¡//¡¡´°¿ÚÏûÏ¢¡¡¡¡
WNDCLASS¡¡wc£»¡¡//¡¡´°¿ÚÀà¡¡¡¡
if¡¡£¨£¡hPrevInstance£©¡¡¡¡
£û¡¡¡¡
//¡¡Ìî³ä´°¿ÚÀàÐÅÏ¢¡¡¡¡
wc¡£style=CS_HREDRAW£üCS_VREDRAW£»¡¡¡¡
wc¡£lpfnWndProc=WndProc£»¡¡¡¡
wc¡£cbClsExtra=0£»¡¡¡¡
wc¡£cbWndExtra=0£»¡¡¡¡
wc¡£hInstance=hInstance£»¡¡¡¡
wc¡£hIcon=LoadIcon£¨NULL£»IDI_APPLICATION£©£»¡¡¡¡
wc¡£hCursor=LoadCursor£¨NULL£»IDC_ARROW£©£»¡¡¡¡
wc¡£hbrBackground=GetStockObject£¨WHITE_BRUSH£©£»¡¡¡¡
wc¡£lpszMenuName=NULL£»¡¡¡¡
wc¡£lpszClassName=¡¨SdkDemo1¡¨£»¡¡¡¡
//¡¡×¢²á´°¿ÚÀà¡¡¡¡
RegisterClass£¨&wc£©£»¡¡¡¡
£ý¡¡¡¡
//¡¡´´½¨Ó¦ÓóÌÐòÖ÷´°¿Ú¡¡¡¡
hWnd=CreateWindow¡¡£¨¡¨SdkDemo1¡¨£»¡¡//¡¡´°¿ÚÀàÃû¡¡¡¡
¡¨µÚÒ»¸öWin32¡¡SDKÓ¦ÓóÌÐò¡¨£»¡¡//¡¡´°¿Ú±êÌâ¡¡¡¡
WS_OVERLAPPEDWINDOW£»¡¡//¡¡´°¿ÚÑùʽ¡¡¡¡
CW_USEDEFAULT£»¡¡//¡¡³õʼ»¯¡¡x¡¡×ø±ê¡¡¡¡
CW_USEDEFAULT£»¡¡//¡¡³õʼ»¯¡¡y¡¡×ø±ê¡¡¡¡
CW_USEDEFAULT£»¡¡//¡¡³õʼ»¯´°¿Ú¿í¶È¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡139¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
CW_USEDEFAULT£»¡¡//¡¡³õʼ»¯´°¿Ú¸ß¶È¡¡¡¡
NULL£»¡¡//¡¡¸¸´°¿Ú¾ä±ú¡¡¡¡
NULL£»¡¡//¡¡´°¿Ú²Ëµ¥¾ä±ú¡¡¡¡
hInstance£»¡¡//¡¡³ÌÐòʵÀý¾ä±ú¡¡¡¡
NULL£©£»¡¡//¡¡´´½¨²ÎÊý¡¡¡¡
//¡¡ÏÔʾ´°¿Ú¡¡¡¡
ShowWindow£¨hWnd£»SW_SHOW£©£»¡¡¡¡
//¡¡¸üÐÂÖ÷´°¿Ú¿Í»§Çø¡¡¡¡
UpdateWindow£¨hWnd£©£»¡¡¡¡
//¡¡¿ªÊ¼ÏûϢѻ·¡¡¡¡
while¡¡£¨GetMessage£¨&msg£»NULL£»0£»0£©£©¡¡¡¡
£û¡¡¡¡
TranslateMessage£¨&msg£©£»¡¡¡¡
DispatchMessage£¨&msg£©£»¡¡¡¡
£ý¡¡¡¡
return¡¡msg¡£wParam£»¡¡¡¡
£ý¡¡¡¡
//¡¡WndProc¡¡Ö÷´°¿Ú¹ý³Ì¡¡¡¡
LRESULT¡¡WINAPI¡¡WndProc¡¡£¨HWND¡¡hWnd£»¡¡¡¡
UINT¡¡msg£»¡¡¡¡
WPARAM¡¡wParam£»¡¡¡¡
LPARAM¡¡lParam£©¡¡¡¡
£û¡¡¡¡
HDC¡¡hdc£»¡¡¡¡
RECT¡¡rc£»¡¡¡¡
HPEN¡¡hPen£»hPenOld£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡140¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
HBRUSH¡¡hBrush£»hBrushOld£»¡¡¡¡
switch¡¡£¨msg£©¡¡¡¡
£û¡¡¡¡
case¡¡WM_PAINT£º¡¡¡¡
hdc=GetDC£¨hWnd£©£»¡¡¡¡
GetClientRect£¨hWnd£»&rc£©£»¡¡¡¡
hPen=CreatePen£¨PS_SOLID£»0£»RGB£¨0£»0£»0£©£©£»¡¡¡¡
hBrush=CreateHatchBrush£¨HS_DIAGCROSS£»RGB£¨0£»0£»0£©£©£»¡¡¡¡
hPenOld=SelectObject£¨hdc£»hPen£©£»¡¡¡¡
hBrushOld=SelectObject£¨hdc£»hBrush£©£»¡¡¡¡
Ellipse£¨hdc£»rc¡£left£»rc¡£top£»rc¡£right£»rc¡£bottom£©£»¡¡¡¡
SelectObject£¨hdc£»hPenOld£©£»¡¡¡¡
SelectObject£¨hdc£»hBrushOld£©£»¡¡¡¡
ReleaseDC£¨hWnd£»hdc£©£»¡¡¡¡
break£»¡¡¡¡
case¡¡WM_DESTROY£º¡¡¡¡
PostQuitMessage£¨0£©£»¡¡¡¡
break£»¡¡¡¡
default£º¡¡¡¡
break£»¡¡¡¡
£ý¡¡¡¡
return¡¡DefWindowProc£¨hWnd£»msg£»wParam£»lParam£©£»¡¡¡¡
£ý¡¡¡¡
¸ÃʾÀý´úÂëÖеÄËùÓÐÄÚÈݶ¼ÒÑÔÚÇ°Ãæ×öÁËÍêÕûµÄ½²½â£¬ÕâÀïÎÒÃǼòµ¥¡¡
µÄ˵һÏÂÈçºÎÔÚMicrosoft¡¡Developer¡¡StudioÖбàÒë¸ÃʾÀý³ÌÐò¡£Çë¡¡
°´ÏÂÃæµÄ²½Öè½øÐУº¡¡¡¡
1¡£¡¡¡¡Ñ¡ÔñFile²Ëµ¥ÏµÄNewÃüÁн¨Ò»¸öWin32¡¡¡¡Application¹¤³Ì£¬¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡141¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
ÕâÀïÎÒÃǼÙÉè¶Ô¸Ã¹¤³ÌÃüÃûΪSdkDemo1£¬¶øÊÂʵÉÏÕâÍêÈ«È¡¾öÓÚÄãµÄ¡¡
ÒâÔ¸¡£Õâ¸ö¹ý³ÌÒѾÔÚ±¾ÊéµÄµ
¿ì½Ý²Ù×÷: °´¼üÅÌÉÏ·½Ïò¼ü ¡û »ò ¡ú ¿É¿ìËÙÉÏÏ·ҳ °´¼üÅÌÉ쵀 Enter ¼ü¿É»Øµ½±¾ÊéĿ¼ҳ °´¼üÅÌÉÏ·½Ïò¼ü ¡ü ¿É»Øµ½±¾Ò³¶¥²¿!
ÎÂÜ°Ìáʾ£º ο´Ð¡ËµµÄͬʱ·¢±íÆÀÂÛ£¬Ëµ³ö×Ô¼ºµÄ¿´·¨ºÍÆäËüС»ï°éÃÇ·ÖÏíÒ²²»´íŶ£¡·¢±íÊéÆÀ»¹¿ÉÒÔ»ñµÃ»ý·ÖºÍ¾Ñé½±Àø£¬ÈÏÕæдԴ´ÊéÆÀ ±»²ÉÄÉΪ¾«ÆÀ¿ÉÒÔ»ñµÃ´óÁ¿½ð±Ò¡¢»ý·ÖºÍ¾Ñé½±ÀøŶ£¡