所以这个问题我已经有一段时间了......我似乎无法解决它......我设法设置了相对容易的开始背景,但我只是不知道如何在我的应用程序中更改它。
我导入了 2 个带 ID 的位图: IDI_BITMAP1 IDI_BITMAP2
我使用 bitmap1 作为起始背景,我想在用户单击按钮时更改背景 case ID_MENUBUTTON1://change background
任何人都可以帮我解决这个问题吗?我真的试图理解它,但我就是做不到。以下是我创建开始背景的方式:
case WM_CREATE:
/* Create start background image */
hBMP[0] = LoadBitmap(hInst, MAKEINTRESOURCE(IDI_BITMAP1));
hBitmap[0] = CreateWindowEx(0,
L"Static",
L"",
WS_CHILD | WS_VISIBLE | SS_BITMAP,
-10,
0,
0,
0,
hwnd,
(HMENU)IDI_BITMAP2,
hInst,
NULL);
SendMessage(hBitmap[0], STM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hBMP[0]);
我知道可以使用 WM_PAINT 来做到这一点,但我不太确定它如何与我想要的一起工作,那就是只有当用户单击按钮时背景才会改变。
代码是 C++,使用 VS13
最佳答案
如果我对你的问题的理解正确,那么你已经在启动时正确设置了背景,但你希望能够在运行时更改它。
如果是这样,那么您就成功了一半以上。最初设置背景的方式
SendMessage(hBitmap[0], STM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hBMP[0]);
跟你以后换背景是一样的。只需为最后一个参数传递一个不同的位图句柄。
关于c++ - 在 WinApi 中更改背景图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23643156/