ÓÑÇéÌáʾ£ºÈç¹û±¾ÍøÒ³´ò¿ªÌ«Âý»òÏÔʾ²»ÍêÕû£¬Çë³¢ÊÔÊó±êÓÒ¼ü¡°Ë¢Ð¡±±¾ÍøÒ³£¡ÔĶÁ¹ý³Ì·¢ÏÖÈκδíÎóÇë¸æËßÎÒÃÇ£¬Ð»Ð»£¡£¡ ±¨¸æ´íÎó
°ËÍòС˵Íø ·µ»Ø±¾ÊéĿ¼ ÎÒµÄÊé¼Ü ÎÒµÄÊéÇ© TXTÈ«±¾ÏÂÔØ ½øÈëÊé°É ¼ÓÈëÊéÇ©

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

°´¼üÅÌÉÏ·½Ïò¼ü ¡û »ò ¡ú ¿É¿ìËÙÉÏÏ·­Ò³£¬°´¼üÅÌÉ쵀 Enter ¼ü¿É»Øµ½±¾ÊéĿ¼ҳ£¬°´¼üÅÌÉÏ·½Ïò¼ü ¡ü ¿É»Øµ½±¾Ò³¶¥²¿£¡
¡ª¡ª¡ª¡ªÎ´ÔĶÁÍꣿ¼ÓÈëÊéÇ©ÒѱãÏ´μÌÐøÔĶÁ£¡




7¡£3¡£3¡¡¡¡Ê¹ÓÃÉ豸ÎÞ¹Øλͼ

É豸ÎÞ¹Øλͼ¼ò³ÆΪDIB£¬ÕâÔÚ5¡£3¡£1С½ÚÖÐÒѾ­ÓÐËù½éÉÜ¡£DIBÒ»°ãÊÇ´æ·ÅÔÚ´ÅÅÌÉϵÄÒÔbmpΪÀ©Õ¹ÃûµÄλͼÎļþ£¬Ê¹ÓÃDIBµÄ¹Ø¼üÊÇÈçºÎ½«DIBÖеÄÊý¾Ýת»¯ÎªÒ»¸öÄÚ´æÖеÄλͼ²¢·µ»ØÒ»¸öλͼ¾ä±ú¡£

bmpÎļþµÄÎļþ½á¹¹ÊÇÕâÑù¶¨ÒåµÄ£ºÎļþµÄ¿ªÊ¼ÊÇÒ»¸öBITMAPFILEHEADER½á¹¹£¬Õâ¸ö½á¹¹¶¨ÒåÈçÏ£º

BITMAPFILEHEADER¡¡STRUCT

¡¡¡¡bfType¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡WORD¡¡¡¡¡¡¡¡¡¡¡¡¡¡£¿¡¡¡¡¡¡¡¡£»Îļþ±êʶ£¬±ØÐëÊÇ¡°BM¡±

¡¡¡¡bfSize¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡DWORD¡¡¡¡¡¡¡¡¡¡£¿¡¡¡¡¡¡¡¡£»Îļþ³¤¶È

¡¡¡¡bfReserved1¡¡¡¡¡¡¡¡¡¡¡¡WORD¡¡¡¡¡¡¡¡¡¡¡¡£¿¡¡¡¡¡¡¡¡£»0

¡¡¡¡bfReserved2¡¡¡¡¡¡¡¡¡¡¡¡WORD¡¡¡¡¡¡¡¡¡¡¡¡£¿¡¡¡¡¡¡¡¡£»0

¡¡¡¡bfOffBits¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡DWORD¡¡¡¡¡¡¡¡¡¡£¿¡¡¡¡¡¡¡¡£»Î»Í¼ÏñËØÊý¾ÝÔÚÎļþÖеÄÆðʼλÖÃ

BITMAPFILEHEADER¡¡¡¡¡¡ENDS

BITMAPFILEHEADER½á¹¹µÄºóÃæҪôÊÇBITMAPCOREHEADER½á¹¹£¬ÒªÃ´ÊÇBITMAPINFOHEADER½á¹¹ºÍË÷ÒýÉ«±í£¬ÕâÁ½ÖֽṹµÄ¶¨ÒåÈçÏ£º

BITMAPCOREHEADER¡¡STRUCT

¡¡¡¡bcSize¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡DWORD¡¡¡¡¡¡¡¡¡¡£¿¡¡¡¡¡¡¡¡£»±¾½á¹¹³¤¶È

¡¡¡¡bcWidth¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡WORD¡¡¡¡¡¡¡¡¡¡¡¡£¿¡¡¡¡¡¡¡¡£»Î»Í¼¿í¶È

¡¡¡¡bcHeight¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡WORD¡¡¡¡¡¡¡¡¡¡¡¡£¿¡¡¡¡¡¡¡¡£»Î»Í¼¸ß¶È

¡¡¡¡bcPlanes¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡WORD¡¡¡¡¡¡¡¡¡¡¡¡£¿¡¡¡¡¡¡¡¡£»Î»Í¼µÄɫƽÃæÊý

¡¡¡¡bcBitCount¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡WORD¡¡¡¡¡¡¡¡¡¡¡¡£¿¡¡¡¡¡¡¡¡£»Î»Í¼µÄÑÕÉ«Éî¶È

BITMAPCOREHEADER¡¡¡¡¡¡ENDS

¡¡

BITMAPINFOHEADER¡¡STRUCT

¡¡¡¡bcSize¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡DWORD¡¡¡¡¡¡¡¡¡¡£¿¡¡¡¡¡¡¡¡£»±¾½á¹¹³¤¶È

¡¡¡¡bcWidth¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡WORD¡¡¡¡¡¡¡¡¡¡¡¡£¿¡¡¡¡¡¡¡¡£»Î»Í¼¿í¶È

¡¡¡¡bcHeight¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡WORD¡¡¡¡¡¡¡¡¡¡¡¡£¿¡¡¡¡¡¡¡¡£»Î»Í¼¸ß¶È

¡¡¡¡bcPlanes¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡WORD¡¡¡¡¡¡¡¡¡¡¡¡£¿¡¡¡¡¡¡¡¡£»Î»Í¼µÄɫƽÃæÊý

¡¡¡¡bcBitCount¡¡¡¡¡¡¡¡¡¡¡¡¡¡WORD¡¡¡¡¡¡¡¡¡¡¡¡£¿¡¡¡¡¡¡¡¡£»Î»Í¼µÄÑÕÉ«Éî¶È

¡¡¡¡bipression¡¡¡¡¡¡¡¡DWORD¡¡¡¡¡¡¡¡¡¡£¿¡¡¡¡¡¡¡¡£»Î»Í¼µÄѹËõ·½Ê½

¡¡¡¡biSizeImage¡¡¡¡¡¡¡¡¡¡¡¡DWORD¡¡¡¡¡¡¡¡¡¡£¿¡¡¡¡¡¡¡¡£»Í¼Ðγߴç

¡¡¡¡biXPelsPerMeter¡¡¡¡DWORD¡¡¡¡¡¡¡¡¡¡£¿¡¡¡¡¡¡¡¡£»Í¼ÐÎx·½Ïò·Ö±æÂÊ£¬µ¥Î»ÊÇÏñËØ/Ã×

¡¡¡¡biYPelsPerMeter¡¡¡¡DWORD¡¡¡¡¡¡¡¡¡¡£¿¡¡¡¡¡¡¡¡£»Í¼ÐÎy·½Ïò·Ö±æÂÊ£¬µ¥Î»ÊÇÏñËØ/Ã×

¡¡¡¡biClrUsed¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡DWORD¡¡¡¡¡¡¡¡¡¡£¿

¡¡¡¡biClrImportant¡¡¡¡¡¡DWORD¡¡¡¡¡¡¡¡¡¡£¿

BITMAPINFOHEADER¡¡¡¡¡¡ENDS

ÕâÁ½¸öÊý¾Ý½á¹¹Ö÷Òª°üº¬ÁËλͼµÄһЩ²ÎÊý£¬ÔÚÕâЩÊý¾Ý½á¹¹µÄºóÃ棬¾ÍÊÇλͼµÄÏñËØÊý¾ÝÁË£¬Õû¸öbmpÎļþ¾ÍÓÉÕâ3²¿·Ö×é³É¡£

ҪʹÓÃDIB£¬¿ÉÒÔÊ×ÏȽ«Õû¸öÎļþ¶Áµ½ÄÚ´æÖУ¬È»ºó´ÓÕâЩÊý¾Ý½á¹¹ÖеÃ֪λͼµÄ¸÷ÖÖ²ÎÊý£¬×îºóʹÓÃSetDIBitsToDeviceº¯Êý½«Î»Í¼Êý¾Ý¸´ÖƵ½Ò»¸öhDCÖУ¬Èç¹ûÕâ¸öhDC¶ÔÓ¦Ò»¸öδ³õʼ»¯µÄλͼ£¬ÄÇô¾ÍÏ൱Óڵõ½ÁË°üº¬´ÅÅÌbmpλͼÊý¾ÝµÄλͼ¾ä±ú£¬²¢ÇÒ¿ÉÒÔÔÚÈκεط½Ê¹ÓÃËü¡£µ±È»£¬ÔÚÕâÒÔºó¿ÉÒÔ½«¶ÁÈëÎļþÊý¾ÝµÄÄÚ´æÊͷŵô¡£

SetDIBitsToDeviceº¯ÊýµÄÓ÷¨ÊÇ£º

invoke¡¡¡¡SetDIBitsToDevice£»hDC£»xDest£»yDest£»

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡dwWidth£»dwHeight£»xSrc£»ySrc£»uStartScan£»cScanLines£»

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡lpvBits£»lpbmi£»fuColorUse

hDCÊÇÄ¿µÄDCµÄ¾ä±ú£¬xDestºÍyDestÖ¸¶¨ÁËλͼ¸´ÖƵ½hDCµÄ×óÉϽÇλÖã¬dwWidthºÍdwHeightÖ¸¶¨ÁËÒª¸´ÖƵĿí¶ÈºÍ¸ß¶È£¬xSrcºÍySrcÖ¸¶¨DIBÖÐÒª¸´ÖƵÄ×óÉϽÇλÖã¬uStartScanºÍcScanLinesÖ¸¶¨¿ªÊ¼¸´ÖƵÄɨÃèÏߺÍÒª¸´ÖƵÄɨÃèÏßÊý£¬×îºó£¬lpvBitsÖ¸ÏòDIBÖеÄÏñËØÊý¾Ý²¿·Ö£¬lpbmiÖ¸ÏòDIBÖеÄBITMAPINFO»òBITMAPCOREINFO½á¹¹£¬fuColorUseÖ¸¶¨ÁËDIBÖÐÊý¾ÝµÄÀàÐÍ£¬ÓÃDIB_RGB_COLORS±íʾÊý¾ÝÊÇRGBÀàÐ͵ġ£

×Ó³ÌÐò_CreateDIBitmap·ÖÎöÒ»¸öDIBÎļþµÄ²ÎÊý²¢·µ»Ø°üº¬Õû¸öDIBλͼÊý¾ÝµÄλͼ¾ä±ú£¬¶ÁÕß¿ÉÒÔÔÚÈκεط½Ê¹ÓÃÕâ¸öλͼ¾ä±ú¡£×Ó³ÌÐòµÄÊäÈë²ÎÊý_hWndÓÃÀ´»ñÈ¡²Î¿¼hDCµÄ´°¿Ú¾ä±ú£¬_lpFileDataÊǽ«DIBÎļþÕû¸ö¶ÁÈëÄÚ´æºóµÄÄÚ´æÖ¸Õë¡£´úÂëÈçÏ£º

_CreateDIBitmap¡¡¡¡¡¡¡¡¡¡¡¡proc¡¡¡¡¡¡_hWnd£»_lpFileData

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡local¡¡¡¡¡¡¡¡@lpBitmapInfo£»@lpBitmapBits

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡local¡¡¡¡¡¡¡¡@dwWidth£»@dwHeight

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡local¡¡¡¡¡¡¡¡@hDc£»@hBitmap

¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡pushad

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡mov¡¡¡¡¡¡¡¡¡¡¡¡@hBitmap£»0

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡mov¡¡¡¡¡¡¡¡¡¡¡¡esi£»_lpFileData

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡mov¡¡¡¡¡¡¡¡¡¡¡¡eax£»BITMAPFILEHEADER¡£bfOffBits¡¡£§esi£§

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡add¡¡¡¡¡¡¡¡¡¡¡¡eax£»esi

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡mov¡¡¡¡¡¡¡¡¡¡¡¡@lpBitmapBits£»eax

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡add¡¡¡¡¡¡¡¡¡¡¡¡esi£»sizeof¡¡BITMAPFILEHEADER

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡mov¡¡¡¡¡¡¡¡¡¡¡¡@lpBitmapInfo£»esi

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£if¡¡¡¡¡¡¡¡¡¡¡¡BITMAPINFO¡£bmiHeader¡£biSize¡¡£§esi£§¡¡¡¡sizeof¡¡BITMAPCOREHEADER

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡movzx¡¡¡¡eax£»BITMAPCOREHEADER¡£bcWidth¡¡£§esi£§

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡movzx¡¡¡¡ebx£»BITMAPCOREHEADER¡£bcHeight¡¡£§esi£§

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£else

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡mov¡¡¡¡¡¡¡¡¡¡eax£»BITMAPINFOHEADER¡£biWidth¡¡£§esi£§

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡mov¡¡¡¡¡¡¡¡¡¡ebx£»BITMAPINFOHEADER¡£biHeight¡¡£§esi£§

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£endif

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡mov¡¡¡¡¡¡¡¡¡¡¡¡@dwWidth£»eax

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡mov¡¡¡¡¡¡¡¡¡¡¡¡@dwHeight£»ebx

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

£»¡¡½¨Á¢¿ÕµÄ¡¡Bitmap¡¡Object

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

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡invoke¡¡¡¡¡¡GetDC£»_hWnd

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡push¡¡¡¡¡¡¡¡¡¡eax

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡invoke¡¡¡¡¡¡CreatepatibleDC£»eax

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡mov¡¡¡¡¡¡¡¡¡¡¡¡@hDc£»eax

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡pop¡¡¡¡¡¡¡¡¡¡¡¡eax

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡push¡¡¡¡¡¡¡¡¡¡eax

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡invoke¡¡¡¡¡¡CreatepatibleBitmap£»eax£»@dwWidth£»@dwHeight

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡mov¡¡¡¡¡¡¡¡¡¡¡¡@hBitmap£»eax

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡invoke¡¡¡¡¡¡SelectObject£»@hDc£»@hBitmap

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡pop¡¡¡¡¡¡¡¡¡¡¡¡eax

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡invoke¡¡¡¡¡¡ReleaseDC£»hWinMain£»eax

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

£»¡¡½«ÎļþÄÚÈÝÉèÖõ½½¨Á¢µÄ¡¡Bitmap¡¡ÖÐ

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

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡invoke¡¡¡¡¡¡SetDIBitsToDevice£»@hDc£»0£»0£»@dwWidth£»@dwHeight£»

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡0£»0£»0£»@dwHeight£»

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡@lpBitmapBits£»@lpBitmapInfo£»DIB_RGB_COLORS

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

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡invoke¡¡DeleteObject£»@hBitmap

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡mov¡¡@hBitmap£»0

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£endif

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡invoke¡¡¡¡¡¡DeleteDC£»@hDc

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡popad

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡mov¡¡¡¡¡¡¡¡¡¡¡¡eax£»@hBitmap

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

¡¡

_CreateDIBitmap¡¡¡¡¡¡¡¡¡¡¡¡endp

_CreateDIBitmap×Ó³ÌÐòÊ×ÏÈ·ÖÎöDIBÎļþµÄÊý¾Ý£¬È·¶¨BITMAPFILEHEADERºóÃæµÄÊý¾Ý½á¹¹ÊÇBITMAPINFO»¹ÊÇBITMAPCOREINFO£¬²¢´Ó½á¹¹ÖлñȡλͼµÄ¸ß¶ÈºÍ¿í¶È£¬È»ºó½¨Á¢Ò»¸öδ³õʼ»¯µÄλͼ£¬²¢ÓÃSetDIBitsToDeviceº¯Êý½«Î»Í¼Êý¾Ý¿½±´µ½Õâ¸öλͼÖУ¬×îºó½«Î»Í¼¾ä±ú·µ»ØÒÔ¹©ºóÃæʹÓá£



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


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


7¡£4¡¡¿é´«ËͲÙ×÷£¨1£©

¡¡¡¡¡¡¡¡
³ýÁË7¡£2С½ÚÖеĻæͼº¯Êý£¬¿é´«Ëͺ¯ÊýÒ²ÊÇÖØÒªµÄͼÐβÙ×÷º¯Êý¡£¿é´«ËÍÖ¸°ÑԴλÖÃÖеÄÊý¾Ý¿é°´ÕÕÖ¸¶¨µÄ·½Ê½´«Ë͵½Ä¿µÄλÖÃÖС£°ÑÄÚ´æÖеÄλͼ¸´ÖƵ½´°¿Ú¿Í»§ÇøÒÔ¼°ÔÚ²»Í¬µÄDCÖи´ÖÆͼÐÎÊý¾Ý¶¼ÒªÓõ½¿é´«ËͲÙ×÷£¬¿é´«ËÍÍê³ÉµÄ¹¤×÷¾ÍÏ൱ÓÚͼÐÎÖ®¼äµÄ¿½±´¹¤×÷¡£¿é´«Ëͺ¯ÊýÓÐPatBlt£¬BitBlt£¬MaskBlt£¬PlgBlt£¬TransparentBltºÍStretchBltµÈ¡£

7¡£4¡£1¡¡¡¡¿é´«ËÍ·½Ê½

Óë7¡£2¡£4С½ÚÖнéÉܵĻæͼº¯ÊýµÄROP²Ù×÷ÀàËÆ£¬¿é´«Ëͺ¯ÊýÒ²ÊÇ¿ÉÒÔÓÃROPÂëÀ´¶¨ÒåµÄ´«ËÍ·½Ê½£¬µ«¿é´«Ëͺ¯ÊýµÄROPÂ붨Ò岻ͬÓÚ7¡£2¡£4С½ÚÖеÄROPÂ룬ÒòΪÕâÀïÉæ¼°µÄ²Ù×÷¶ÔÏó¸ü¶à¡£

¿é´«Ë͵ÄROPÂëÊÇÒ»¸ö32λµÄÕûÊý£¬¶ÔÓ¦µÄ²Ù×÷Éæ¼°3ÖÖԭʼÊý¾Ý£ºÔ´ÏñËØ¡¢Ä¿±êÏñËغͻ­Ë¢£¬¿é´«ËͲÙ×÷µÄ½á¹ûÊÇÄ¿±êÏñËصÄÊý¾Ý±»3ÖÖԭʼÊý¾ÝµÄ¼ÆËã½á¹ûÌæ»»µô¡£

²¢²»ÊÇÿһÖÖROPÂ붼ҪÓõ½È«²¿3ÖÖԭʼÊý¾Ý£¬ÓеÄÉõÖÁÁ¬1ÖÖÒ²Óò»µ½£¬ÀýÈçÈ«ºÚ»òÕßÈ«°×µÄROPÂë¡£¿é´«Ëͺ¯ÊýʹÓõÄROPÂë×ܹ²ÓÐ256ÖÖ£¬ËüÃÇÊÇ3ÖÖԭʼÊý¾Ý½øÐв»Í¬Î»²Ù×÷£¨È¡·´¡¢Óë¡¢»òºÍÒì»ò£©µÄ×éºÏ£¬µ«ÓÐЩROPÂë¶ÔÓ¦µÄ²Ù×÷½á¹ûʵÔÚÊÇÌ«ÄÑÏëÏñÁË£¬±ÈÈçROPÂë0e20746¶ÔÓ¦µÄ²Ù×÷ÊÇ£¨£¨Ä¿±êÏñËØ¡¡xor¡¡»­Ë¢£©¡¡and¡¡Ô´ÏñËØ£©¡¡xor¡¡Ä¿±êÏñËØ£©£¬Æ¾Õâ¸öËãʽµÄÈ·±È½ÏÄÑÒÔÏëÏñ×îºóµÃµ½µÄλͼÊÇʲôÑù×ӵģ¡ÔÚʵ¼ÊʹÓÃÖкܶàËã·¨×éºÏÒ²²¢²»ÊÇÄÇôÓÐÓã¬ËùÒÔWindowsÖ»¶Ô15ÖÖ×î³£ÓõÄROPÂ붨ÒåÁËÔ¤¶¨ÒåµÄÖú¼Ç´úÂ룬¡¡

Èç±í7¡£6Ëùʾ£¬¶ÔÓÚÕâЩROPÂ룬ÔÚ³ÌÐòÖпÉÒÔÖ±½ÓʹÓÃÖú¼ÇÂ룬¶ÔÓÚ±íÖÐûÓÐÁгöµÄROPÂ룬¿ÉÒÔÖ±½ÓʹÓÃ16½øÖÆÊýÖµ¡£

±í7¡£6¡¡¡¡¿é´«Ëͺ¯ÊýÖÐʹÓõÄROPÂë

ROPÂë
¡¡16½øÖÆÊýÖµ
¡¡ÐÂÏñËصãËã·¨
¡¡
BLACKNESS
¡¡00000042h
¡¡È«²¿Îª0
¡¡
DSTINVERT
¡¡00550009h
¡¡not¡¡Ä¿±êÏñËØ
¡¡
MERGECOPY
¡¡00c000cah
¡¡»­Ë¢¡¡and¡¡Ô´ÏñËØ
¡¡
MERGEPAINT
¡¡00bb0226h
¡¡£¨not¡¡Ô´ÏñËØ£©or¡¡Ä¿±êÏñËØ
¡¡
NOTSRCCOPY
¡¡00330008h
¡¡not¡¡Ô´ÏñËØ
¡¡
NOTSRCERASE
¡¡001100a6h
¡¡not£¨Ô´ÏñËØ¡¡or¡¡Ä¿±êÏñËØ£©
¡¡
PATCOPY
¡¡00f00021h
¡¡»­Ë¢
¡¡
PATINVERT
¡¡005a0049h
¡¡»­Ë¢¡¡xor¡¡Ä¿±êÏñËØ
¡¡
PATPAINT
¡¡00fb0a09h
¡¡»­Ë¢¡¡or¡¡£¨not¡¡Ô´ÏñËØ£©or¡¡Ä¿±êÏñËØ
¡¡
SRCAND
¡¡008800c6h
¡¡Ô´ÏñËØ¡¡and¡¡Ä¿±êÏñËØ
¡¡
SRCCOPY
¡¡00cc0020h
¡¡Ô´ÏñËØ
¡¡
SRCERASE
¡¡00440328h
¡¡Ô´ÏñËØ¡¡and£¨not¡¡Ä¿±êÏñËØ£©
¡¡
SRCINVERT
¡¡00660046h
¡¡Ô´ÏñËØ¡¡xor¡¡Ä¿±êÏñËØ
¡¡
SRCPAINT
¡¡00ee0086h
¡¡Ô´ÏñËØ¡¡or¡¡Ä¿±êÏñËØ
¡¡
WHITENESS
¡¡00ff0062h
¡¡È«²¿Îª1
¡¡

7¡£4¡£2¡¡¡¡¿é´«Ëͺ¯Êý

1¡£¡¡PatBltº¯Êý

PatBltº¯ÊýÍê³ÉµÄÊÇ¡°Í¼°¸¿é´«ËÍ¡±µÄ¹¦ÄÜ£¬¼´¡°Pattern¡¡Block¡¡Transfer¡±¡£Ê¹Óõķ½·¨ÊÇ£º

invoke¡¡¡¡PatBlt£¬hDC£¬xDest£¬yDest£¬dwWidth£¬dwHeight£¬dwROP

Õâ¸öº¯Êý½«µ±Ç°»­Ë¢µÄͼ°¸¿½±´µ½hDCÖÐÒÔ£¨xDest£¬yDest£©Îª×óÉϽÇ×ø±ê£¬dwWidthΪ¿í¶È£¬dwHeigthΪ¸ß¶ÈµÄÇøÓòÖУ¬´«Ë͵ķ½Ê½ÓÉdwROPÖеÄROPÂëÖ¸¶¨¡£PatBltº¯ÊýµÄ¹¦Äܺ;ØÐÎÌî³äº¯ÊýFillRectÓëInvertRectµÈÊǺÜÏñµÄ£¬µ«Ëü°üº¬ÁËËüÃǵÄÈ«²¿¹¦ÄÜ£¬ÈçROPÂëÖ¸¶¨DSTINVERT£¬ÄÇôPatBltµÄ¹¦ÄܾÍÏ൱ÓÚInvertRectº¯Êý£»ROPÂëÖ¸¶¨ÎªPATCOPYµÄʱºò£¬PatBltµÄ¹¦ÄÜÏ൱ÓÚFillRectº¯Êý¡£

ÔÚBmpClock¡£asmµÄ_CreateBackGround×Ó³ÌÐòÖУ¬µ±½¨Á¢±³¾°Í¼Æ¬µÄʱºò£¬¾ÍÊÇÓÃPATCOPY·½Ê½µÄPatBltº¯ÊýÓÃ×ÊÔ´Öеı³¾°Í¼Æ¬Ìî³äÕû¸öʱÖÓ±³¾°µÄ¡£

ÔÚËùÓеÄROPÂëÖУ¬¿ÉÒÔÓÃÔÚPatBltº¯ÊýÖеÄÖ»ÓÐÒ»²¿·Ö£¬ËùÓÐËã·¨Öаüº¬Ô´ÏñËصÄROPÂëÔÚPatBltº¯ÊýÖж¼²»ÄÜʹÓã¬ÒòΪPatBltº¯ÊýÖ»Éæ¼°µ±Ç°»­Ë¢ºÍÄ¿±êÏñËØ£¬²¢Ã»ÓÐÒ»¸ö¡°Ô´ÏñËØ¡±£¬ËùÒÔ¶ÔÓÚÕâ¸öº¯ÊýÀ´Ëµ£¬±í7¡£6ÖеÄROPÂëÖÐÖ»ÓÐBLACKNESS£¬WHITENESS£¬DSTINVERT£¬PATINVERTºÍPATCOPYÊÇ¿ÉÓõġ£

2¡£¡¡BitBltº¯Êý

PatBltº¯ÊýÄÜÍê³ÉµÄ¹¤×÷BitBltº¯Êý¶¼ÄÜÍê³É£¬BitBltÊÇ¡°Êý¾Ý¿é´«ËÍ¡±µÄÒâ˼£¬¼´¡°Bit¡¡Block¡¡Transfer¡±¡£BitBltº¯ÊýµÄÓ÷¨ÊÇ£º

invoke¡¡¡¡¡¡¡¡BitBlt£¬hDcDest£¬xDest£¬yDest£¬dwWidth£¬dwHeigt£¬

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡hDcSrc£¬xSrc£¬ySrc£¬dwROP

Õâ¸öº¯Êý½«Ô´hDcSrcÖÐÒÔ£¨xSrc£¬ySrc£©Îª×óÉϽǵÄÒ»¸ö¾ØÐÎÇøÓò´«Ë͵½Ä¿±êhDcDestÖÐÒÔ£¨xDest£¬yDest£©Îª×óÉϽǵĵط½È¥£¬¾ØÐεĿí¶ÈΪdwWidth£¬¸ß¶ÈΪdwHeight£¬µ±È»Ä¿±êDCÖеÄ×îºó½á¹ûÊÇÓÉdwROPÖеÄROPÂ붨ÒåµÄÔ´¡¢Ä¿±êºÍ»­Ë¢ÈýÕßÊý¾ÝµÄ×éºÏ¡£

Áé»îʹÓÃROPÂë¿ÉÒÔʵÏֺܶàµÄ¹¦ÄÜ£¬±ÈÈçÔÚÒ»¸ö±³¾°Í¼Æ¬Éϵþ¼ÓÒ»¸ö·Ç¾ØÐεÄλͼ£¬ÓÎÏ·³ÌÐòÖÐÈËÎïÔÚ±³¾°ÉÏÃæµÄÒƶ¯¾ÍÊÇÕâÑùµÄÒ»¸öÀý×Ó¡£BmpClock³ÌÐòÖÐҲʵÏÖÁËÀàËƵŦÄÜ¡ª¡ª¶ÁÕß¿ÉÒÔ×¢Òâµ½£¬³ÌÐò¿ÉÒÔ×ÔÓɸü»»±³¾°ºÍ±ß¿ò£¬µ«ÊDZ߿òÊÇÖпյģ¬ËüÏ൱ÓÚÒÔÒ»¸ö²»¹æÔòµÄͼÐεþ¼ÓÔÚ±³¾°ÉÏÃ棬ͼ7¡£10ʾ·¶ÁËʵÏֵķ½·¨¡£

·ÖÎöÒ»ÏÂBmpClock¡£asmÖеÄ_CreateBackGround×Ó³ÌÐò¾Í¿ÉÒÔ·¢ÏÖ£¬³ÌÐòÓõ½ÁË×ÊÔ´ÖеÄBack1¡£bmp£¬Mask1¡£bmpºÍCircle1¡£bmpÕâ3¸öͼƬ£¨ÔÚͼ7¡£10ÖÐÒÔA£¬B£¬CÀ´±íʾ£©£¬×Ó³ÌÐò½«3¸öͼƬװÈëÄÚ´æºó£¬´´½¨ÁË3¸öDCÀ´´æÈ¡ËüÃÇ£¬¶ÔÓ¦µÄDC¾ä±ú·Ö±ð·ÅÔÚ@hBmpBack£¬@hBmpMaskºÍ@hBmpCircleÖС£

ºÃÁË£¡ÏÖÔÚµÄÈÎÎñÊǽ«Í¼Æ¬CÖÐÐèÒªµÄ²¿·Ö£¨·ÇºÚÉ«²¿·Ö£©Í¸Ã÷µþ·ÅÔÚÒÔͼƬAÐγɵı³¾°ÉÏ£¬µÃµ½Ê±ÖÓ±³¾°Í¼Æ¬D¡£¼ÌÐø×ö×¼±¸¹¤×÷£ºÎªÍ¼Æ¬D½¨Á¢Ò»¸öδ³õʼ»¯Î»Í¼ºÍÄÚ´æDC£¬DC¾ä±ú´æ·ÅÔÚhDcBackÖС£


ͼ7¡£10¡¡¡¡ÔÚ±³¾°Éϵþ¼Ó²»¹æÔòͼÐεķ½·¨

Èçͼ7¡£10ÖеIJ½Öè1Ëùʾ£¬Ê×ÏÈ£¬³ÌÐòÓÃCreatePatternBrush½¨Á¢ÒÔͼƬAΪͼ°¸µÄ»­Ë¢£¬ÓÃPatBltº¯ÊýÒÔÕâ¸ö»­Ë¢Ìî³äÕû¸öͼƬ£º

¡¡¡¡¡¡¡¡invoke¡¡¡¡CreatePatternBrush£»@hBmpBack

¡¡¡¡¡¡¡¡push¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡eax

¡¡¡¡¡¡¡¡invoke¡¡¡¡SelectObject£»hDcBack£»eax

¡¡¡¡¡¡¡¡invoke¡¡¡¡PatBlt£»hDcBack£»0£»0£»CLOCK_SIZE£»CLOCK_SIZE£»PATCOPY

¡¡¡¡¡¡¡¡pop¡¡¡¡¡¡¡¡¡¡eax

¡¡¡¡¡¡¡¡invoke¡¡¡¡DeleteObject£»eax

ÏÖÔÚÈç¹ûÖ±½Ó½«Í¼Æ¬C¿½±´ÉÏÈ¥£¬ËäÈ»ÐèÒªµÄ²¿·ÖÊÇ¿½±´ÉÏÈ¥ÁË£¬µ«ÊÇͼƬCÖеĺÚÉ«²¿·ÖÒ²»á¸²¸ÇÈ«²¿µÄ±³¾°ÏñËØ£¬ÎªÁËÈúÚÉ«²¿·ÖµÄ±³¾°ÏñËر£³Ö²»±ä£¬Ó¦¸ÃʹÓÃor²Ù×÷£¬ÒòΪºÚÉ«µÄÑÕɫֵΪ0£¬ÈκÎÊý¾ÝºÍ0½øÐÐor²Ù×÷½«±£³Ö²»±ä£¬²é¿´ROPÂë¿ÉÒÔ·¢ÏÖ£¬SRCPAINTʹÓõÄÊÇor²Ù×÷£¬ËùÒÔ¿ÉÒÔʹÓÃSRCPAINT²Ù×÷Âë½øÐÐBitBlt²Ù×÷¡£

µ«»¹ÓиöÎÊÌ⣺ͼƬCÖеķǺÚÉ«²¿·ÖÈç¹ûÒ²ÓÃor²Ù×÷»æ»­µ½±³¾°ÉÏ£¬ÄÇô¾­¹ýºÍ±³¾°ÏñËصÄor²Ù×÷ºó¾Í²»ÊÇÔ­À´µÄÑÕÉ«ÖµÁË£¬ÎªÁËÈÃÕⲿ·Ö²»±ä£¬½â¾öµÄ°ì·¨ÊÇÔ¤ÏȽ«±³¾°ÖжÔÓ¦µÄ²¿·ÖÏÈ»æÖƳɺÚÉ«£¬ÕâÑù¶ÔӦͼƬCÖеĺÚÉ«²¿·Ö½«±£³Ö±³¾°ÑÕÉ«£¬¶ø·ÇºÚÉ«²¿·Ö½«Ê¹ÓÃͼƬCÖеÄÏñËØ¡£ÕÚÑÚͼƬB¾ÍÊÇÕâÑùÓõģ¬ËüÊÇÒ»¸öºÚ°×Á½É«µÄͼƬ£¬ºÚÉ«²¿·ÖÊÇͼƬCÖÐÒªÔÚ±³¾°ÉÏ¡°ïοա±µÄ²¿·Ö£¬ÔÚ²½Öè2ÖУ¬³ÌÐòʹÓÃÏÂÁÐÓï¾ä½«Í¼Æ¬BÓÃSRCAND²Ù×÷Âë»æÖƵ½±³¾°ÉÏ£º

invoke¡¡¡¡BitBlt£»hDcBack£»0£»0£»CLOCK_SIZE£»CLOCK_SIZE£»@hDcMask£»0£»0£»SRCAND

²é±í7¡£6¿ÉÒÔ·¢ÏÖ£¬SRCAND½øÐÐÔ´ÏñËغÍÄ¿±êÏñËصÄand²Ù×÷£¬ÈκÎÊýºÍ1½øÐÐand½«±£³Ö²»±ä£¬ºÍ0½øÐÐand½«±ä³É0£¬ÕâÑù±³¾°ÖжÔӦͼƬBÖеİ×É«²¿·Ö½«±£³Ö²»±ä£¬¶ÔӦͼƬBÖеĺÚÉ«²¿·Ö½«±»¡°ïοա±¡£

½ÓÏÂÀ´¾ÍÊÇ×îºóµÄ²½Öè3ÁË£º

invoke¡¡¡¡BitBlt£»hDcBack£»0£»0£»CLOCK_SIZE£»CLOCK_SIZE£»@hDcCircle£»0£»0£»SRCPAINT



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


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


7¡£4¡¡¿é´«ËͲÙ×÷£¨2£©

¡¡¡¡¡¡¡¡
³ÌÐòÓÃSRCPAINT²Ù×÷Â뽫ͼƬCºÍÒѾ­ïοյı³¾°½øÐÐor²Ù×÷£¬µÃµ½µÄ½á¹û¾ÍÊǽ«ÓÉÕÚÑÚͼƬBÖ¸¶¨µÄͼƬCÖеIJ»¹æÔòÇøÓò»­µ½Á˱³¾°ÉÏÃæ¡£

ΪÁ˼ò»¯Æð¼û£¬BmpClock³ÌÐòÖеÄÕÚÑÚͼƬÊÇÔ¤ÏÈÉè¼ÆºÃµÄ£¬Êµ¼ÊʹÓÃÖÐÒ²¿ÉÒÔͨ¹ýɨÃèԴλͼÖеÄÏñËØ룬ÕÒ³ö±³¾°ÑÕÉ«²¢¶¯Ì¬Éú³ÉÒ»¸öÕÚÑÚλͼ£¬ËäÈ»ÕâÑù¿ÉÄܶÔËÙ¶ÈÓÐһЩӰÏ죬µ«Áé»îÐÔÒª¸ßµÃ¶à¡£

ÔÚÓÎÏ·³ÌÐòÖУ¬½«Ò»¸ö²»¹æÔòµÄͼÐÎÈçÈË»òÎïÌåµÈͼÐεþ¼Óµ½±³¾°ÉÏÃæʹÓõľÍÊÇÕâÑùµÄ¼¼Êõ¡£

3¡£¡¡MaskBltº¯Êý

MaskBltº¯ÊýÔÊÐíÔÚÒ»¸öͼƬÖжԲ»Í¬µÄ²¿·ÖÒÔ²»Í¬µÄROPÂë½øÐвÙ×÷£¬ËüµÄÓï·¨ÊÇ£º

¡¡¡¡¡¡¡¡invoke¡¡¡¡MaskBlt£¬hDcDest£¬xDest£¬yDest£¬dwWidth£¬dwHeigt£¬

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡hDcSrc£¬xSrc£¬ySrc£¬hMaskBmp£¬xMask£¬yMask£¬dwROP

ËüºÍBitBltµÄ²»Í¬Ö®´¦ÊǶàÁËÒ»¸öÕÚÑÚͼƬ¾ä±úhMaskBmp£¨×¢Ò⣺ÊÇλͼ¾ä±ú¶ø²»ÊÇDC¾ä±ú£©ÒÔ¼°hMaskBmpµÄ¿ªÊ¼×ø±ê¡£

MaskBltº¯ÊýͬÑùÊǽ«hDcSrcÒÔ£¨xSrc£¬ySrc£©Îª×óÉϽǵľØÐÎÇøÓòÒÔÖ¸¶¨ROPÂë²Ù×÷·½Ê½´«Ë͵½hDcDestÖÐÒÔ£¨xDest£¬yDest£©Îª×óÉϽǵľØÐÎÇøÓòÖУ¬¾ØÐεĿí¶ÈºÍ¸ß¶ÈÓÉdwWidthºÍdwHeightÖ¸¶¨£¬º¯ÊýµÄÌØÊâÖ®´¦ÊÇ¿ÉÒÔÖ¸¶¨Á½¸öROPÂ룬´«ËÍʱʹÓÃÄĸöROPÂëÒª²Î¿¼ÕÚÑÚͼƬ£¬²Î¿¼µÄλÖôÓÕÚÑÚͼƬµÄ£¨xMask£¬yMask£©×ø±ê¿ªÊ¼¡£

hMaskBmpÖ¸¶¨ÁËÒ»·ùºÚ°×λͼ£¬Èç¹ûλͼÖжÔÓ¦Î
·µ»ØĿ¼ ÉÏÒ»Ò³ ÏÂÒ»Ò³ »Øµ½¶¥²¿ ÔÞ£¨7£© ²È£¨5£©
δÔĶÁÍꣿ¼ÓÈëÊéÇ©ÒѱãÏ´μÌÐøÔĶÁ£¡
ÎÂÜ°Ìáʾ£º ο´Ð¡ËµµÄͬʱ·¢±íÆÀÂÛ£¬Ëµ³ö×Ô¼ºµÄ¿´·¨ºÍÆäËüС»ï°éÃÇ·ÖÏíÒ²²»´íŶ£¡·¢±íÊéÆÀ»¹¿ÉÒÔ»ñµÃ»ý·ÖºÍ¾­Ñé½±Àø£¬ÈÏÕæдԭ´´ÊéÆÀ ±»²ÉÄÉΪ¾«ÆÀ¿ÉÒÔ»ñµÃ´óÁ¿½ð±Ò¡¢»ý·ÖºÍ¾­Ñé½±ÀøŶ£¡