停止应用程序窗口重叠Windows启动栏

时间:2011-10-02 19:59:17

标签: c++ winapi

在我的Win7 PC上,我的启动栏垂直运行,宽度约为60px。在我的win32应用程序中,创建的窗口总是显示与开始栏重叠,看起来很糟糕 - 我只使用(0,0)作为窗口的左上角位置。

我应该怎样做才能获得相对于桌面的(0,0),将Start Bar考虑进去?有标志,还是我手动需要查找指标?

2 个答案:

答案 0 :(得分:2)

使用SetWindowPlacement。该函数的(0,0)排除任务栏和任何其他appbars。

答案 1 :(得分:2)

这里有一些问题。您不想使用像(0,0)这样的硬编码值。在多显示器系统上甚至可能看不到。正如您所发现的,您应该尽量避免与任务栏或其他应用程序重叠。如果有多个监视器,您应该尝试在用户最近进行交互的监视器上启动。

有一种简单的方法可以免费实现这一切。致电CW_USEDEFAULT时,请将x作为yCreateWindow坐标。这将让窗口管理员努力使窗口显示在合理的位置。


您可以让系统告诉您工作区的坐标。工作区是桌面中不包含任务栏或其他应用程序栏的部分。通过SPI_GETWORKAREA致电SystemParametersInfo

  

检索主显示器上工作区的大小。工作区是屏幕的一部分,不会被系统任务栏或应用程序桌面工具栏遮挡。 pvParam参数必须指向接收工作区坐标的RECT结构,以虚拟屏幕坐标表示。   要获取主显示器以外的显示器的工作区域,请调用GetMonitorInfo功能。