c++ - 如何在启用自动隐藏的情况下检测 Windows 中任务栏的高度和方向?

标签 c++ windows qt taskbar

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

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

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

最佳答案

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 上编译。

关于c++ - 如何在启用自动隐藏的情况下检测 Windows 中任务栏的高度和方向?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10042041/

相关文章:

c++ - 如何在 C++ 中以大写形式打印地址(十六进制值)

c++ - 这是 Windows 文件 API 的正确用法吗? (多个重叠请求)

ios - Qt和iOS之间如何通信?

qt - QML 数字动画 : setRunning() cannot be used on non-root animation nodes

c++ - 如何在不丢失鼠标抓取的情况下将 QGraphicsItem 移动到另一个场景?

c++ - QTest覆盖涂料法

c++ - 在 makefile 中,目录名称是假目标还是 "real"目标?

c++ - 为什么SSE和AVX的效率一样?

windows - windows批处理中自动回答输入提示

windows - Docker Toolbox Tutorial Client.Timeout 在等待 header 时超出