c++ - 在 WinApi 中更改背景图像

标签 c++ background window hwnd

所以这个问题我已经有一段时间了......我似乎无法解决它......我设法设置了相对容易的开始背景,但我只是不知道如何在我的应用程序中更改它。

我导入了 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/

相关文章:

c++ - 假设没有公共(public)代码,将公共(public)代码移动到基类是好习惯吗?

android - 退出应用程序后按钮背景更改为默认

swift - Swift 中高效且一致的时序 (GCD)

jquery - $.get VS window.open()

jquery window.click 第一次不工作

c++ - 如何检查boost线程正在运行并杀死它

c++ - 成员函数指针 - 如何做到这一点?

c++ - 我是否将 (int, double...) 视为类

c++ - 如何在 Visual Studio 2008 中使用 .a lib 文件?

android - 将 ImageView 设置为后台 Android