如何在后台Win32中显示位图图像

时间:2014-07-28 08:29:27

标签: winapi visual-c++ bitmap

我很难找到如何将.bmp图像加载到背景中。

这是我的代码:

wc.cbSize        = sizeof(WNDCLASSEX);
wc.style         = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc   = WndProc; 
wc.cbClsExtra    = 0;
wc.cbWndExtra    = 0;
wc.hInstance     = hInstance;
wc.hIcon         = LoadIcon(NULL, IDI_APPLICATION); 
wc.hCursor       = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = CreatePatternBrush(LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_BITMAP1)));
wc.lpszMenuName  = NULL;
wc.lpszClassName = g_szClassName;
wc.hIconSm       = LoadIcon(NULL, IDI_APPLICATION);

虽然问题不完全与代码有关。我只有一个文件x.bmp,我在我的resource.rc文件中定义了IDB_BITMAP1,并在resource.h中包含了一个标识符 - 但是当我运行它时,我只得到一个白屏。这里的问题是,如何将.bmp图像上传到.rc文件?我正在使用MSVS20124。当我右键单击.rc文件时,添加>位图>导入...> x.bmp我收到错误"无法加载文件"。为什么是这样?我只想将x.bmp设置为窗口中的背景。

感谢

1 个答案:

答案 0 :(得分:1)

您在LoadBitmap的通话和CreatePatternBrush的通话中未执行任何错误检查。很可能其中一个调用失败,因此hbrBackground设置为NULL,这会产生白色背景。

您的下一步是进行一些调试以确定哪个调用失败。很可能是您作为资源链接的位图文件使用LoadBitmap不支持的格式。或者位图文件可能以某种方式未被链接。但只要您实际设法创建位图然后刷子,系统就会使用该画笔绘制背景。