Появился ещё один вопрос, рисую иконку Код (Text): mov eax, [edi].bmiHeader.biWidth mov ebx, [edi].bmiHeader.biHeight mov iWidth, eax shr ebx, 1 mov iHeight, ebx mov eax, edi add eax, sizeof BITMAPINFOHEADER +32 + 32 mov lpArrayColor, eax invoke GetDC,0 mov hDC, eax mov pcolorBits, 0 invoke CreateDIBSection,hDC,edi,DIB_RGB_COLORS,addr pcolorBits,NULL,0 mov colorBitmap, eax invoke CreateCompatibleDC,hDC mov hdcColor, eax invoke ReleaseDC,NULL,hDC invoke SelectObject,hdcColor,colorBitmap mov hOldC, eax invoke SetDIBitsToDevice,hdcColor,0,0,iWidth, iHeight,0,0,0,iHeight,lpArrayColor,edi, DIB_RGB_COLORS invoke BitBlt,static_hdc,0,0,iWidth,iHeight,hdcColor,0,0,SRCCOPY В результате получаю иконку на черном фоне. Откуда мог взятся черный фон?
iZzz32, так ? Код (Text): mov eax, [edi].bmiHeader.biWidth mov ebx, [edi].bmiHeader.biHeight mov iWidth, eax shr ebx, 1 mov iHeight, ebx xor eax, eax mov ax, [edi].bmiHeader.biBitCount mul iWidth add eax, 31 mov ecx, 32 mov edx, 0 div ecx shl eax, 2 mul iHeight mov iSizeColor, eax mov eax, iWidth add eax, 31 shr eax, 5 shl eax, 2 mul iHeight mov iSizeMask, eax mov eax, edi add eax, sizeof BITMAPINFOHEADER +32 + 32 mov lpArrayColor, eax add eax, iSizeColor mov lpArrayMask, eax xor eax, eax mov ebx, iWidth mov edx, iHeight mov ecx, iSizeMask mov BmpInfoMask.bmiHeader.biSize, sizeof BITMAPINFOHEADER mov BmpInfoMask.bmiHeader.biWidth, ebx mov BmpInfoMask.bmiHeader.biHeight, edx mov BmpInfoMask.bmiHeader.biPlanes, 1 mov BmpInfoMask.bmiHeader.biBitCount, cx mov BmpInfoMask.bmiColors[0].rgbReserved, al mov BmpInfoMask.bmiColors[0].rgbRed, al mov BmpInfoMask.bmiColors[0].rgbBlue, al mov BmpInfoMask.bmiColors[0].rgbGreen, al mov BmpInfoMask.bmiColors[1].rgbReserved, al mov al, 255 mov BmpInfoMask.bmiColors[1].rgbRed, al mov BmpInfoMask.bmiColors[1].rgbBlue, al mov BmpInfoMask.bmiColors[1].rgbGreen, al invoke GetDC,0 mov hDC, eax mov pcolorBits, 0 invoke CreateDIBSection,hDC,edi,DIB_RGB_COLORS,addr pcolorBits,NULL,0 mov colorBitmap, eax invoke CreateCompatibleDC,hDC mov hdcColor, eax invoke ReleaseDC,NULL,hDC invoke SelectObject,hdcColor,colorBitmap mov hOldC, eax mov pmaskBits, 0 invoke CreateDIBSection,NULL,addr BmpInfoMask,DIB_RGB_COLORS,addr pmaskBits,NULL,0 mov maskBitmap, eax invoke CreateCompatibleDC,NULL mov hdcMask, eax invoke SelectObject,hdcMask,maskBitmap mov hOldM, eax invoke SetDIBitsToDevice,hdcMask,0,0,iWidth,iHeight,0,0,0,iHeight,lpArrayMask,addr BmpInfoMask,DIB_RGB_COLORS invoke BitBlt,static_hdc,0,0,iWidth,iHeight,hdcMask,0,0,SRCAND invoke SetDIBitsToDevice,hdcColor,0,0,iWidth, iHeight,0,0,0,iHeight,lpArrayColor,edi, DIB_RGB_COLORS invoke BitBlt,static_hdc,0,0,iWidth,iHeight,hdcColor,0,0,SRCINVERT
<оффтоп> Мне вот всегда было интересно. Если вопрос по API, то накуя листинги давать на асме? На том же си это было бы несколько строк кода. Кто будет вникать в эти ассемблерные портянки? Я бы тебе и ответил на твой вопрос, но пока прокрутишь в голове что ты там наксорил, намулил, надивал и наэсашерил - мозг сломать можно. </оффтоп>
_DEN_, хорошо, покажи мне как в несколько строк на си отрисовать иконку на статике имея её данные в памяти