C++ CMFCButton::SetImage-位图赢得';不显示
我正在尝试从C++ CMFCButton::SetImage-位图赢得';不显示,c++,winapi,mfc,C++,Winapi,Mfc,我正在尝试从CMFCButton中使用函数SetImage加载按钮的位图。我没有发现任何错误,只是一个简单的按钮。我正在用图标做同样的事情,它可以工作,但我也需要它来加载位图。我需要从路径而不是从资源中加载图像 这是我的密码: iconResource = path + m_type + _T("U") + extension; //i.e : C:\test\earthU.bmp HANDLE hIcon = ::LoadImage(nullptr, iconResource, IMAGE_
CMFCButton
中使用函数SetImage
加载按钮的位图。我没有发现任何错误,只是一个简单的按钮。我正在用图标做同样的事情,它可以工作,但我也需要它来加载位图。我需要从路径而不是从资源中加载图像
这是我的密码:
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);
为CMFCButton
::LoadImage(nullptr, bitmapfile, IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION|LR_LOADFROMFILE);
部分解释:
CMFCButton
(“afxbutton.cpp”
)的MFC源代码显示它为LoadImage
添加了LR\u CREATEDIBSECTION
。这没有记录,也不清楚为什么需要这样做。源位图不是32位时,似乎需要LR\u CREATEDIBSECTION
。您可能会或可能不会收到错误,但您不知道,因为您忽略了错误检查LoadImage
通过返回NULL
报告错误。使用提供的代码片段,我们也无法看到iconResource
是否包含正确的值。operator+
的操作取决于path
和m_type
的类型。您是否检查了LoadImage
是否成功?如果没有,您是否检查了GetLastError
返回的内容(这可能会提供一些关于原因的线索)。如果你没有做这两件事,你应该现在就做,并将结果发布在这里(假设这样做无助于解决你自己的问题)。我的句柄
包含一个很好的句柄(不是NULL
)我尝试了GetLastError
,得到了返回值0。@Emile如果从资源加载图像,它能工作吗?对不起,我不知道问题是什么,只是想帮你缩小范围。不过,我怀疑您可能需要调试MFC代码才能弄清问题。将Bitmapfc的LR_-LOADFROMFILE
更改为LR_-CREATEDIBSECTION | LR_-LOADFROMFILE
,可能会添加LR_-CREATEDIBSECTION
,以便在内部访问图像的规范表示。与在UTC中保留所有日期时间的精神类似:无论环境如何,信息都是真实的。DIB中的“DI”毕竟意味着“设备独立”,设备是需要正确解释的外部状态DDB。如果您有时间,请在文档页面上发布一个问题。