如何使用Win32APi c ++将图像设置为按钮?

时间:2015-11-27 11:17:22

标签: c++ image winapi button

我需要将图像设置为按钮。主要思想是使图像可以点击,当点击它时会发生一些事件。

case WM_CREATE:
        HANDLE hBmp = (HBITMAP)LoadImage(GetModuleHandle(NULL), 
                                        MAKEINTRESOURCE(IDB_BITMAP1), 
                                        IMAGE_BITMAP, 
                                        NULL, 
                                        NULL,
                                        LR_DEFAULTCOLOR);
        HWND hButton = CreateWindow(L"button", L"Label",
            BS_BITMAP | WS_VISIBLE |WS_CHILD,
            10, 10,
            1366, 699,
            hWnd, (HMENU)MAP_BUTTON1,
            hInst, NULL);

        SendMessage(
            (HWND)hWnd,
            (UINT)BM_SETIMAGE,
            (WPARAM)IMAGE_BITMAP,
            (LPARAM)hBmp);
        break;

执行此操作后,我有一些像this

这样的巨星

2 个答案:

答案 0 :(得分:1)

我看到以下问题:

  • 您不进行任何错误检查。也许LoadImage失败了。也许CreateWindow失败。
  • 您的hBmp类型错误。它应该是HBITMAP
  • 发送BM_SETIMAGE时,您正在传递按钮父级的句柄而不是按钮的句柄。

答案 1 :(得分:0)

不要覆盖@David Heffernan的答案,这是一个提示;

enter image description here

另外,你不需要hinst按钮,只需将其设置为NULL;