¡¶windows»·¾³ÏÂ32λ»ã±àÓïÑÔ³ÌÐòÉè¼Æ¡·

ÏÂÔØ±¾Êé

Ìí¼ÓÊéÇ©

windows»·¾³ÏÂ32λ»ã±àÓïÑÔ³ÌÐòÉè¼Æ- µÚ15½Ú


°´¼üÅÌÉÏ·½Ïò¼ü ¡û »ò ¡ú ¿É¿ìËÙÉÏÏ·­Ò³£¬°´¼üÅÌÉ쵀 Enter ¼ü¿É»Øµ½±¾ÊéĿ¼ҳ£¬°´¼üÅÌÉÏ·½Ïò¼ü ¡ü ¿É»Øµ½±¾Ò³¶¥²¿£¡
¡¡¶Ô»°¿òÀàÐ͵ı߿ò
¡¡
WS_VSCROLL
¡¡00200000h
¡¡´ø´¹Ö±¹ö¶¯Ìõ
¡¡
WS_HSCROLL
¡¡00100000h
¡¡´øË®Æ½¹ö¶¯Ìõ
¡¡
WS_SYSMENU
¡¡00080000h
¡¡´øÏµÍ³²Ëµ¥£¨¼´´ø±êÌâÀ¸×óÉϽǵÄͼ±ê£©
¡¡
WS_THICKFRAME
¡¡00040000h
¡¡¿ÉÒÔÍ϶¯µ÷Õû´óСµÄ±ß¿ò
¡¡
WS_MINIMIZEBOX
¡¡00020000h
¡¡ÓÐ×îС»¯°´Å¥
¡¡
WS_MAXIMIZEBOX
¡¡00010000h
¡¡ÓÐ×î´ó»¯°´Å¥
¡¡

ΪÁËÈÝÒ×Àí½â£¬WindowsҲΪһЩ¶¨ÒåÈ¡ÁËһЩ±ðÃû£¬Í¬Ê±£¬ÓÉÓÚ´°¿ÚµÄ·ç¸ñÍùÍùÊǼ¸ÖÖ·ç¸ñµÄ×éºÏ£¬ËùÒÔWindowsÒ²Ô¤¶¨ÒåÁËһЩ×éºÏÖµ£¬Èç±í4¡£3Ëùʾ¡£

±í4¡£3¡¡¡¡µÈЧµÄ´°¿Ú·ç¸ñÔ¤¶¨ÒåÖµ

Ô¤¶¨ÒåÖµ
¡¡µÈ¡¡¡¡Ð§¡¡¡¡Öµ
¡¡
WS_CHILDWINDOW
¡¡WS_CHILD
¡¡
WS_TILED
¡¡WS_OVERLAPPED
¡¡
WS_ICONIC
¡¡WS_MINIMIZE
¡¡
WS_SIZEBOX
¡¡WS_THICKFRAME
¡¡
WS_OVERLAPPEDWINDOW
¡¡WS_OVERLAPPED¡¡or¡¡WS_CAPTION¡¡or¡¡WS_SYSMENU¡¡or¡¡WS_THICKFRAME¡¡or¡¡WS_MINIMIZEBOX¡¡or¡¡WS_MAXIMIZEBOX
¡¡
WS_TILEDWINDOW
¡¡WS_OVERLAPPEDWINDOW
¡¡
WS_POPUPWINDOW
¡¡WS_POPUP¡¡or¡¡WS_BORDER¡¡or¡¡WS_SYSMENU
¡¡

dwExStyleÊÇWin32ÖÐÀ©Õ¹µÄ£¬ËüÃÇÊÇһЩÒÔWS_EX_¿ªÍ·µÄÔ¤¶¨ÒåÖµ£¬Ö÷Òª¶¨ÒåÁËÒ»Ð©ÌØÊâµÄ·ç¸ñ£¬±í4¡£4¸ø³öÁËһЩ×î³£ÓõÄÌØÊâ·ç¸ñ¡£

±í4¡£4¡¡¡¡´°¿ÚÀ©Õ¹·ç¸ñµÄÔ¤¶¨ÒåÖµ

Ô¤¶¨ÒåÖµ
¡¡16½øÖÆÖµ
¡¡º¬¡¡¡¡¡¡¡¡Òå
¡¡
WS_EX_TOPMOST
¡¡00000008h
¡¡×ÜÔÚ¶¥²ãµÄ´°¿Ú
¡¡
WS_EX_ACCEPTFILES
¡¡00000010h
¡¡ÔÊÐí´°¿Ú½øÐÐÊó±êÍϷŲÙ×÷
¡¡
WS_EX_TOOLWINDOW
¡¡00000080h
¡¡¹¤¾ß´°¿Ú£¨ºÜÕ­µÄ±êÌâÀ¸£©
¡¡
WS_EX_WINDOWEDGE
¡¡00000100h
¡¡Á¢Ìå¸ÐµÄ±ß¿ò
¡¡
WS_EX_CLIENTEDGE
¡¡00000200h
¡¡¿Í»§ÇøÁ¢Ìå±ß¿ò
¡¡

¡¡

Ô¤¶¨ÒåÖµ
¡¡16½øÖÆÖµ
¡¡º¬¡¡¡¡¡¡¡¡Òå
¡¡
WS_EX_OVERLAPPEDWINDOW
¡¡¡¡
¡¡WS_EX_WINDOWEDGE¡¡or¡¡WS_EX_CLIENTEDGE
¡¡
WS_EX_PALETTEWINDOW
¡¡¡¡
¡¡WS_EX_WINDOWEDGE¡¡or¡¡WS_EX_TOOLWINDOW¡¡or¡¡WS_EX_TOPMOST
¡¡

ÓÃÔ¤¶¨ÒåµÄ×éºÏÖµWS_EX_PALETTEWINDOW¿ÉÒԺܷ½±ãµØ¹¹³É¸¡ÔÚÆäËû´°¿ÚÇ°ÃæµÄ¹¤¾ßÀ¸¡£

ÏÂÃæ¿´¼¸ÖÖ²»Í¬µÄ´°¿ÚÍâÐΣ¬Èçͼ4¡£5Ëùʾ£¬´°¿Ú1ÊÇWS_OVERLAPPEDÀàÐ͵Ĵ°¿Ú£¬Ö»ÓÐÒ»¸ö±ß¿ò£¬Ã»ÓпØÖư´Å¥ºÍͼ±ê£»´°¿Ú2ͬʱָ¶¨WS_MAXIMIZEBOX£¬WS_MINIMIZEBOXºÍWS_SYSMENU£¬ÔÚ´°¿Ú1µÄ»ù´¡É϶àÁË¿ØÖư´Å¥ºÍͼ±ê£»´°¿Ú3ÊÇWS_POPUPWINDOW·ç¸ñµÄ£¬ÕâÊÇÒ»¸öûÓбêÌâºÍ¿ØÖư´Å¥µÄµ¯³öʽ´°¿Ú£¬³£¼ûµÄÈí¼þ×°ÈëʱµÄ°æÈ¨´°¿Ú¾ÍÊÇÕâÖÖ·ç¸ñ£»Ç°Ãæ3¸ö´°¿Ú¶¼²»ÄÜͨ¹ýÍ϶¯±ß¿ò¸Ä±ä´óС£¬¶ø´°¿Ú4Ö¸¶¨ÁËWS_THICKFRAME·ç¸ñ£¬¿ÉÒԸıä´óС£¬ËüµÄ±ß¿òÏԵúñÁËÒ»µã£»´°¿Ú5µÄ·ç¸ñÊÇWS_OVERLAPPEDWINDOW£¬ÊÇ×î³£¼ûµÄÊôÐÔ×éºÏ£»´°¿Ú6ÔÚ´°¿Ú5µÄ»ù´¡ÉÏÖ¸¶¨ÁËWS_EX_CLIENTEDGE£¬ËüµÄ¿Í»§ÇøÏÔµÃÓÐÁ¢Ìå¸Ð£»´°¿Ú7ÊǸö¹¤¾ßÀ¸£¬Ö¸¶¨µÄÊÇWS_EX_TOOLWINDOW·ç¸ñ£¬¿ÉÒÔ¿´µ½ËüµÄ±êÌâÀ¸ÒªÐ¡µÃ¶à£»´°¿Ú8Ö¸¶¨ÁËWS_HSCROLLºÍWS_VSCROLL·ç¸ñ£¬´°¿ÚÖжàÁË´¹Ö±ºÍˮƽ¹ö¶¯Ìõ¡£


ͼ4¡£5¡¡¡¡²»Í¬·ç¸ñµÄ´°¿Ú

FirstWindow³ÌÐòÖн¨Á¢´°¿ÚµÄÏà¹Ø´úÂëÊÇÕâÑùµÄ£º

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡invoke¡¡¡¡CreateWindowEx£»WS_EX_CLIENTEDGE£»

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡offset¡¡szClassName£»offset¡¡szCaptionMain£»

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡WS_OVERLAPPEDWINDOW£»

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡100£»100£»600£»400£»

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡NULL£»NULL£»hInstance£»NULL

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡mov¡¡¡¡¡¡¡¡¡¡hWinMain£»eax

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡invoke¡¡¡¡ShowWindow£»hWinMain£»SW_SHOWNORMAL

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡invoke¡¡¡¡UpdateWindow£»hWinMain

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡­

½¨Á¢´°¿ÚÒÔºó£¬eaxÖд«»ØÀ´µÄÊÇ´°¿Ú¾ä±ú£¬Òª°ÑËüÏȱ£´æÆðÀ´£¬Õâʱºò£¬´°¿ÚËäÒѽ¨Á¢£¬µ«»¹Ã»ÓÐÔÚÆÁÄ»ÉÏÏÔʾ³öÀ´£¬ÒªÓÃShowWindow°ÑËüÏÔʾ³öÀ´£¬ShowWindowÒ²¿ÉÒÔÓÃÔÚ±ðµÄµØ·½£¬Ö÷ÒªÓÃÀ´¿ØÖÆ´°¿ÚµÄÏÔʾ״̬£¨ÏÔʾ»òÒþ²Ø£©£¬´óС¿ØÖÆ£¨×î´ó»¯¡¢×îС»¯»òԭʼ´óС£©ºÍÊÇ·ñ¼¤»î£¨µ±Ç°´°¿Ú»¹ÊDZ³ºóµÄ´°¿Ú£©£¬ËüÓô°¿Ú¾ä±ú×öµÚÒ»¸ö²ÎÊý£¬µÚ¶þ¸ö²ÎÊýÔòÊÇÏÔʾµÄ·½Ê½¡£±í4¡£5¸ø³öÁËÏÔʾ·½Ê½Ô¤¶¨ÒåÖµ¡£

±í4¡£5¡¡¡¡ShowWindowº¯ÊýÏÔʾ·½Ê½µÄ¶¨Òå

Ô¤¶¨ÒåÖµ
¡¡µÈ¡¡¡¡Ð§¡¡¡¡Öµ
¡¡
SW_HIDE
¡¡Òþ²Ø´°¿Ú£¬´óС²»±ä£¬¼¤»î״̬²»±ä
¡¡
SW_MAXIMIZE
¡¡×î´ó»¯´°¿Ú£¬ÏÔʾ״̬²»±ä£¬¼¤»î״̬²»±ä
¡¡
SW_MINIMIZE
¡¡×îС»¯´°¿Ú£¬ÏÔʾ״̬²»±ä£¬¼¤»î״̬²»±ä
¡¡
SW_RESTORE
¡¡´Ó×î´ó»¯»ò×îС»¯»Ö¸´Õý³£´óС£¬ÏÔʾ״̬²»±ä£¬¼¤»î״̬²»±ä
¡¡
SW_SHOW
¡¡ÏÔʾ²¢¼¤»î´°¿Ú£¬´óС״̬²»±ä
¡¡
SW_SHOWMAXIMIZED
¡¡ÏÔʾ²¢¼¤»î´°¿Ú£¬ÒÔ×î´ó»¯ÏÔʾ
¡¡
SW_SHOWMINIMIZED
¡¡ÏÔʾ²¢¼¤»î´°¿Ú£¬ÒÔ×îС»¯ÏÔʾ
¡¡
SW_SHOWMINNOACTIVE
¡¡ÏÔʾ´°¿Ú²¢×îС»¯£¬¼¤»î״̬²»±ä
¡¡
SW_SHOWNA
¡¡ÏÔʾ´°¿Ú£¬´óС״̬²»±ä£¬¼¤»î״̬²»±ä
¡¡
SW_SHOWNOACTIVATE
¡¡ÏÔʾ²¢´Ó×î´ó»¯»ò×îС»¯»Ö¸´Õý³£´óС£¬¼¤»î״̬²»±ä
¡¡
SW_SHOWNORMAL
¡¡ÏÔʾ²¢¼¤»î´°¿Ú£¬»Ö¸´Õý³£´óС£¨³õʼ»¯Ê±ÓÃÕâ¸ö²ÎÊý£©
¡¡

´°¿ÚÏÔʾÒÔºó£¬ÓÃUpdateWindow»æÖƿͻ§Çø£¬Ëüʵ¼ÊÉϾÍÊÇÏò´°¿Ú·¢ËÍÁËÒ»ÌõWM_PAINTÏûÏ¢¡£µ½´ËΪֹ£¬Ò»¸ö¶¥²ã´°¿Ú¾ÍÕý³£½¨Á¢²¢ÏÔʾÁË¡£

CreateWindowExÒ²¿ÉÒÔÓÃÀ´½¨Á¢×Ó´°¿Ú£¬WindowsÖÐÓкܶàÔ¤¶¨ÒåµÄ×Ó´°¿ÚÀ࣬Èç°´Å¥ºÍÎı¾¿òµÄÀàÃû·Ö±ðÊÇ¡°Button¡±ºÍ¡°Edit¡±¡£Òª½¨Á¢Ò»¸ö°´Å¥£¬Ö»Òª°ÑlpClassNameÖ¸Ïò¡¡¡°Button¡±×Ö·û´®¾Í¿ÉÒÔÁË¡£ÏÂÃæ¾ÙÀý˵Ã÷½¨Á¢Ò»¸ö°´Å¥µÄ·½·¨£¬´úÂëÈçÏ£º

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£data

szButton¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡db¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡'button'£»0

szButtonText¡¡¡¡¡¡¡¡¡¡db¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡'&OK'£»0

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡­

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡invoke¡¡¡¡¡¡¡¡¡¡¡¡¡¡CreateWindowEx£»NULL£»

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡offset¡¡szButton£»offset¡¡szButtonText£»

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡WS_CHILD¡¡or¡¡WS_VISIBLE£»

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡10£»10£»65£»22£»

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡hWnd£»1£»hInstance£»NULL

ÔÚFirstWindowµÄÔ´³ÌÐòÖмÓÈë°´Å¥ÀàµÄ¶¨Òå×Ö·û´®szButtonºÍ°´Å¥ÎÄ×Ö×Ö·û´®szButtonText£¬È»ºóÔÚ´°¿Ú¹ý³ÌµÄWM_CREATEÏûÏ¢ÖмÓÈ뽨Á¢°´Å¥µÄ´úÂ룬ִÐÐһϣ¬´°¿ÚÖоͳöÏÖÁËÒ»¸ö°´Å¥£¬Èçͼ4¡£6Ëùʾ¡£½¨Á¢°´Å¥µÄʱºò£¬lpWindowName²ÎÊý¾ÍÊǰ´Å¥ÉϵÄÎÄ×Ö£¬·ç¸ñÔòÒ»¶¨ÒªÖ¸¶¨WS_CHILD£¬½¨Á¢µÄ°´Å¥²Å»áÔÚÎÒÃǵÄÖ÷´°¿ÚÉÏ£¬WS_VISIBLEҲҪͬʱָ¶¨£¬·ñÔò°´Å¥²»»áÏÔʾ³öÀ´£¬hMenu²ÎÊýÔÚÕâÀïÓÃ×ö±íʾ×Ó´°¿ÚID£¬½«ËüÉèÖÃΪ1£¬ÔÚ½¨Á¢¶à¸ö×Ó´°¿ÚµÄʱºò£¬IDÓ¦¸ÃÓÐËùÇø±ð¡£Ô´³ÌÐò¿ÉÒÔÔÚËù¸½´ø¹âÅ̵ÄChapter04FirstWindow¡­1Ŀ¼ÖÐÕÒµ½¡£


ͼ4¡£6¡¡¡¡ÓÃCreateWindowEx½¨Á¢µÄ°´Å¥



¡¡
À´Ô´£ºµç×Ó¹¤Òµ³ö°æÉç¡¡×÷ÕߣºÂÞÔÆ±ò¡¡ÉÏÒ»Ò³¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡»ØÊéÄ¿¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ÏÂÒ»Ò³¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
vÉÏÒ»Ò³¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡»ØÊéÄ¿¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ÏÂÒ»Ò³¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡


µÚ4Õ¡¡µÚÒ»¸ö´°¿Ú³ÌÐò


4¡£2¡¡·ÖÎö´°¿Ú³ÌÐò£¨4£©¡¡

¡¡¡¡¡¡¡¡
4¡£2¡£3¡¡¡¡ÏûϢѭ»·

1¡£¡¡ÏûϢѭ»·µÄÒ»°ãÐÎʽ

³ÌÐòÖеÄÒÔÏ´úÂë¾ÍÊÇͨ³£µÄÏûϢѭ»·£º

¡¡¡¡¡¡¡¡¡£while¡¡¡¡TRUE

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡invoke¡¡¡¡GetMessage£»addr¡¡@stMsg£»NULL£»0£»0

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£break¡¡¡¡¡£if¡¡eax¡¡¡¡0

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡invoke¡¡¡¡TranslateMessage£»addr¡¡@stMsg

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡invoke¡¡¡¡DispatchMessage£»addr¡¡@stMsg

¡¡¡¡¡¡¡¡¡£endw

ÏûϢѭ»·Öеöº¯ÊýÒªÓõ½Ò»¸öMSG½á¹¹£¬ÓÃÀ´×öÏûÏ¢´«µÝ£º

MSG¡¡STRUCT

¡¡¡¡Hwnd¡¡¡¡¡¡¡¡¡¡¡¡DWORD¡¡¡¡¡¡¡¡¡¡¡¡£¿

¡¡¡¡Message¡¡¡¡¡¡DWORD¡¡¡¡¡¡¡¡¡¡¡¡£¿

¡¡¡¡WParam¡¡¡¡¡¡¡¡DWORD¡¡¡¡¡¡¡¡¡¡¡¡£¿

¡¡¡¡LParam¡¡¡¡¡¡¡¡DWORD¡¡¡¡¡¡¡¡¡¡¡¡£¿

¡¡¡¡Time¡¡¡¡¡¡¡¡¡¡¡¡DWORD¡¡¡¡¡¡¡¡¡¡¡¡£¿

¡¡¡¡Pt¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡POINT¡¡¡¡¡¡¡¡¡¡¡¡

MSG¡¡ENDS

ËüµÄ¸÷¸ö×ֶεĺ¬ÒåÊÇ£º

¡ñ¡¡¡¡¡¡hwnd¡ª¡ªÏûÏ¢Òª·¢ÏòµÄ´°¿Ú¾ä±ú¡£

¡ñ¡¡¡¡¡¡message¡ª¡ªÏûÏ¢±êʶ·û£¬ÔÚÍ·ÎļþÖÐÒÔWM_¿ªÍ·µÄÔ¤¶¨ÒåÖµ£¨Òâ˼ΪWindows¡¡Message£©¡£

¡ñ¡¡¡¡¡¡wParam¡ª¡ªÏûÏ¢µÄ²ÎÊýÖ®Ò»¡£

¡ñ¡¡¡¡¡¡lParam¡ª¡ªÏûÏ¢µÄ²ÎÊýÖ®¶þ¡£

¡ñ¡¡¡¡¡¡time¡ª¡ªÏûÏ¢·ÅÈëÏûÏ¢¶ÓÁеÄʱ¼ä¡£

¡ñ¡¡¡¡¡¡pt¡ª¡ªÕâÊÇÒ»¸öPOINTÊý¾Ý½á¹¹£¬±íʾÏûÏ¢·ÅÈëÏûÏ¢¶ÓÁÐʱµÄÊó±ê×ø±ê¡£

Õâ¸ö½á¹¹¶¨ÒåÁËÏûÏ¢µÄËùÓÐÊôÐÔ£¬GetMessageº¯Êý¾ÍÊÇ´ÓÏûÏ¢¶ÓÁÐÖÐÈ¡³öÕâÑùÒ»ÌõÏûÏ¢À´µÄ£º

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡invoke¡¡¡¡GetMessage£»lpMsg£»hWnd£»wMsgFilterMin£»wMsgFilterMax

º¯ÊýµÄlpMsgÖ¸ÏòÒ»¸öMSG½á¹¹£¬º¯Êý»áÔÚÕâÀï·µ»ØÈ¡µ½µÄÏûÏ¢£¬hWnd²ÎÊýÖ¸¶¨Òª»ñÈ¡Äĸö´°¿ÚµÄÏûÏ¢£¬Àý×ÓÖÐÖ¸¶¨ÎªNULL£¬±íʾ»ñÈ¡µÄÊÇËùÓб¾³ÌÐòËùÊô´°¿ÚµÄÏûÏ¢£¬wMsgFilterMinºÍwMsgFilterMaxΪ0±íʾ»ñÈ¡ËùÓбàºÅµÄÏûÏ¢¡£

GetMessageº¯Êý´ÓÏûÏ¢¶ÓÁÐÀïÈ¡µÃÏûÏ¢£¬ÌîдºÃMSG½á¹¹²¢·µ»Ø£¬Èç¹û»ñÈ¡µÄÏûÏ¢ÊÇWM_QUITÏûÏ¢£¬ÄÇôeaxÖеķµ»ØÖµÊÇ0£¬·ñÔòeax·µ»Ø·ÇÁãÖµ£¬ËùÒÔÓá¡¡£break¡¡¡£if¡¡eax¡¡¡¡0À´¼ì²é·µ»ØÖµ£¬Èç¹ûÏûÏ¢¶ÓÁÐÖÐÓÐWM_QUITÔòÍ˳öÏûϢѭ»·¡£

TranslateMessage½«MSG½á¹¹´«¸øWindows½øÐÐһЩ¼üÅÌÏûÏ¢µÄת»»£¬µ±ÓмüÅ̰´ÏºͷſªÊ±£¬Windows²úÉúWM_KEYDOWNºÍWM_KEYUP»òWM_SYSKEYDOWNºÍWM_SYSKEYUPÏûÏ¢£¬µ«ÕâЩÏûÏ¢µÄ²ÎÊýÖаüº¬µÄÊǰ´¼üµÄɨÃèÂ룬ת»»³É³£ÓõÄASCIIÂëÒª¾­¹ý²é±í£¬ºÜ²»·½±ã£¬TranslateMessageÓöµ½¼üÅÌÏûÏ¢Ôò½«É¨ÃèÂëת»»³ÉASCIIÂë²¢ÔÚÏûÏ¢¶ÓÁÐÖвåÈëWM_CHAR»òWM_SYSCHARÏûÏ¢£¬²ÎÊý¾ÍÊÇת»»ºÃµÄASCIIÂ룬Èç´ËÒ»À´£¬Òª´¦Àí¼üÅÌÏûÏ¢µÄ»°Ö»Òª´¦ÀíWM_CHARÏûÏ¢¾ÍºÃÁË¡£Óöµ½±ðµÄÏûÏ¢ÔòTranslateMessage²»×ö´¦Àí¡£

×îºó£¬ÓÉDispatchMessage½«ÏûÏ¢·¢Ë͵½´°¿Ú¶ÔÓ¦µÄ´°¿Ú¹ý³ÌÈ¥´¦Àí¡£´°¿Ú¹ý³Ì·µ»ØºóDispatchMessageº¯Êý²Å·µ»Ø£¬È»ºó¿ªÊ¼ÐÂÒ»ÂÖÏûϢѭ»·¡£

2¡£¡¡ÆäËûÐÎʽµÄÏûϢѭ»·

GetMessageº¯ÊýÊdzÌÐò¿ÕÏеÄʱºòÖ÷¶¯½«¿ØÖÆÈ¨½»»¹¸øWindowsµÄÒ»ÖÖ·½Ê½£¬WindowsÊÇÒ»¸öÇÀռʽµÄ¶àÈÎÎñϵͳ£¬ÈÎÎñÖ®¼äÿ20¡¡msÇл»Ò»´Î£¬ÊÔÏëһϣ¬Èç¹û´°¿Ú³ÌÐòÔÚÖ÷´°¿ÚÖвÉÓÃËÀÑ­»·µÈ´ý£¬ÏûÏ¢ÓÉWindowsÖ±½Ó·¢Ë͵½´°¿Ú¹ý³Ì£¬ÄÇô³ÌÐò»áÊÇÏÂÁÐÕâÖÖÑù×Ó£º

¡¡¡¡¡¡¡¡invoke¡¡¡¡CreateWindow£¬¡­

¡¡¡¡¡¡¡¡invoke¡¡¡¡ShowWindow£¬¡­

¡¡¡¡¡¡¡¡invoke¡¡¡¡UpdateWindow£¬¡­

¡¡¡¡¡¡¡¡¡£while¡¡¡¡dwQuitFlag¡¡¡¡0¡¡¡¡¡¡¡¡£»ÒªÍ˳öʱÔÚ´°¿Ú¹ý³ÌÖÐÉèÖÃdwQuitFlag

¡¡¡¡¡¡¡¡¡£endw

¡¡¡¡¡¡¡¡invoke¡¡¡¡ExitProcess£¬¡­

µ«ÕâÑùÒ»À´£¬¼´Ê¹³ÌÐòÔÚ¿ÕÏÐ״̬£¬ÂÖµ½×Ô¼ºµÄ20¡¡msʱ¼äƬµÄʱºò£¬CPUʱ¼ä¾Í»áÈ«²¿ÏûºÄÔÚ¡¡¡£whileÑ­»·ÖУ¬Ê¹ÓÃGetMessageµÄʱºò£¬ÂÖµ½Ó¦ÓóÌÐòʱ¼äƬµÄʱºò£¬Èç¹ûÏûÏ¢¶ÓÁÐÀﻹûÓÐÏûÏ¢£¬ÄÇô³ÌÐò»¹ÊÇÍ£ÁôÔÚGetMessageÄÚ²¿£¬Õâʱ¾Í¿ÉÒÔÓÉWindowsµ±¼Ò×öÖ÷ûÊÕÕâ20¡¡msµÄʱ¼äƬ£¬Èç´Ë±£Ö¤ÁËCPU×ÊÔ´µÄºÏÀíÓ¦Óá£

Èç¹ûÓ¦ÓóÌÐòÏë°ÑËùÓÐʱ¼ä³ä·ÖÓûØÀ´£¬ÏûÏ¢¶ÓÁÐÀïûÓÐÏûÏ¢µÄʱºò²»ÈÃGetMessageÔÚWindowsÄÚ²¿µÈ´ý£¬¹°ÊÖ½»³öÊôÓÚ×Ô¼ºµÄCPUʱ¼ä£¬ÄÇôÏûϢѭ»·¿
СÌáʾ£º°´ »Ø³µ [Enter] ¼ü ·µ»ØÊéÄ¿£¬°´ ¡û ¼ü ·µ»ØÉÏÒ»Ò³£¬ °´ ¡ú ¼ü ½øÈëÏÂÒ»Ò³¡£ ÔÞһϠÌí¼ÓÊéÇ©¼ÓÈëÊé¼Ü