【问题标题】:Get system default menu popup alignment/direction获取系统默认菜单弹出对齐/方向
【发布时间】:2016-01-27 08:40:05
【问题描述】:

我想知道默认菜单弹出对齐/方向是什么。当您在应用程序中使用主菜单或使用上下文弹出菜单时,它会向右、居中或向左打开 - 取决于 Windows 版本、一些自定义注册表设置或左/右手选项。

必须有一种方法可以使用某些 Windows API 获取该信息(而不是为不同的 Windows 版本/首选项/注册表修改等构建复杂的函数)。

我需要将这些信息应用到我的应用程序中的一些自定义元素,我希望这些元素以与该系统上所有其他菜单相同的方向打开。这是一个 Delphi 应用程序,但如果它是一个 API 调用,那么我会很高兴使用您选择的语言提供解决方案。

【问题讨论】:

  • 获得默认菜单行为的最简单方法可能是使用菜单。可以自定义菜单以显示几乎所有内容。
  • SPI_GETMENUDROPALIGNMENT 是你想要的。
  • 再接Raymond的评论,实际的API函数是SystemParametersInfo()
  • SystemParametersInfo(SPI_GetMenuDropAlignment, 0, @ res, 0);做这项工作。非常感谢! @RaymondChen 如果你愿意,你可以创建一个答案,所以我可以接受。
  • 欢迎您写下自己的答案并接受。我不太了解 Delphi,因此您可以更好地编写与 Delphi 兼容的答案。

标签: winapi


【解决方案1】:

感谢 Raymond Chen 和 Jonathan Potter 的 cmets,这里有一个可以解决问题的函数:

function PopupMenusRightAligned(): Boolean;
var
  res: Integer;
begin
 SystemParametersInfo(SPI_GetMenuDropAlignment, 0, @res, 0);
 Result := res=0;
end;

API 文档:https://msdn.microsoft.com/ms724947

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-31
    • 2015-10-04
    • 2011-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多