Здравствуйте! Пробовал узнать размер функцией GetBitmapDimensionEx. Компилятор ругается на параметр pDimension Points to a SIZE structure to receive the bitmap dimensions. Думал, может я не подключил библиотеку, где стр-ра SIZE определена, искал, но не нашел данной структуры вообще. попробовал сам объявить: Код (Text): SIZE STRUCT cx DWORD ? cy DWORD ? SIZE ENDS Но все равно не выходит ничего. Функция GetBitmapDimensionEx возвращает размеры установленные SetBitmapDimensionEx, но та опять же не работает из-за структуры SIZE. Может есть какой-то другой способ?
Код (Text): pict SIZE ... .if uMsg == WM_CREATE invoke BitmapFromResource, hInstance, 2000 mov hBmp, eax .elseif uMsg == WM_LBUTTONDOWN invoke GetBitmapDimensionEx,hBmp,addr pict invoke LoadPicture,cOp invoke InvalidateRect,hWnd,NULL,TRUE LoadPicture это 2 строчки: Код (Text): invoke BitmapFromResource, hInstance, 2000 mov hBmp, eax cOp - порядковый номер картинки в ресурсах Выводится на окно картинка: Код (Text): inc cOp invoke BeginPaint,hWnd,ADDR ps mov hDC, eax invoke CreateCompatibleDC,hDC mov memDC, eax invoke SelectObject,memDC,hBmp mov hOld, eax invoke BitBlt,hDC,0,1,800,600,memDC,0,0,SRCCOPY invoke SelectObject,hDC,hOld invoke DeleteDC,memDC invoke EndPaint,hWin,ADDR ps
+ много. Код (Text): GetBitmapSize proc BTFS: HBITMAP; .data? gbs BITMAP <>; .code invoke GetObject, BTFS, SIZEOF BITMAP, ADDR gbs; MOV EAX, gbs.bmHeight; SHL EAX, 16; MOV AX, WORD PTR [gbs.bmWidth]; RET; GetBitmapSize endp; [+]: кстати да, почему не работало: The retrieved dimensions must have been set by the SetBitmapDimensionEx function. Т.е. если Вы их заранее не задали, то так или иначе будут выдаваться нули, вне зависимости от размеров картинки %)