Не могу получить размеры растрового изображения ресурса с помощью winapi - PullRequest
1 голос
/ 15 декабря 2011

У меня есть ч / б BMP-файл. Это 8 BPP-картинок, размер 2048 * 2048. Я создаю новый WTL-проект, захожу в «Ресурсы» -> Импортировать растровое изображение -> выбрать мой bmp-файл -> дать ему MYBITMAPID id

Вот код:

HBITMAP bm = ::LoadBitmap( _Module.GetModuleInstance(), MAKEINTRESOURCE(MYBITMAPID));
ATLASSERT(bm); // <--- Ok

SIZE sz;
BOOL res = ::GetBitmapDimensionEx(bm, &sz);
ATLASSERT(res); // <--- Ok

ATLASSERT(sz.cx && sz.cy); // <--- Not Ok

Отладчик сообщает, что оба размера равны 0.

Я пытался

HBITMAP bm = (HBITMAP)::LoadImage( _Module.GetModuleInstance(), MAKEINTRESOURCE(MYBITMAPID), IMAGE_BITMAP, 0, 0, LR_SHARED | LR_MONOCHROME);

и получил тот же результат.

Я мог бы получить размеры с помощью класса CBitmap, но я хотел бы использовать winapi только для этой операции.

Как я могу загрузить растровое изображение из ресурсов?

Ответы [ 2 ]

3 голосов
/ 15 декабря 2011

Вам нужно использовать функцию GetObject() и передать ей структуру BITMAP для получения размера растрового изображения ресурса.

3 голосов
/ 15 декабря 2011

WTL предлагает вам помощников для этого:

CBitmap Bitmap = AtlLoadBitmap(MYBITMAPID);
SIZE Extent;
BOOL bGetSizeResult = Bitmap.GetSize(Extent);
...