мне нужно получить массив пикселов, собрал из изсохдников вот такой код, но он не работает, ошибок никаких не выдаёт но в буффер ничего не пишется, помогите разобратся. Code (Text): LOCAL rt:RECT LOCAL pbuf[1024]:byte LOCAL lpbi: BITMAPINFOHEADER .... invoke GetWindowRect,hw_fix,addr rt invoke CreateCompatibleDC,hwdc_fix mov hdcmem,eax mov eax,rt.right sub eax,rt.left mov rt.right,eax mov wdth,eax mov ecx,rt.bottom sub ecx,rt.top mov rt.bottom,ecx mov hght,ecx xor edx,edx mov rt.left,edx mov rt.top,edx invoke CreateCompatibleBitmap,hwdc_fix,eax,ecx mov hbmp,eax invoke SelectObject,hdcmem,hbmp mov hobj,eax mov lpbi.biXPelsPerMeter, 0 mov lpbi.biYPelsPerMeter, 0 mov lpbi.biClrUsed, 0 mov lpbi.biClrImportant, 0 mov eax, wdth mov lpbi.biWidth, eax mov eax, hght mov lpbi.biHeight, eax mov eax, 100 mov lpbi.biBitCount, ax mov lpbi.biSize, sizeof BITMAPINFOHEADER mov lpbi.biPlanes, 1 mov lpbi.biCompression, BI_RGB mov lpbi.biSizeImage, 0 invoke RtlZeroMemory,addr pbuf,1024 invoke RtlMoveMemory,addr pbuf,addr lpbi,sizeof BITMAPINFOHEADER invoke GetDIBits,hdcmem,hbmp,0,hght,0,addr pbuf,DIB_RGB_COLORS
Вот поторопился, а редактировать теперь видимо нельзя. Из твоего кода я вижу, что ты только запрашиваешь BITMAPINFOHEADER, а где сама попытка на получение массива?
Вот в свое время делал подобное, правда сам не допонимаю как все это работает. Code (Text): invoke GlobalAlloc,GMEM_ZEROINIT,100352 mov hdcmem,eax mov edi,eax lea ebx,[eax+98304] mov [ebx.BITMAPINFOHEADER].biSize,sizeof (BITMAPINFOHEADER) mov [ebx.BITMAPINFOHEADER].biWidth,256 mov [ebx.BITMAPINFOHEADER].biHeight,128 mov [ebx.BITMAPINFOHEADER].biPlanes,1 mov [ebx.BITMAPINFOHEADER].biBitCount,24 mov [ebx.BITMAPINFOHEADER].biCompression,BI_RGB mov [ebx.BITMAPINFOHEADER].biSizeImage,98304 mov [ebx.BITMAPINFOHEADER].biXPelsPerMeter,256 mov [ebx.BITMAPINFOHEADER].biYPelsPerMeter,128 mov [ebx.BITMAPINFOHEADER].biClrUsed,0 mov [ebx.BITMAPINFOHEADER].biClrImportant,0 mov dword ptr [ebx+40],0 ;Создаем растровое изображение по BITMAPINFOHEADER invoke CreateDIBitmap,hdc,ebx,CBM_INIT,edi,ebx,DIB_RGB_COLORS mov esi,eax mov bmpmem1,eax ;Считываем BITMAPINFOHEADER текущего hdc invoke GetDIBits,hdc,eax,0,128,0,ebx,DIB_RGB_COLORS ;Создаем растровое изображение совместимое с текущим hdc invoke CreateCompatibleDC,hdc mov bmpmem,eax invoke SelectObject,eax,esi ;Здесь что нибудь рисуется в контекст bmpmem mov eax,hdcmem add eax,98304 invoke GetDIBits,hdc,bmpmem1,0,128,hdcmem,ecx,DIB_RGB_COLORS ;Здесь получаем массив invoke DeleteObject,bmpmem invoke DeleteObject,bmpmem1