微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么 GetWindowRect() 会为托盘项目弹出窗口获取奇怪的坐标?

如何解决为什么 GetWindowRect() 会为托盘项目弹出窗口获取奇怪的坐标?

MSDN 说 GetwindowRect() 返回窗口的屏幕坐标。 This question 解释了对话框如何首先显示在屏幕左上角,然后定位到其他位置,直到它正确定位 GetwindowRect() 将返回 (0,0)..(width,height)。

这是我看到的。有一个控制台程序运行一个无限循环,每次迭代调用 GetForegroundWindow(),然后为获得的窗口调用 GetwindowRect()。对于大多数获得的窗口坐标来说,看起来很真实。

但是,如果我运行 Task Manager,它会添加一个托盘图标(靠近系统时钟),如果我右键单击该图标,我会看到一个带有 CloseAlways on top 项目的弹出窗口。当该弹出窗口处于活动状态时,GetForegroundWindow() 将重复返回一个带有 TrayiconMessageWindow 窗口类的窗口,这是有道理的。但是,当调用该窗口的 GetwindowRect() 时,它会成功并获得一个 rect,其中 lefttop 设置为零,rightbottom 设置为生成了相当小的矩形。

弹出窗口显示在右下角附近的某个地方,所以我希望有一个像 (1000,1000)..(1100,1050) 这样的矩形,但我实际上得到了 (0,0)..(100,50) 矩形。

我做错了什么?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。