【问题标题】:How to change the toolbar button's Bitmap in win32?如何在win32中更改工具栏按钮的位图?
【发布时间】:2010-04-15 18:32:13
【问题描述】:

我在一个窗口中使用 ReBar 创建了一个带有一些控件的工具栏。谁能告诉我,

  1. 如果我知道(仅)它的 ID,如何获取 按钮/组合框/等(不是窗口中的普通按钮)的 HWND?
  2. 如果我知道资源的ID,如何获取HBITMAP?
  3. 如何给控制器设置位图?

    SendDlgItemMessageW(hWnd, nId, BM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hBitmap);

这不适用于工具栏,不是吗?我找不到方法,请帮助我。谢谢...

问候

编辑: 请问有人吗? :(

编辑: 行。这些天似乎每个人都很忙。 :(顺便说一句,这是一个错误的问题吗?

【问题讨论】:

  • 控制器是什么意思?钢筋带?
  • 嘿!钢筋中的任何东西,例如 Button、Combobox 等(我没有其他词来描述它)。谢谢。
  • 我认为钢筋控件包含一个或多个钢筋带,而钢筋带只能包含一个控件。见msdn.microsoft.com/en-us/library/bb774373(VS.85).aspx。您能否详细说明您在这篇 MSDN 文章中的意思?
  • 嘿!我只知道要创建工具栏,它使用了 rebar CONCEPT(实际上我不知道更多细节)。因此,我为工具栏中的每个按钮设置了 ID,为钢筋和工具栏窗口设置了 HWND。现在我必须使用这些知识更改按钮的位图(在工具栏中)。我可以吗?

标签: c++ winapi hwnd toolbars hbitmap


【解决方案1】:

您可以下载ControlSpy 并在那里试用以感受一下。
我检查了 Rebar,发现 RB_SETBANDINFO(在 Messages 下)可能是您要查找的内容。

【讨论】:

    【解决方案2】:

    GetDlgItem 对 Rebar 的使用效果与对 Dialog 的使用效果一样好。

    您可以将 GetDlgItem 函数用于任何父子窗口对,而不仅仅是对话框。只要hDlg参数指定了一个父窗口并且子窗口有唯一标识符(由创建子窗口的CreateWindow或CreateWindowEx函数中的hMenu参数指定),GetDlgItem就返回一个有效的子窗口句柄。

    您可以使用 LoadImage 从资源中加载位图并返回 HBITMAP。

    最后,SendMessage(hWndButton, BM_SETIMAGE, (WPARAM) IMAGE_BITMAP, (LPARAM) hBitmap);

    【讨论】:

    • 嘿!非常感谢。我试试看。
    猜你喜欢
    • 2017-06-15
    • 1970-01-01
    • 1970-01-01
    • 2021-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-16
    相关资源
    最近更新 更多