【发布时间】:2019-07-30 18:30:06
【问题描述】:
我正在尝试使用来自CMFCButton 的函数SetImage 为我的按钮加载位图。我没有收到任何错误或其他东西,只是一个普通的按钮。我正在用icons 做同样的事情,它可以工作,但我也需要它来加载bitmap。我需要从路径而不是资源中LoadImage。
这是我的代码:
iconResource = path + m_type + _T("U") + extension; //i.e : C:\test\earthU.bmp
HANDLE hIcon = ::LoadImage(nullptr, iconResource, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
//same thing for Hot and Disable bitmap
以及对SetImage 函数的调用:
SetImage((HBITMAP)hIcon, 0, (HBITMAP)hIconHot, 0 , (HBITMAP)hIconDis);
【问题讨论】:
-
您可能会或可能不会收到错误,但您不知道,因为您忽略了检查错误。
LoadImage通过返回NULL报告错误。使用提供的代码 sn-p,我们也看不到iconResource是否持有正确的值。operator+的作用取决于path和m_type的类型。 -
你检查
LoadImage成功了吗?如果没有,您是否检查过GetLastError返回的内容(这可能会提供一些关于原因的线索)。如果你没有做这些事情,你现在应该做,并在这里发布结果(假设这样做并不能帮助你解决你自己的问题)。 -
我的
HANDLE包含一个很好的句柄(不是NULL),我已经尝试过GetLastError,我得到了回报0。 -
@Emile 如果您从资源加载图像,它是否有效?抱歉,我不知道问题是什么,只是想帮助您缩小问题范围。我怀疑您可能必须调试 MFC 代码才能深入了解。
-
将位图的
LR_LOADFROMFILE更改为LR_CREATEDIBSECTION|LR_LOADFROMFILE