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

ÏÂÔØ±¾Êé

Ìí¼ÓÊéÇ©

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


°´¼üÅÌÉÏ·½Ïò¼ü ¡û »ò ¡ú ¿É¿ìËÙÉÏÏ·­Ò³£¬°´¼üÅÌÉ쵀 Enter ¼ü¿É»Øµ½±¾ÊéĿ¼ҳ£¬°´¼üÅÌÉÏ·½Ïò¼ü ¡ü ¿É»Øµ½±¾Ò³¶¥²¿£¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡invoke¡¡¡¡CreateWindowEx£»WS_EX_CLIENTEDGE£»offset¡¡szClass2£»

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡offset¡¡szCaption2£»WS_OVERLAPPEDWINDOW£»

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡100£»100£»300£»300£»

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

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡mov¡¡¡¡¡¡¡¡¡¡hWin2£»eax

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡invoke¡¡¡¡ShowWindow£»hWin2£»SW_SHOWNORMAL

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡invoke¡¡¡¡UpdateWindow£»hWin2

£»********************************************************************

£»¡¡ÉèÖö¨Ê±Æ÷

£»********************************************************************

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡invoke¡¡¡¡SetTimer£»NULL£»NULL£»100£»addr¡¡_ProcTimer

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡mov¡¡@hTimer£»eax

£»********************************************************************

£»¡¡ÏûϢѭ»·

£»********************************************************************

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

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

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

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

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

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£endw

£»********************************************************************

£»¡¡Çå³ý¶¨Ê±Æ÷

£»********************************************************************

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡invoke¡¡¡¡KillTimer£»NULL£»@hTimer

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ret

¡¡

_WinMain¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡endp

£»¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·

start£º

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡call¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡_WinMain

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡invoke¡¡¡¡ExitProcess£»NULL

£»¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·¡·

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡end¡¡¡¡¡¡¡¡¡¡start

Õâ¸ö³ÌÐòµÄ´úÂëÓõ½µÄ´ó²¿·Ö֪ʶ¶¼ÊÇÇ°Ãæ¸÷ÕÂÒѾ­½²µ½µÄ£¬ÔÚ_WinMainÖУ¬ÓÃÒ»¸öͬÑùµÄ´°¿ÚÀཨÁ¢ÁËÁ½¸ö´°¿Ú£¬Á½¸ö´°¿ÚÊôÓÚͬһ¸ö´°¿ÚÀ࣬ËùÒÔËüÃǵĴ°¿Ú¹ý³Ì¶¼ÊÇ_ProcWinMain£¬ÎªÁ˹رÕÈκÎÒ»¸ö´°¿Ú¶¼¿ÉÒÔ½áÊø³ÌÐò£¬WM_CLOSEÏûÏ¢ÖÐÓÃDestroyWindowº¯Êý´Ý»ÙÁËÁ½¸ö´°¿Ú¡£³ÌÐòÉèÖÃÁËÒ»¸öÖÜÆÚΪ100¡¡msµÄ¶¨Ê±Æ÷£¬Windows»áÿ¸ô100¡¡msµ÷ÓÃ_ProcTimer×Ó³ÌÐò¡£ÔÚ_ProcTimerÖУ¬½«ÆäÖÐÒ»¸ö´°¿ÚµÄ¿Í»§Çø¿½±´µ½ÁíÒ»¸ö´°¿ÚµÄ¿Í»§ÇøÖУ¬·½·¨ÊÇͨ¹ýGetDC»ñÈ¡´°¿ÚµÄDC¾ä±ú£¬²¢ÓÃBitBltº¯ÊýÍê³É¿½±´¹¤×÷£¨ÕâЩº¯ÊýµÄ¾ßÌåÓ÷¨ÔÚÏÂÃæµÄÄÚÈÝÖлὲµ½£©£¬ËùÒÔÔÚÓұߵĴ°¿ÚÏÔʾÁËÒ»¾ä¡°Win32¡¡Assembly£»¡¡Simple¡¡and¡¡powerful£¡¡±£¬×ó±ßµÄ´°¿ÚÖÐÒ²»á³öÏÖÕâ¾ä»°¡£

Õâ¸ö³ÌÐòÄÜÑÝʾ³öʲôЧ¹ûÀ´ÄØ£¿Í¼7¡£2¾ÍÊdzÌÐòÔËÐеĽá¹û£¬ÆÁÄ»ÉϵÄÁ½¸ö²¢ÅŵÄÕý·½Ðδ°¿Ú¾ÍÊÇDcCopy³ÌÐò½¨Á¢µÄ´°¿Ú£¬³ÌÐòÿ100¡¡ms½«Óұߴ°¿ÚµÄ¿Í»§Çø¿½±´µ½×ó±ßµÄ´°¿Ú¿Í»§ÇøÖУ¬Í¨¹ý×ó±ß´°¿ÚµÄ¿Í»§Çø¾Í¿ÉÒÔÁ˽âÓұ߿ͻ§ÇøDC¶ÔÓ¦µÄ¾¿¾¹ÊÇʲôÄÚÈÝ¡£


ͼ7¡£2¡¡¡¡DcCopy³ÌÐòµÄÔËÐнá¹û



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


µÚ7Õ¡¡Í¼ÐβÙ×÷


7¡£1¡¡GDIÔ­Àí£¨4£©

¡¡¡¡¡¡¡¡
¡¡¡¡¡¡ÏÖÔÚÓÃÆäËû³ÌÐò½«Óұߴ°¿Ú¿Í»§ÇøµÄÒ»²¿·Ö¸²¸Çµô£¬Í¨¹ý×ó±ß´°¿ÚµÄ±ä»¯¿ÉÒÔ¾ªÆæµØ·¢ÏÖ£ºÓұߴ°¿Ú¿Í»§ÇøµÄÄÚÈݲ¢²»ÊdzÌÐò×Ô¼ºÊä³öµ½¿Í»§ÇøµÄÄǾäÎı¾£¬¶øÊÇÒÔ¿Í»§ÇøÎª¾ØÐÎÇøÓòµÄÆÁÄ»ÉÏÎÒÃÇÕæÕý¿´µ½µÄ¶«Î÷£¬Ëü¾¹È»°üÀ¨ÆäËû´°¿Ú¸²¸ÇÔÚÉÏÃæµÄ¶«Î÷¡£Õâ¾ÍÒâζ×Å£¬É¨À×ÓÎÏ·ºÍֽůÓÎϷͨ¹ý×Ô¼º¿Í»§Çø¶ÔÓ¦µÄÉ豸»·¾³»­Í¼ÐΣ¬Í¼ÐÎÊý¾Ý¾¹È»»­µ½ÁËDcCopy´°¿Ú¿Í»§Çø¶ÔÓ¦µÄÉ豸»·¾³ÖС£

Õâ¸öÀý×ÓÑéÖ¤ÁË¡°É豸»·¾³¡±Ö»ÊÇ¡°»·¾³¡±¶ø²»ÊÇ¡°É豸¡±£¬Ëü²¢²»´æ´¢·¢¸øËüµÄͼÐÎÊý¾Ý£¬Í¼ÐÎÊý¾Ý͸¹ýËüдµ½ÁËËüËùÃèÊöµÄ¡°É豸¡±ÉÏ£¬Ã¿¸ö´°¿Ú¿Í»§ÇøµÄ¡°É豸»·¾³¡±¶ÔÓ¦µÄÉ豸¶¼ÊÇÆÁÄ»£¬µ«ËüÃÇÔÚλÖÃÉÏ¿ÉÄÜÖØµþ£¬ËùÒÔÏòÒ»¸ö´°¿ÚµÄ¿Í»§ÇøÐ´Êý¾ÝÏ൱ÓÚͬʱдÁËϲ㴰¿ÚµÄ¿Í»§Çø¡£

ΪÁËÈõ±Ç°¼¤»îµÄ´°¿ÚÔÚÊÓ¾õÉϱ£³ÖÔÚ×îÉÏÃæ£¬Ï²㴰¿ÚÏò×Ô¼º¿Í»§ÇøÐ´µÄÄÚÈÝÊ×ÏÈÒª¾­¹ýWindowsµÄ¡°¹ýÂË¡±£¬Ö»ÓÐûÓб»ÆäËû´°¿Ú¸²¸ÇµôµÄ²¿·Ö²ÅÕæÕý±»Ð´µ½ÁËÆÁÄ»ÉÏ¡£

¶ÁÕßÓ¦¸Ãʱ¿ÌÌáÐÑ×Ô¼º¡ª¡ª¡°É豸»·¾³¡±Ö»ÊÇÒ»¸ö»·¾³£¬ÊÇÉ豸ÊôÐÔµÄÒ»×鶨Ò壬³ÌÐòÊä³öµÄͼÐÎÊý¾Ý͸¹ý¡°É豸»·¾³¡±±»¶¨Ïòµ½Á˾ßÌåµÄÉ豸ÉÏ£¬¡°É豸»·¾³¡±±¾Éí²¢²»´æ´¢ÕâЩÊý¾Ý£¨ÔÚÕâÀïÒ²¿ÉÒÔ¿´³öDevice¡¡ContextÖÐContextÒ»´ÊµÄº¬Ò壺É豸»·¾³µÄÉÏÃæÊÇÓ¦ÓóÌÐò£¬ÏÂÃæÊǾßÌåÉ豸£¬¶øËüÊÇÓÃÀ´¡°ÁªÏµÉÏϹØÏµ¡±Óõģ©¡£

¶ÁÕß¿ÉÄÜÈÏΪ£ºÆÁÄ»ÉϵĴ°¿Ú¾ÍÏñ·ÅÔÚ×ÀÃæÉϵÄÒ»ÕÅÕÅÖ½£¬ËäȻһÕÅÖ½¿ÉÄÜÔÝʱ±»ÁíÒ»ÕÅÕÚס£¬µ«Ö½ÉÏдµÄ¶«Î÷»¹ÊÇ´æÔڵģ¬ÒÆ¿ªÁíÒ»ÕÅÖ½¾Í¿ÉÒÔÔٴζ³öÀ´¡£µ«Êµ¼ÊÇé¿öÊÇ£º×ÀÃæ¸üÏñÒ»¸öÓ÷۱ÊдµÄ¹«¸æºÚ°å£¬Ò»¸ö´°¿ÚÏ൱ÓÚ»®ÁËÒ»¿é¿Õ¼äд¸æÊ¾£¬Ð´ÁíÒ»¸ö¸æÊ¾µÄʱºòÒª°ÑÀϸæÊ¾µÄÄÚÈݲÁÈ¥Ò»²¿·ÖÒÔ±ãдеÄÄÚÈÝ£¬²ÁÈ¥µÄ¶«Î÷Ò²¾Í²»´æÔÚÁË£¬Èç¹ûÒª»Ö¸´ÀϸæÊ¾£¬ÄÇô±ØÐë°Ñ²ÁÈ¥µÄ²¿·ÖÖØÐÂдÉÏÈ¥¡£

2¡£¡¡»ñÈ¡É豸»·¾³¾ä±ú

ÒªÏë¶ÔÈκÎÉ豸»æÍ¼£¬Ê×ÏȱØÐë»ñÈ¡É豸µÄ¡°É豸»·¾³¾ä±ú¡±£¨hDC£©£¬¼¸ºõËùÓеÄGDIº¯ÊýµÄ²Ù×÷Ä¿±ê¶¼ÊÇhDC£¬ÔÚ³ÌÐòÖеõ½Ò»¸öhDCÓм¸ÖÖ·½·¨¡£

×î³£Óõķ½·¨ÊÇÔÚWM_PAINTÏûÏ¢ÖÐÓÃBeginPaintº¯ÊýµÃµ½hDC£¬WM_PAINTÏûÏ¢µÄ´úÂë½á¹¹Ò»°ãÊÇ£º

¡£if¡¡¡¡¡¡¡¡¡¡eax¡¡¡¡¡¡¡¡WM_PAINT¡¡¡¡¡¡£»eaxΪuMsg

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡invoke¡¡¡¡¡¡BeginPaint£»hWnd£»addr¡¡stPS

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£»Ë¢Ð¿ͻ§ÇøµÄ´úÂë

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡invoke¡¡¡¡¡¡EndPaint£»hWnd£»addr¡¡stPS

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡xor¡¡¡¡¡¡¡¡¡¡¡¡eax£»eax

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ret

BeginPaintº¯ÊýµÄ·µ»ØÖµ¾ÍÊÇÐèҪˢÐÂÇøÓòµÄhDC¡£Òª×¢ÒâµÄÊÇ£ºBeginPaint·µ»ØµÄhDC¶ÔÓ¦µÄ³ß´ç½öÊÇÎÞÐ§ÇøÓò£¬ÎÞ·¨ÓÃËü»æ»­µ½Õâ¸öÇøÓòÒÔÍâµÄµØ·½È¥¡£ÓÉÓÚ´°¿Ú¹ý³Ìÿ´Î½ÓÊÕWM_PAINTÏûϢʱµÄÎÞÐ§ÇøÓò¿ÉÄܶ¼ÊDz»Í¬µÄ£¬ËùÒÔÕâ¸öhDCµÄÖµ½öÔÚWM_PAINTÏûÏ¢ÖÐÓÐЧ£¬³ÌÐò²»Ó¦¸Ã±£´æËü²¢°ÑËüÓÃÔÚWM_PAINTÏûÏ¢ÒÔÍâµÄ´úÂëÖС£»ùÓÚͬÑùµÄµÀÀí£¬BeginPaintºÍEndPaintº¯ÊýÖ»ÄÜÓÃÔÚWM_PAINTÏûÏ¢ÖУ¬ÒòΪֻÓÐÕâʱºò²Å´æÔÚÎÞÐ§ÇøÓò¡£

³ÌÐòÖг£³£ÓÐÕâÖÖÐèÇ󣬾ÍÊÇÔÚ·ÇWM_PAINTÏûÏ¢ÖÐÖ÷¶¯»æ»­¿Í»§Çø£¬ÓÉÓÚBeginPaintºÍEndPaintº¯Êý±ØÐëÔÚWM_PAINTÏûÏ¢ÖÐʹÓã¬ËùÒÔÕâʱ±ØÐëÓÃÁíÍâµÄ·½·¨»ñÈ¡hDC£¬¿ÉÒÔʹÓÃÒÔÏµķ½·¨£º

invoke¡¡¡¡¡¡¡¡¡¡¡¡GetDC£»hWnd¡¡¡¡¡¡¡¡¡¡¡¡£»»ñÈ¡hDC

£»·µ»ØÖµÊÇhDC

£»»æÍ¼´úÂë

invoke¡¡¡¡¡¡¡¡¡¡¡¡ReleaseDC£»hWnd¡¡¡¡¡¡¡¡¡¡¡¡£»ÊÍ·ÅhDC

GetDCº¯Êý·µ»ØµÄhDC¶ÔÓ¦´°¿ÚµÄÕû¸ö¿Í»§Çø£¬µ±Ê¹ÓÃÍê±ÏµÄʱºò£¬hDC±ØÐëÓÃReleaseDCº¯ÊýÊÍ·Å¡£¶ÔÓÚÓÃGetDC»ñÈ¡µÄhDC£¬Windows½¨ÒéʹÓõķ¶Î§ÏÞÓÚµ¥ÌõÏûÏ¢ÄÚ£¬µ±³ÌÐòÔÚ´¦ÀíijÌõÏûÏ¢µÄʱºòÐèÒª»æ»­¿Í»§ÇøÊ±£¬¿ÉÒÔÓÃGetDC»ñÈ¡hDC£¬µ«ÔÚÏûÏ¢·µ»ØÇ°£¬±ØÐëÓÃReleaseDC½«ËüÊͷŵô£¬Èç¹ûÔÚÏÂÒ»ÌõÏûÏ¢ÖÐÐèÒª¼ÌÐøÓõ½hDC£¬ÄÇô±ØÐëÖØÐÂÓÃGetDCº¯Êý»ñÈ¡¡£

ÉÏÃæÁ½ÖÖ·½·¨»ñÈ¡µÄhDC¶¼ÊÇ´°¿ÚµÄhDC£¬Èç¹ûÒª²Ù×÷µÄÊÇÆäËûµÄ¶«Î÷£¬Èç´òÓ¡»ú¡¢Î»Í¼µÈ£¬¾Í²»ÄÜʹÓÃBeginPaint»òGetDCº¯ÊýÁË¡£µ±»æÍ¼µÄ¶ÔÏóÊÇÒ»¸öÉ豸µÄʱºò£¬¿ÉÒÔÓÃCreate¡¡DCº¯ÊýÀ´½¨Á¢Ò»¸öDC£º

invoke¡¡¡¡CreateDC£¬lpszDriver£¬lpszDevice£¬lpszOutput£¬lpInitData

lpszDriverÖ¸ÏòÉ豸Ãû³Æ£¬ÈçÏÔʾÉ豸µÄÉ豸ÃûÊÇDISPLAY£¬´òÓ¡»úµÄÉ豸ÃûÒ»°ãΪWINSPOOL£¬ÏÂÃæÕ⼸¾ä´úÂ뽨Á¢µÄDC¶ÔÓ¦Õû¸öÆÁÄ»£º

szDriver¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡db¡¡¡¡¡¡¡¡¡¡¡¡¡¨DISPLAY¡¨£»0

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£¡£¡£

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡invoke¡¡¡¡CreateDC£»addr¡¡szDriver£»NULL£»NULL£»NULL

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡mov¡¡¡¡¡¡¡¡¡¡hDC£»eax

µ±»æÍ¼¶ÔÏóÊÇλͼµÄʱºò£¬Í¬ÑùÐèÒªÒ»¸öºÍλͼ¾ä±úÏàÁªÏµµÄDC£¬Õâʱ¿ÉÒÔÓú¯ÊýCreatepatibleDCÀ´´´½¨Ò»¸öÏÔʾ±íÃæ½ö´æÔÚÓÚÄÚ´æÖеÄDC£º

invoke¡¡¡¡CreatepatibleDC£»hDc

²ÎÊýÖеÄhDCÊÇÓÃÀ´²Î¿¼µÄDC¾ä±ú£¬Èç¹ûÖ¸¶¨µÄ²ÎÊýÊÇNULL£¬ÄÇô½¨Á¢µÄDC½«ºÍµ±Ç°ÆÁÄ»µÄÉèÖüæÈÝ£¬ÎªÁËÓÃCreatepatibleDC½¨Á¢µÄDC»æ»­Ò»¸öλͼ£¬»¹ÐèÒªÓÃSelectObjectº¯Êý½«hDCºÍλͼ¾ä±úÁªÏµÆðÀ´¡£

ÓÃCreateDCºÍCreatepatibleDCº¯Êý½¨Á¢µÄhDCÔÚʹÓýáÊøÒԺ󣬱ØÐëÓÃDeleteDCº¯Êýɾ³ý£¬×¢ÒâÕâÀï²»ÄÜÓÃReleaseDC£¬Õâ¸öº¯ÊýÊǺÍGetDCÅäºÏÓõġ£

ÓÃBeginPaint/EndPaintÒÔ¼°GetDC»ñÈ¡µÄhDCµÄʹÓÃʱ¼ä²»Äܳ¬³ö±¾ÌõÏûÏ¢£¬Óë´ËÏà±È£¬ÓÃCreateDCÒÔ¼°CreatepatibleDC½¨Á¢µÄhDC¾ÍûÓÐÕâ¸öÏÞÖÆ£¬¿ÉÒÔÔÚÈκÎʱ¿Ì½¨Á¢Ëü²¢ÇÒһֱʹÓõ½²»ÔÙÐèҪΪֹ¡£

7¡£1¡£3¡¡¡¡É«²ÊºÍ×ø±ê

1¡£¡¡WindowsÖеÄÉ«²Ê

¿ÉÒÔ±íʾµÄÑÕÉ«×ÜÊýÓÉÑÕÉ«Éî¶È¾ö¶¨£¬Ò²¾ÍÊǴ洢ÿ¸öÏñËØËùÓõÄλÊý£¬¸÷ÖÖÏÔʾÉ豸¿ÉÒÔÏÔʾµÄÑÕÉ«×ÜÊý¿ÉÄÜ´ó²»Ïàͬ£¬Èç¹ûÉ豸֧³ÖµÄÑÕÉ«Éî¶È̫dz£¬¾Í»áÓ°Ï쵽ͼÏñµÄÖÊÁ¿£¬»áÈÃÈË¿´ÆðÀ´¾õµÃºÜ´Ö²ÚºÍ²»×ÔÈ»¡£

Ò»ÖÖÑÕÉ«¿ÉÒÔ·Ö½â³Éºì¡¢ÂÌ¡¢À¶ÈýÔ­É«£¬ËùÒÔ¿ÉÒÔÓú졢ÂÌ¡¢À¶3¸ö·ÖÁ¿µÄ×éºÏÀ´±íʾ¸÷ÖÖÑÕÉ«¡£

µ±É豸֧³ÖµÄÑÕÉ«Éî¶ÈÉÙÓÚµÈÓÚ8λʱ£¨Èç8루256É«£©¡¢4루16É«£©¡¢2루4É«£©»ò1루2É«£©£©£¬×ÜÌåλÊýÌ«ÉÙ£¬²»×ãÒÔÓÃÀ´±í´ï3¸öÑÕÉ«·ÖÁ¿£¬Õâʱϵͳ½¨Á¢Ò»¸öÉ«²Ê±í£¬ÏñËØÊý¾ÝÓÃÀ´×öË÷ÒýÔÚÉ«²Ê±íÖлñÈ¡ÑÕɫֵ£¬ËùÒÔµÍÓÚ8λµÄÑÕÉ«³ÆÎªË÷ÒýÉ«¡£

Ö»Óе±ÑÕÉ«Éî¶È´óÓÚ8λµÄʱºò£¬ÏñËØÊý¾ÝÖвÅÖ±½Ó°üº¬ºì¡¢ÂÌ¡¢À¶3¸ö·ÖÁ¿¡£µ±ÑÕÉ«Éî¶ÈΪ16λµÄʱºò£¬ºì¡¢ÂÌ¡¢À¶¸÷ÓÃ5λ±íʾ£¬Ê£ÏµÄ1λÓÃ×öÊôÐÔλ£¬Êµ¼Ê¿ÉÒÔ±íʾµÄÑÕÉ«ÊýĿΪ215£½32¡¡768ÖÖ£¬16λÉî¶ÈµÄ²ÊÉ«ÓÖ³ÆÎª16λɫ¡¢¸ß²ÊÉ«»òÔöǿɫ¡£µ±ÑÕÉ«Éî¶ÈΪ24λµÄʱºò£¬3¸ö·ÖÁ¿¸÷ÓÃ8λ±íʾ£¬Êµ¼Ê¿ÉÒÔ±íʾµÄÑÕÉ«ÊýĿΪ224£½16¡¡777¡¡216ÖÖ£¬24λÉî¶ÈµÄ²ÊÉ«ÓÖ³ÆÎª24λɫ¡¢16MÉ«»òÕæ²ÊÉ«¡£¶ÔÓÚÈ˵ÄË«ÑÛÀ´Ëµ£¬³¬¹ý16λµÄÑÕÉ«¾ÍÒѾ­ºÜÄÑ·Ö±æÁË¡£

ÔÚWin32µÄ±à³ÌÖУ¬Í³Ò»Ê¹ÓÃ32λµÄÕûÊýÀ´±íʾһ¸öÉî¶ÈΪ24λµÄÑÕÉ«£¬ÔÚÕâ32λÖÐֻʹÓõÍ24λ£¬Ã¿Ò»ÖÖÔ­É«·ÖÁ¿Õ¼ÓÃ8룬ÆäÖÐ0¡«7λΪºìÉ«£¬8¡«15λΪÂÌÉ«£¬16¡«31λΪÀ¶É«¡£ÔÚ³ÌÐòÖÐÓõ½Ò»ÖÖÑÕÉ«³£ÊýµÄʱºò£¬¿ÉÒÔÈçÏÂʹÓãº

mov¡¡eax£¬ºìÉ«£«ÂÌÉ«*100h£«À¶É«*10000h¡¡¡¡£»½«ÑÕÉ«·ÅÈëeaxÖÐ

µ±ÏÔʾÉ豸ÎÞ·¨±íʾ24λɫµÄʱºò£¬Windows»á×Ô¶¯ÓÃÉ豸¿ÉÒÔÏÔʾµÄ×î½Ó½üµÄÑÕÉ«À´´úÌæËü£¬µ±ÏÔʾÉ豸µÄÑÕÉ«Éî¶È±È½ÏµÍµÄʱºò£¬¿ÉÒÔͨ¹ýº¯ÊýGetNearest¡¡ColorÀ´µÃÖªÒ»ÖÖÑÕÉ«£¨dwColor£©»á±»ÏµÍ³Ìæ»»³ÉÄÄÖÖÑÕÉ«£º

invoke¡¡¡¡GetNearestColor£»hDC£»dwColor¡¡£»·µ»ØÕæÕýʹÓõÄÑÕɫֵ

µ«Êǵ±ÏÔʾÉ豸ÑÕÉ«Éî¶ÈÌ«µÍµÄʱºò£¬¾­¹ýWindows×Ô¶¯×ª»»µÄÍ
СÌáʾ£º°´ »Ø³µ [Enter] ¼ü ·µ»ØÊéÄ¿£¬°´ ¡û ¼ü ·µ»ØÉÏÒ»Ò³£¬ °´ ¡ú ¼ü ½øÈëÏÂÒ»Ò³¡£ ÔÞһϠÌí¼ÓÊéÇ©¼ÓÈëÊé¼Ü