【问题标题】:How to detect height and orientation of taskbar in Windows with autohide enabed?如何在启用自动隐藏的 Windows 中检测任务栏的高度和方向?
【发布时间】:2012-04-06 10:09:33
【问题描述】:

我正在使用 Qt,我想做的是在 Windows 系统托盘中的图标上显示自定义弹出窗口。我可以通过使用geometry() 和任务栏高度通过查找screenGeometry() 和availableGeometry() 之间的差异来获取图标坐标。因此弹出窗口可以正确对齐,并且不会与不同任务栏方向的任务栏重叠(例如,当任务栏位于左侧或屏幕顶部时)。

当任务栏的自动隐藏打开时,问题就开始了,然后显然 availableGeometry 返回与 screenGeometry 相同的值,我再也找不到任务栏的高度了。这会导致弹出窗口与任务栏重叠,甚至显示在错误的位置。

我的问题是:启用自动隐藏后,如何在 Windows 中正确检测任务栏的方向和大小?我应该使用一些 winapi 函数,还是可以纯粹在 Qt 中使用(首选)?

【问题讨论】:

    标签: c++ windows qt taskbar


    【解决方案1】:

    1) 使用以下命令检查自动隐藏状态:http://msdn.microsoft.com/en-us/library/bb787947(v=vs.85).aspx 2) 并使用这个找到宽度/高度/方向:http://msdn.microsoft.com/en-us/library/bb787953(v=vs.85).aspx

    希望这会有所帮助。是的,这是 WinAPI 函数,所以你应该只在“#ifdef Q_OS_WINDOWS”中使用这个代码——如果你也想在 Linux 上编译的话。

    【讨论】:

    • 看起来不错,谢谢 Raxillian。我遇到的另一个问题是检测自动隐藏模式下的任务栏当前是可见还是隐藏。自动隐藏状态只是告诉我,自动隐藏设置是否启用,但没有告诉我它在给定时刻是否可见
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-26
    • 1970-01-01
    • 1970-01-01
    • 2011-01-02
    • 1970-01-01
    相关资源
    最近更新 更多