在我的Win7电脑上,我让开始栏垂直运行,它大约60px宽。在我的win32应用程序中,创建的窗口总是与开始栏重叠,这看起来很糟糕-我只是使用(0,0)作为窗口的左上角位置。
我应该怎么做才能得到(0,0)相对于桌面,考虑到开始栏?是否有一个标志,或者我是否需要手动查找一个指标?
这里有几个问题。您不希望使用像(0,0)这样的硬编码值。这在多监视器系统上甚至可能不可见。正如您所发现的,您应该尽量避免与任务栏或其他应用程序重叠。如果有多个监视器,您应该尝试从用户最近交互的监视器开始。
有一个简单的方法可以让这些事情免费发生。调用CreateWindow
时,传递CW_USEDEFAULT
作为x
和y
坐标。这将让窗口管理器做艰苦的工作,使窗口出现在一个合理的位置。
你可以让系统告诉你工作区的坐标。工作区是桌面中不包含任务栏或其他应用程序的部分。Call SystemParametersInfo
passing SPI_GETWORKAREA
.
检索主显示监视器上工作区域的大小。工作区是屏幕中没有被系统任务栏或应用程序桌面工具栏遮挡的部分。pvParam参数必须指向一个
RECT
结构,该结构接收工作区域的坐标,用虚拟屏幕坐标表示。要获取除主显示监视器以外的监视器的工作区域,请调用GetMonitorInfo
函数。
使用SetWindowPlacement
。该函数的(0,0)不包括任务栏和任何其他应用栏。