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);

当我运行程序时,它崩溃了。我使用了 GetLastError(),它返回 2/FILE_NOT_FOUND,但文件(“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 回答