当前位置: 首页 > 知识库问答 >
问题:

如何获得工具栏按钮的句柄?

宦博雅
2023-03-14

我想得到工具栏按钮的句柄。我知道它的ID和工具栏按钮所在的窗口句柄。但是GetDlgItem函数似乎不适用于工具栏按钮。

 GetDlgItem(windowHandle, buttonID);

我原以为具有正确参数的函数SendMessage()可以获得句柄,但我找不到任何有助于实现此目的的msg参数。

什么函数可以帮助我获得它的句柄?

共有3个答案

太叔英卫
2023-03-14

你可以的。两种方法:

1: 自己创建按钮

INT_PTR CALLBACK myModelessToolbar(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
    UNREFERENCED_PARAMETER(lParam);
    switch (message)
    {
        case WM_INITDIALOG:
        {
            HWND hYellowButton =
              CreateWindow(L"BUTTON",
                           L"Yellow button",
                           BS_ICON | WS_VISIBLE | WS_CHILD,
                           610, 0, 20, 20, hDlg, (HMENU)1, NULL, NULL);

            m_pBitmap = Gdiplus::Bitmap::FromFile(L"Yellow.jpg"); // Image must be in executable directory.
            m_pBitmap->GetHICON(&hicon);
            LRESULT lr = SendMessage(hYellowButton, BM_SETIMAGE, IMAGE_ICON, (LPARAM)hicon);

            return (INT_PTR)TRUE;
        }
    }
}

2: 使用Visual

HWND test = GetDlgItem(hDlg, IDC_BUTTON8);
lr = SendMessage(test, BM_SETIMAGE, IMAGE_ICON, (LPARAM)hicon);
章学义
2023-03-14

工具栏按钮未打开窗口。没有可供您检索的窗口句柄。

如果您希望自动化工具栏按钮,那么您应该使用UI自动化。

姜献
2023-03-14

工具栏的按钮没有句柄(它们不像普通按钮那样是窗口)。有很多工具栏消息(TB\u*)可以使用这些按钮。

参考http://msdn.microsoft.com/en-us/library/bb760435(VS.85). aspx

您可以发送TB\u BUTTONCOUNT消息以获取工具栏中的按钮计数,并创建一个简单的循环,通过发送TB\u ISBUTTONENABLED检查每个按钮是否被取消。您还可以发送TB\u GETBUTTON消息,以获取有关TBBUTTON中每个按钮的更多信息

 类似资料:
  • 在此对话框您可以指定当浏览磁盘文件夹 (“在压缩文件外部时显示”选项) 或查看压缩文件内容 (“在压缩文件内部时显示”选项 ) 时,要显示哪一些工具栏按钮。可以改变按钮的顺序,只要选择您希望移动的按钮并按下“上移”或“下移”来改变它们的位置。如果您要恢复默认工具栏配置,按下“默认”按钮。 “分隔符”按钮在选择的当前按钮前插入一个分隔符线。如果您要移除一个分隔符,或者取消它的选择状态,或者再次按下“

  • 我正在构建一个UI使用Java FX场景构建器,我想要一个按钮在一个工具栏浮动到右侧的工具栏。我尝试过更改父(工具栏)和按钮的节点方向,但两者似乎都被忽略了。

  • 我有一个有几个按钮的工具栏。我想要几个按钮来加载不同的FXML文件。现在的方法是用Java代码编写fxml文件,并在每次调用时插入它。如果我可以调用FXML文件并获得正确的场景,这将是一个更好的选择。这是我加载设置视图的示例: 我以前使用过tabpane,它的便利之处在于它可以加载“内容”,在某种程度上,它是一个actionlistener,可以加载fxml文件。我希望工具栏按钮具有此功能。 我们

  • icon NativeImage- 缩略图工具栏中显示的icon图标。 clickFunction tooltip String(可选) - 按钮的提示文本。 flags String - 控制按钮的特定状态和行为。默认情况下,它是['enabled']。 flags是一个数组,可以包括以下 String: enabled - 该按钮是活动的,可供用户使用。 disabled - 该按钮被禁用。如

  • 我有一个web服务,它会返回给定文档id的pdf流,我会将内容类型设置为application/pdf,并将输出写入IFRAME,直到这一点,我完成并确定!我的问题是:我的要求是禁用IFRAME中的pdf下载工具栏按钮,是否有任何方法可以使用JavaScript或j query禁用pdf工具栏按钮,我尝试了以下方法: 我尝试设置工具栏=0为iframe标签,但它无法工作。有人请告诉我如何实现这一点

  • 是否可以在工具栏中同时显示主页图标和后退图标?1) 是否可以更改后退按钮图标和主页图标的显示顺序。目前,它首先显示箭头按钮,然后显示徽标(主页按钮) 2) 第二个要求是在单击home图标并返回上一个屏幕(如果是back按钮)时清除活动堆栈。 我有以下代码,将显示一个箭头键和主页图标,这是设置为标志。是否可以处理这两个图标上的点击事件: 我可以通过onOptionsITemSelec方法处理点击箭头