1

白黒 bmp ファイルがあります。これは 8 BPP 画像で、サイズは 2048 * 2048 です。新しい WTL プロジェクトを作成し、[リソース] -> [ビットマップのインポート] -> [bmp ファイルの選択] -> [ MYBITMAPIDID ] を指定します。

コードは次のとおりです。

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 はこの操作のみに使用したいと考えています。

リソースからビットマップをロードするにはどうすればよいですか?

4

2 に答える 2

3

WTLは、このためのヘルパーを提供します。

CBitmap Bitmap = AtlLoadBitmap(MYBITMAPID);
SIZE Extent;
BOOL bGetSizeResult = Bitmap.GetSize(Extent);
于 2011-12-15T07:13:26.587 に答える
3

リソースビットマップのサイズを取得するには、GetObject()関数を使用して構造体を渡す必要があります。BITMAP

于 2011-12-15T07:48:33.767 に答える