首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

窗口最小化后获取窗口的大小和位置

关于窗口还原位置的小知识

如果你的窗口最小化了,你想知道这个窗口还原后的位置,可以使用这个API: GetWindowPlacement。这个API会接受一个WINDOWPLACEMENT的结构体指针,并将窗口的位置信息填充到这个结构体中。

特别需要注意的是,这个结构体有一个rcNormalPosition参数,它告诉你当窗口从最小化状态还原时,窗口的目标还原位置。

另外,还有一个不是那么显而易见的标志WPF_RESTORETOMAXIMIZED,这个标志指示窗口当前是最小化状态,但是如果用户点击还原,则它会还原到最大化状态,而不是还原到它之前的状态。

可能这看起来有点奇怪,但是实际上你每天都会碰到这种情况。假设我们这样操作一下:打开一个窗口,然后最大化窗口。这个时候,我们最小化这个窗口。然后点击任务栏的窗口按钮来重新打开窗口。请注意,这个窗口将会恢复到它的最大化状态,而不是它的普通还原状态。可以想象,如果窗口没有还原到最大化状态会显得很奇怪,因为你不得不需要重新最大化这个窗口。

GetWindowPlacement和SetWindowPlacement这两个API主要是用在那些希望保存/还原窗口位置信息的程序中。

另外一个需要注意的地方是,GetWindowPlacement和SetWindowPlacement使用的坐标系统不是屏幕坐标系,而是工作区坐标系(workspace coordinates)。

如果你弄错了这个坐标系,导致的结果是:随着时间的推移,窗口会向上(或向左)倾斜,最终这个窗口自己会卡在任务栏下方。

总结

有点惭愧,搞了这么多年的桌面开发,GetWindowPlacement这个API我是一次都没用过。

有空研究研究。

最后

Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一,里面有很多关于Windows的小知识,对于广大Windows平台开发者来说,确实十分有帮助。

本文来自:《Obtaining a window’s size and position while it is minimized》

最近我写了个东西

正如你们所知道的,拓扑梅尔智慧办公平台(Topomel Box)是一款绿色软件,主要面向经常使用电脑的朋友。它提供了各种提升办公效率的小功能,同时操作上尽可能地简单方便。

我想:你值得拥有。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20210605A01U7L00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券