【问题标题】:Can you programatically show a menu using the win32 API?您可以使用 win32 API 以编程方式显示菜单吗?
【发布时间】:2016-11-21 04:39:16
【问题描述】:

作为我的软件内置教程系统的一部分,我想以编程方式打开软件的窗口菜单并向用户展示在哪里可以找到某些功能。我搜索了 Win32 API,但找不到我要找的东西。这是否可以通过 API 实现,还是我需要提供某种解决方法?

【问题讨论】:

  • 使用 UI Automation 自动化 GUI。
  • @VuVirt 用于快捷菜单;他们想激活一个菜单栏菜单。
  • @andlabs 是一样的。仔细检查文档。菜单栏菜单实际上是弹出菜单。因此 GetSubMenu / TrackPopuMenu 也适用于菜单栏项目。
  • @VuVirt - 好吧,我必须说我很怀疑,但这很管用。您必须手动管理菜单弹出的位置,但这并不太难,所以谢谢。还要感谢 andlabs - 如果我的需求变得更复杂,这是一个很好的参考。

标签: winapi


【解决方案1】:

菜单栏或任何其他子菜单(弹出菜单)的子菜单项可以通过TrackPopupMenu(Ex) API 函数显示。此功能需要子菜单的菜单句柄和显示它的坐标。例如,为了显示菜单栏的文件菜单,应采取以下操作: 使用 GetSubMenu(0) 获取文件子菜单句柄;使用 GetMenuItemRect 获取文件菜单项矩形;使用矩形计算所需的坐标; TrackPopupMenu(Ex) 显示菜单。

【讨论】:

    猜你喜欢
    • 2018-07-15
    • 2010-11-13
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 2018-09-02
    • 2013-04-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多