0

Visual StudioC++は初めてです。システムから特定のパスでbmpファイルをロードし、mfcの画像コントロールに表示しようとしていますが、mはできません。誰かが私をここに案内してくれますか。次のことを試しましたが、エラーが発生します。

コード:

filePath = "images/0000.4d.bmp";
ASSERT(filePath);

HBITMAP hBitmap= NULL;
hBitmap = (HBITMAP) LoadImage (
  0, 
  filePath, 
  IMAGE_BITMAP, 
  0, 0, 
  LR_LOADFROMFILE | LR_CREATEDIBSECTION | LR_DEFAULTSIZE);


IDB_PICTURE2.LoadBitmapW(MAKEINTRESOURCE(hBitmap));
m_picture.SetBitmap(IDB_PICTURE2);

bmpファイルを読み込もうとするとエラーが発生します。ありがとうございました。

エラー:

Detected memory leaks!
Dumping objects ->
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {525} normal block at 0x0034B848, 54 bytes long.
 Data: <   x            > 84 CF B1 78 12 00 00 00 12 00 00 00 01 00 00 00 
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\wincore.cpp(4500) : {518} client block at 0x0034B708, subtype c0, 56 bytes long.
a CObject object at $0034B708, 56 bytes long
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {511} normal block at 0x0034B1C8, 42 bytes long.
 Data: <   x            > 84 CF B1 78 0C 00 00 00 0C 00 00 00 01 00 00 00 
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\occmgr.cpp(195) : {510} normal block at 0x0034B170, 24 bytes long.
 Data: <                > E8 03 00 00 00 00 00 00 E9 03 00 00 00 00 00 00 
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\occmgr.cpp(181) : {509} normal block at 0x0034B120, 16 bytes long.
 Data: <                > FF FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 
c:\documents and settings\raja hadi ashraf\my documents\visual studio 2010\projects\mirrorimage\mirrorimage\mirrorimage.cpp(59) : {505} client block at 0x0034AFB0, subtype c0, 12 bytes long.
a CObject object at $0034AFB0, 12 bytes long
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {494} normal block at 0x0034CDF8, 22 bytes long.
 Data: <   x            > 84 CF B1 78 02 00 00 00 02 00 00 00 01 00 00 00 
Object dump complete.
The program '[0x62C] mirrorImage.exe: Native' has exited with code 3 (0x3).
4

1 に答える 1

0

まず、hBitmapがNULLでないことをテストしてから、次のように呼び出します。

m_picture.SetBitmap( hBitmap );

他の:

  1. IDB_PICTURE2は、resource.hファイルの単なる#defineです。コンパイル時に、数値に置き換えられるだけです。つまり、メソッドを呼び出すことができるクラスではありません。
  2. MAKEINTRESOURCEは、メソッドで使用するためにリソースIDをLPCTSTRに変換するためのものです。hBitmapをリソースに変換しません。
  3. リストする「エラー」は、単なるデバッグ情報です。実際のエラーではありません。LoadBitmapがNULLを返す場合は、追加情報についてGetLastErrorを呼び出します。
于 2012-09-12T09:23:58.107 に答える