不一定相等。在Windows Vista及以后,GetWindowRect可能包含不可见的缩放边框,且返回矩形存在DPI虚拟化。是否适合当前截图或定位用途,需要先核具体API、目标窗口和调用线程DPI上下文;不能把窗口矩形直接当作肉眼可见外框。

适用上,可先把问题限定为Windows Vista及以后的普通桌面窗口:程序读取自己的或目标窗口的屏幕矩形,用于截图裁剪、悬浮定位、命中判断等。此时观察到的GetWindowRect可能比肉眼可见区域略大,尤其在窗口有缩放边框、系统缩放设置变化或进程DPI感知不同时。官方资料还说明,右下坐标是排他边界,不把该点算在矩形内,计算宽高时不能把右下点再当作内部像素。
需要区分另一种取法:官方说明可见窗口边界可由DwmGetWindowAttribute的DWMWA_EXTENDED_FRAME_BOUNDS取得;它不像WindowRect那样进行DPI调整,因此不能把两者返回值直接混在同一套坐标里比较或相减。要核实际API、调用线程DPI上下文及目标窗口状态,而不是拿一张截图和矩形数值的差异就判断显示坏了。
风险在于,凭截图差异随意删边框、改程序全局DPI模式,或反复调整生产窗口来“试出来”,可能把坐标问题变成新的兼容问题,也会影响其他窗口和用户设置。右下排他边界若被误用,还可能造成一像素级的裁剪或命中偏差。应先记录具体程序、Windows版本和缩放设置,保留既有窗口状态。
下一步,先固定现场:记录系统版本、程序DPI感知、调用线程上下文、目标窗口是否跨显示器或最小化,以及调用是否成功;再在同一坐标系下分别标注GetWindowRect与DWM可见边界来源。若差异与不可见缩放边框或DPI虚拟化吻合,就按用途选择API并做明确坐标转换;若差异仍大,先查实际调用条件与目标窗口状态,不先归因显示器;若确有渲染异常,再按显示问题排查。这样分支判断,比直接改边框或全局DPI更可控。
宛城区台式电脑用户可拨400-877-9605,先整理Windows版本、目标窗口、线程DPI上下文及两种矩形来源。电脑快修网提供信息展示与第三方维修对接,具体地址、电脑侧检查是否支持及安排需当次核实,启用范围不代表即时履约。