【发布时间】:2021-01-14 23:37:37
【问题描述】:
我开始制作一个简单的 c++ Win32 程序。我只是试图将图像加载到窗口中,但它并没有真正起作用。我调试了一段时间,我知道问题是我的 LoadImageW() 函数返回 null。代码:
void loadImages() {
hPic1 = (HBITMAP)LoadImageW(NULL, L"pic.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
if (hPic1== NULL) {
MessageBox(NULL, L"Error", L"LoadImage error", MB_OK);
}
}
.bmp 文件与 .cpp 文件位于同一目录中,我什至尝试使用整个路径,但没有成功。我没有收到任何错误,并且主窗口正确加载,但是没有显示图像并且出现了消息框。 loadImages() 函数在窗口的 WM_CREATE 处被调用。 SendMessageW() 函数如下所示:
SendMessageW(hImageWindow, STM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hPic1);
感谢您的帮助,祝您有美好的一天!
【问题讨论】:
-
错误代码是什么?
-
The documentation says to call GetLastError。
GetLastError()的值是多少?另外,在调用GetLastError之前不要调用MessageBox-- 在确定hPic1为NULL 之后,应立即调用GetLastError。 -
错误是(翻译自我的语言)类似于“任务已成功完成”
-
“.bmp 文件与 .cpp 文件位于同一目录中” - 这无关紧要。一旦编译器完成生成目标代码,有关源文件所在位置的信息就会丢失。也就是说,声音代码将始终使用完全限定的路径名。如果函数以完全限定的路径名失败,则假定文件无效是合理的。要解决此问题,请在 MS Paint 中打开文件并再次保存。这将产生一个有效的 BMP 文件。
-
@IInspectable 我这样做了,现在我没有收到任何错误,并且图像加载成功。谢谢!