在我的Win7 PC上,我的启动栏垂直运行,宽度约为60px。在我的win32应用程序中,创建的窗口总是显示与开始栏重叠,看起来很糟糕 - 我只使用(0,0)作为窗口的左上角位置。
我应该怎样做才能获得相对于桌面的(0,0),将Start Bar考虑进去?有标志,还是我手动需要查找指标?
答案 0 :(得分:2)
使用SetWindowPlacement
。该函数的(0,0)排除任务栏和任何其他appbars。
答案 1 :(得分:2)
这里有一些问题。您不想使用像(0,0)这样的硬编码值。在多显示器系统上甚至可能看不到。正如您所发现的,您应该尽量避免与任务栏或其他应用程序重叠。如果有多个监视器,您应该尝试在用户最近进行交互的监视器上启动。
有一种简单的方法可以免费实现这一切。致电CW_USEDEFAULT
时,请将x
作为y
和CreateWindow
坐标。这将让窗口管理员努力使窗口显示在合理的位置。
您可以让系统告诉您工作区的坐标。工作区是桌面中不包含任务栏或其他应用程序栏的部分。通过SPI_GETWORKAREA
致电SystemParametersInfo
。
检索主显示器上工作区的大小。工作区是屏幕的一部分,不会被系统任务栏或应用程序桌面工具栏遮挡。 pvParam参数必须指向接收工作区坐标的
RECT
结构,以虚拟屏幕坐标表示。 要获取主显示器以外的显示器的工作区域,请调用GetMonitorInfo
功能。