2011-12-15 25 views
0

b/w bmpファイルがあります。これは、8 BPPの絵だ、大きさは、私は新しいWTLプロジェクトを作成します2048 * 2048で、「リソース」に行く - > [インポートビットマップ - >私のBMPファイルを選択 - >MYBITMAPID idはここwinapiを使用してリソースビットマップサイズを取得できません。

がコードでそれを与える:

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を使用したいと思います。

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

+1

['GetObject()'](http://msdn.microsoft.com/en-us/library/aa932477.aspx)と 'BITMAP'構造体を使用すると運が悪いですか? –

+0

@AndréCaron:ありがとう、それは動作するようです! – fogbit

+0

私のコメントから答えを出しました。 –

答えて

2

WTLはあなたに、このためのヘルパーを提供しています:

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

これは私が必要とするものではありませんが、とにかく役に立つ情報に感謝します! – fogbit

+0

それでは何が必要ですか?リソースからビットマップをロードし、その幅と高さを取得します。これを行うために、純粋なWin API関数が必要な場合は、デバッガでメソッドに入るだけで、 'GetObject' APIでfnidを実行することができます。 –

3

あなたは、リソースのビットマップのサイズを取得するためにGetObject()機能を使用し、それをBITMAP構造を渡す必要があります。

関連する問題