【问题标题】:How to make a window that's full screen but still shows the task bar如何制作全屏但仍显示任务栏的窗口
【发布时间】:2011-08-13 00:29:30
【问题描述】:

我想制作一个覆盖整个桌面但仍显示任务栏的无标题窗口。最好的方法是什么?

我可以检测任务栏的位置并调整窗口大小以排除它,但是我需要知道用户何时更改任务栏的大小/位置。

或者,是否有窗口样式或其他方式的组合可以确保我的窗口始终位于任务栏后面?

【问题讨论】:

  • 你有什么理由不能最大化你的窗口?
  • 响应 WM_GETMINMAXINFO 并仔细计算位置,使窗口标题和边框正好落在监视器区域之外并与任务栏重叠。没有一般情况下这在多台显示器上运行良好,它们不必具有相同的大小,并且只有一个显示任务栏。
  • Windows 会自动将任务栏放在带有标题的窗口后面(目前不确定确切的标准,但 WS_OVERLAPPEDWINDOW)。有一个最大窗口大小,所以我们不能创建一个带有标题的窗口,只是偏移它,所以标题/边框不显示。我目前的想法是继续使用 WS_OVERLAPPEDWINDOW,但要处理 WM_NCCALCSIZE,因此不存在标题 / 等。现在试试。

标签: c++ windows winapi


【解决方案1】:

使用来自SystemParametersInfo 的返回值设置窗口位置,并将 SPI_GETWORKAREA 作为参数传递。

检索主显示器上工作区的大小。 工作区是未被系统遮挡的屏幕部分 任务栏或应用程序桌面工具栏。 pvParam 参数必须 指向接收工作坐标的 RECT 结构 面积,以虚拟屏幕坐标表示。

【讨论】:

    【解决方案2】:

    最大化没有标题/边框的窗口。

    【讨论】:

    • 不幸的是,这只会覆盖一台显示器,而不是整个桌面。希望它可以工作 - 优雅的想法。
    • 除了你不能从窗口中删除边框和标题而不重新创建它的小细节。嗯,这不是小事。
    • 如果你想让窗口覆盖多个显示器,那你就沉没了,不是吗?桌面不是一般的长方形,有没有任务栏。
    • 如果我的回答解决了您的问题,请勾选左侧的绿色勾号接受。如果没有,请要求澄清或扩展您的问题。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2011-01-17
    • 2010-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多