如何使用win32调整桌面上的每个窗口的大小和移动,使其不与桌面顶部的菜单栏重叠

时间:2012-08-18 03:42:21

标签: winapi

这是一个棘手的问题。我想制作一个程序,在桌面顶部绘制一个条形图。然后,我希望每个打开的窗口都不会绘制此标题栏,即使给定的桌面窗口最大化也是如此。我记得我看到过类似的事情,但是我不记得这个节目了。我想这些扩展任务栏类型的程序必须做类似的事情,让Windows不与第二台显示器上的扩展任务栏重叠。

Windows需要什么框架来实现这一目标?活动可访问性,以查看何时创建窗口,然后以某种方式获取窗口句柄并调整大小和位置?

我可以遍历窗口列表并移动它们但是当它们打开或最大化时呢?

有关如何实现此行为的任何想法?

2 个答案:

答案 0 :(得分:1)

您正在寻找的内容称为“工作区”,在MSDN上定义为“屏幕中未被系统任务栏或应用程序桌面工具栏遮挡的部分”。您可以使用SystemParametersInfo SPI_SETWORKAREA 操作设置工作区 - 您希望将其设置为现有工作区减去新栏的区域。

答案 1 :(得分:0)

听起来你想要创建一个AppBar:Windows内置支持管理桌面区域,包括允许你让它为你的应用程序保留一侧的空间。有关详细信息,请参阅MSDN: Using Application Desktop Toolbars

MSDN摘要:

应用程序桌面工具栏(也称为appbar)是一个类似于Windows任务栏的窗口。它固定在屏幕的边缘,通常包含允许用户快速访问其他应用程序和窗口的按钮。系统会阻止其他应用程序使用appbar使用的桌面区域。在任何给定时间,桌面上都可以存在任意数量的应用程序。