我正在使用 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/