【问题标题】:How to make an icon button in C++如何在 C++ 中制作图标按钮
【发布时间】:2009-03-11 00:50:24
【问题描述】:

我知道如何在 C++ 中绘制一个按钮,但是我将如何在其上制作一个图标,有人可以发布源代码或提供参考吗?通过 SendMessage() 或者如果不是这样,请粘贴 请需要更简单的答案,没有这么多文件我有点新

【问题讨论】:

  • 请指定您使用的 GUI API。赢32? MFC?吗?我从您的 SendMessage 评论中假设为 win32。但请澄清。
  • 我想我们可以从您接受的答案中假设您正在使用 MFC :-) 非常感谢您。
  • 中途丢失了标点符号?

标签: c++ winapi button reference icons


【解决方案1】:

由于您是新手,您可能还希望查阅 MSDN 库。您可以找到有关 Button Styles(具体参见 BS ICON 和 BS BITMAP 样式)和 BM_SETIMAGE message 的信息。

【讨论】:

    【解决方案2】:

    如果您使用 MFC,那么我建议您使用以下CButton 方法SetIcon

    CButton myButton;
    
    // Create an icon button.
    myButton.Create(_T("My button"), WS_CHILD|WS_VISIBLE|BS_ICON, 
       CRect(10,10,60,50), pParentWnd, 1);
    
    // Set the icon of the button to be the system question mark icon.
    myButton.SetIcon( ::LoadIcon(NULL, IDI_QUESTION) ); 
    

    这很好用。

    【讨论】:

      【解决方案3】:

      发送 BM_SETIMAGE 消息,并将加载的图像句柄传递给 lParam。

      button1 = CreateWindowW(L"BUTTON", L"&Button", WS_VISIBLE | WS_CHILD | WS_TABSTOP | BS_BITMAP, 20, 50, 80, 25, hwnd, (HMENU) 600, NULL, NULL);
      
      hImg = LoadImageW(NULL, L"test123.bmp", IMAGE_BITMAP, 0, 0, LR_DEFAULTCOLOR | LR_DEFAULTSIZE | LR_LOADFROMFILE);
      SendMessageW(button1, BM_SETIMAGE, IMAGE_BITMAP, (LPARAM) hImg);
      

      P.S: CreateWindow() 时需要使用 BS_BITMAP 标志

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-02-26
        • 2011-08-20
        • 2020-06-20
        • 1970-01-01
        • 2023-01-18
        • 1970-01-01
        • 1970-01-01
        • 2020-03-09
        相关资源
        最近更新 更多