2014-09-24 118 views
3

我们正在研究一个基本上“始终在最前面”的“仪表板”应用程序,并以烦人的方式挂在屏幕左侧。 (这是一个内部的企业应用程序,而不是世界将受到,然后全面否决)Windows:最大化/处理我的窗口像任务栏?

我的问题:是否有某种方式使其他应用程序窗口对待我的应用程序窗口像任务栏? IE有人最大化应用程序时,它不会在我的应用程序后面最大化?

我们已经可以将它保持在最佳状态,但我认为如果我们在最大化的时候切断1/8的应用程序窗口将会非常烦人。

我们目前正在用C++/Qt写这篇文章,并且针对Win7/Win8。

谢谢!

+0

两个也许更实际的选择。 (1)使它成为系统托盘的东西,而不是永久地挂在桌面上。 (2)让它像ClockX一样点击支持鼠标悬停透明度(当然,它也需要一些交互的东西,比如系统托盘)。 – 2014-09-24 13:09:19

+0

尝试阅读Qt源代码中的qwindowsysteminterface.cpp。在这个文件中你可以找到修改availableGeometry的处理。我希望在这个文件中的某个地方可以找到影响availableGeometry的方法。 – Ilya 2014-09-24 13:24:23

+2

你在找什么叫做“[app bar](http://msdn.microsoft.com/en-us/library/windows/desktop/cc144177%28v=vs.85%29.aspx)”。我之前已经在Qt中完成了这项工作,但没有时间在这里提供完整的答案。 – 2014-09-24 16:55:47

回答

3

更新:最好的方法是使用AppBar API,如@andrewMedico的评论。这将确保系统了解应用程序栏并确保您正确地停靠在屏幕上,并且不会与任务栏或其他应用程序重叠。

在XP中你正在寻找被称为 “台带”。

不幸的是这是在Windows 7弃用我不知道,如果它与否。

或者,在Vista和Windows 7中,您可以在小工具栏上使用小工具。

这项工作的基本方式是致电SystemParametersInfo(SPI_SETWORKAREA)。这告诉系统“最大化空间”在哪里。如果您没有使用推荐的AppBar API,那么当其他程序更改工作区时,您需要偶尔检查(或收到通知),以确保您能够接受。