我正在制作一个包含图片控件的对话框。我将类型设置为BITMAP并将图像设置为我想要的图像。此图像也位于资源.rc文件中。当我将其设置为图片控件的位图时,我可以在编辑器中看到它很好,当我运行我的应用程序但是它不起作用时,我在图片控件中看不到任何内容。
我尝试了以下内容:
调用Initcommoncontrols(); (这个函数已被弃用,所以我尝试使用它想要的参数的InitCommonControlsEx())结果:仍然没有图片
我在初始化表单时使用了以下代码段:
SendMessage( GetDlgItem( aHWND, HEADERLOGO), STM_SETIMAGE, (WPARAM)IMAGE_BITMAP, (LPARAM)hBitmap );
hBitmap声明为:
HBITMAP hBitmap = LoadBitmap( hInstance, MAKEINTRESOURCE(BITMAP_LOGO) );
当我在LoadBitmap()之后执行getlasterror时,错误代码是:1814(0x716),它也转换为ERROR_RESOURCE_NAME_NOT_FOUND 我不知道为什么无法找到图像,我可以在编辑器中看到这个问题,对此没有任何抱怨。 hInstance是从WinMain()获得的,我也尝试使用这个片段获取它:
(HINSTANCE)GetWindowLong( aHWND, GWL_HINSTANCE);
我认为WinMain HINSTANCE是正确的,但只是为了确保我试过这个,没有效果。
之后,我认为它可能只是IDE搞砸了,所以我扔掉了对话框,重新创建它,添加了新的图片控件,再次添加了图像。同样的事情,在编辑器中看起来很好,但在运行项目时没有显示。
我猜我错过了一些非常简单的东西,请赐教。
答案 0 :(得分:1)
事实证明,在对话框中获取HINSTANCE是行不通的。它对应用程序内存无效。如果你从WinMain获得了HINSTANCE它将会起作用。我的引擎现在抓住了这个,现在HBITMAP句柄就可以了。