停止应用程序窗口重叠窗口开始栏
Stop app window overlapping Windows start bar
在我的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)不包括任务栏和任何其他应用栏。
相关文章:
- 当回溯以零开始时,如何调试崩溃
- 如何在Qt窗口小部件中使用QStringView(或QStringRef)
- 问:如何使用C++中的按钮从窗口打开窗口
- SDL 窗口不会弹出
- 在createdialog创建的窗口中捕获用于编辑控件的OnMouseMove消息
- 如何在cpp文件之间切换窗口?在Qt中
- QuadTree只在窗口的右上角绘制
- VS Code "command":"make"与终端窗口中的命令行"make"不同
- 如何在C++中找到active directory中禁用和锁定的窗口帐户
- 处理闪烁窗口事件
- 如何通过按下第三个窗口中的按钮,将QString从一个窗口获取到另一个窗口
- C++win32 API创建多个类似视口的窗口
- 根据用户输入用字母填充矢量,并将"开始"和"结束"放在四肢
- SFML RenderWindow打开窗口需要很长时间
- 如何将不同的可执行文件合并到一个窗口框架中进行编码?像浏览器一样
- 如何从头开始创建 avi 文件?
- 为什么 -mmacosx-version-min=10.10 不阻止使用标记为从 10.11 开始的函数?
- 自一周开始以来的秒数?
- 在窗口开始菜单中创建快捷方式
- 停止应用程序窗口重叠窗口开始栏