0

編集: 以下のコード スニペットにプログラムの行をさらに追加しました。

プログラムに次のコード行があります

BITMAP BMP;
HBITMAP hBMP;

hBMP = (HBITMAP)LoadImage(GetModuleHandle(NULL), "Test.bmp", IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION | LR_LOADFROMFILE);
if (!hBMP) return 1;

GetObject(hBMP, sizeof(BMP), &BMP);

プログラムを実行すると、クラッシュします。2/FILE_NOT_FOUND を返す GetLastError() を使用しましたが、ファイル ("Test.bmp") は .exe のフォルダーにあります。誰かがコード行の何が問題なのか (またはエラーがこの行にない場合) を指摘できますか?

4

4 に答える 4

2

デフォルトのディレクトリを見つけるために使用GetCurrentDirectoryします。実行可能ファイルがある場所ではない可能性があります。ファイルへのフルパスを使用することをお勧めします。

于 2010-07-07T21:32:18.140 に答える
0

アプリケーションへのフルパスを使用してみてください。

また、main() 引数には現在のアプリケーション パスが含まれているため、文字列に追加できます。

于 2010-07-07T21:31:23.583 に答える
0

あなたのイメージは、実行が行われていると私が信じている一時パスに住んでいます...

環境::GetEnvironmentVariable("TEMP") + "\Button.bmp";

于 2010-07-07T21:31:31.087 に答える
0

IDE から開始したように、おそらくデバッガーで実行していますか? 現在の作業ディレクトリは、あなたが考えているものとは異なる場合があります。

編集: sysinternals から Process Explorer を使用すると、現在の作業ディレクトリは、バイナリが作成されたディレクトリではなく、Visual Studio を使用している場合、ソリューション ファイルを含むディレクトリであることがわかります。

于 2010-07-07T21:31:48.060 に答える