【问题标题】:Windows: Maximize Around / Treat my window like the task bar?Windows:最大化/像任务栏一样对待我的窗口?
【发布时间】:2014-09-24 12:26:55
【问题描述】:

我们正在开发一个“仪表板”应用程序,该应用程序基本上“始终位于顶部”并以令人讨厌的方式挂在屏幕左侧。 (这是一个企业内部的应用,不是全世界都会受制于然后全面拒绝的东西)

我的问题:是否有某种方法可以让其他应用程序窗口将我的应用程序窗口视为任务栏? IE 当有人最大化应用程序时它不会在我的应用程序后面最大化?

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

我们目前正在使用 C++/Qt 编写此代码,并针对 Win7 / Win8。

谢谢!

【问题讨论】:

  • 两个可能更实用的选项。 (1) 让它成为系统托盘的东西,而不是永久地挂在桌面上。 (2) 让它支持鼠标悬停透明,像 ClockX 这样的点击通过(当然它还需要一些交互的东西,比如系统托盘)。
  • 尝试阅读Qt源代码中的qwindowsysteminterface.cpp。在此文件中,您可以找到修改 availableGeometry 的处理。我希望在这个文件的某个地方你能找到影响 availableGeometry 的方法。
  • 您要查找的内容称为“app bar”。我以前在 Qt 中做过这个,但没有时间在这里提供完整的答案。
  • @AndrewMedico 谢谢,我已经用你的信息更新了我的答案:-)

标签: c++ windows qt


【解决方案1】:

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

在 XP 中,您正在寻找的东西称为“桌带”。

不幸的是,这在 Windows 7 中已被弃用。我不知道它是否有效。

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

这个工作的基本方式是调用SystemParametersInfo(SPI_SETWORKAREA)。这告诉系统“最大化空间”在哪里。如果您没有使用推荐的 AppBar API,则需要不时检查(或获取通知)是否有任何其他程序更改了工作区,以确保您得到适应。

【讨论】:

    猜你喜欢
    • 2017-02-10
    • 1970-01-01
    • 2018-03-12
    • 2012-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-21
    相关资源
    最近更新 更多