news 2026/5/14 5:00:08

Window的Window/Client坐标

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Window的Window/Client坐标

GetWindowRect

屏幕坐标

GetClientRect

只能获取客户区尺寸

ScreenToClient

屏幕坐标与指定窗口客户区坐标

ClientToScreen

MoveWindow

顶级窗口‌:屏幕坐标。

子窗口‌:父窗口客户区坐标‌

SetWindowPos‌

1. GetWindowRect

‌ GetWindowRect‌是一个Windows API函数,用于获取指定窗口的边框矩形尺寸。该函数返回窗口的边框矩形,包括客户区与非客户区(标题栏和边框),尺寸以屏幕坐标表示。‌

在窗口最大化后,有的Window版本,其左上角坐标为负数,即如屏幕坐标尺寸为(1920*1080),系统任务栏高度50,,获取的窗口坐标为[(-9,-9),(1929,1039)]。

2. GetClientRect

GetClentRect()获取的是自身客户区,其左上角以自身客户区的左上角为(0,0)。不含标题栏与边框。

因此,该函数只能得到自身客户区的大小,而不能得到相对屏幕/父窗口的相对位置。

3. ScreenToClient

  • API原型:BOOL ScreenToClient(HWND hWnd , LPPOINT lpPoint);

ScreenToClient()把屏幕坐标系下的坐标转换为HWND所对应窗口客户区坐标系下的坐标.

  • 对应MFC中的函数原型: void ScreenToClient(LPRECT lpRect) ;

调用方式为:pWnd-> ScreenToClient(&rc),是将屏幕下的矩形坐标rc转换成为pWnd窗口客户区坐标系下的矩形坐标。

4. ClientToScreen

其作用与ScreenToClient相反。

  • API原型:BOOL ClientToScreen(HWND hWnd , LPPOINT lpPoint);

ClientToScreen ()把HWND所对应窗口客户区坐标系下的坐标转换为屏幕坐标系下的坐标.

  • 对应MFC中的函数原型: void ClientToScreen(LPRECT lpRect) ;

调用方式为:pWnd-> ClientToScreen(&rc),是将pWnd窗口客户区坐标系下的矩形坐标转rc换成为屏幕下的矩形坐标。

在某些情况下(如窗口被最小化或尚未完全显示时),以上四个函数可能不会返回预期的结果。因此,在调用该函数之前,最好确保窗口处于活动状态并且已经完全显示出来。

5. MoveWindow

‌ MoveWindow函数‌用于改变指定窗口的位置和大小。该函数适用于顶级窗口和子窗口,具体行为如下:

  1. ‌顶级窗口‌:位置和尺寸相对于屏幕左上角。
  2. ‌子窗口‌:位置和尺寸相对于父窗口客户区的左上角‌

MoveWindow‌适用于只需要简单移动或调整窗口位置和大小的场景。如果你不需要复杂的窗口管理功能,使用MoveWindow会更加直接和高效。

6. SetWindowPos‌

除了具备MoveWindow的所有功能外,SetWindowPos还允许更精细的控制,包括设置窗口的Z顺序(即窗口的叠放顺序)、是否应该被重绘、是否应该激活窗口等。它接受更多的参数,包括窗口句柄、插入点窗口句柄、新的位置和大小、标志位等。SetWindowPos的功能更加全面,适用于需要更多控制的场景‌

SetWindowPos‌适用于需要更精细控制的场景,比如需要将窗口置于特定Z顺序、控制重绘行为或激活窗口等。如果你需要更多的灵活性,SetWindowPos是更好的选择。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/14 5:00:06

交叉编译curl(OpenSSL)移植ARM详细步骤

运行配置脚本 使用 Configure 脚本配置 OpenSSL,指定目标平台和安装路径: curl downloads 各个版本 Old 1.1.1 Releases | OpenSSL Library 各个版本 从 OpenSSL 官网下载源码包 tar -xzf openssl-1.1.1b.tar.gz cd openssl-1.1.1b/运行配置脚本 使…

作者头像 李华
网站建设 2026/5/14 4:57:04

【ZYNQ的Linux开发】网络socket编程

Linux的网络socket编程 &#xff08;1&#xff09;TCP客户端 ①代码 #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h> #include <sys/types.h> #include <sys/socket.h> #include <arpa/inet.h> #…

作者头像 李华
网站建设 2026/5/14 4:52:23

从DeepLabV3到V3+:那个被加上的Decoder,到底解决了语义分割的什么痛点?

DeepLabV3解码器设计&#xff1a;如何让语义分割重拾边界细节 当我们在Cityscapes数据集上对比DeepLabV3和V3的分割结果时&#xff0c;最明显的差异往往出现在自行车辐条、路灯杆和行人发丝这些细长物体上。传统编码器-解码器结构在追求感受野扩展的过程中&#xff0c;似乎总是…

作者头像 李华
网站建设 2026/5/14 4:52:21

终极TypeScript HTTP工具Zodios:10分钟快速上手指南

终极TypeScript HTTP工具Zodios&#xff1a;10分钟快速上手指南 【免费下载链接】zodios typescript http client and server with zod validation 项目地址: https://gitcode.com/gh_mirrors/zo/zodios Zodios是一个基于TypeScript的HTTP客户端和服务器工具&#xff0c…

作者头像 李华
网站建设 2026/5/14 4:51:06

基于钻石NV色心的量子磁传感器:原理、设计与工程实现

1. 项目概述&#xff1a;当钻石有了“瑕疵”&#xff0c;它就成了最灵敏的磁力“眼睛”在传感器领域&#xff0c;我们常常面临一个看似悖论的挑战&#xff1a;测量一个物理量&#xff0c;概念上清晰明了&#xff0c;但真要把它变成稳定、可靠、能读出具体数值的电路或系统&…

作者头像 李华
网站建设 2026/5/14 4:46:32

PixArt-Sigma实战案例:构建企业级AI图像生成平台的完整指南

PixArt-Sigma实战案例&#xff1a;构建企业级AI图像生成平台的完整指南 【免费下载链接】PixArt-sigma PixArt-Σ: Weak-to-Strong Training of Diffusion Transformer for 4K Text-to-Image Generation 项目地址: https://gitcode.com/gh_mirrors/pi/PixArt-sigma PixA…

作者头像 李华