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

Winapi 如何在Win32后台显示位图图像,winapi,visual-c++,bitmap,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, I

我很难找到如何将.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设置为背景


谢谢

在调用
LoadBitmap
和调用
CreatePatternBrush
时,您没有执行任何错误检查。很可能其中一个调用失败,因此
hbrBackground
被设置为
NULL
,这将导致白色背景


下一步是进行一些调试,以确定哪个调用失败。很可能是作为资源链接的位图文件使用了
LoadBitmap
不支持的格式。或者位图文件不知何故没有链接。但只要你真的创建了位图,然后创建了画笔,系统就会使用该画笔绘制背景。

IDB_BITMAP1指向什么?如果双击IDB_位图1,它是否显示位图?如果是,那么为什么要导入x.bmp?在MS Paint中打开x.bmp并检查它是否是有效的bmp。是的,如果双击它,它会显示我链接到它的.bmp(x.bmp),但当我运行程序时,背景只是纯白色。不要将位图设置为背景笔刷。处理
WM_ERASEBKGND
消息,并将位图绘制到提供的
HDC
上。谢谢@RemyLebeau——多亏了你的评论,我才让它工作起来,但我在David的建议中加入了错误检查。谢谢大家!