当前位置: 首页 > news >正文

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是更好的选择。

http://www.jsqmd.com/news/813236/

相关文章:

  • 【限时解密】Midjourney内部修复评估矩阵(v8.0.3 Beta版):含12维质量打分表+自动诊断CLI工具(文末领取离线版)
  • Marp for VS Code插件开发教程:从零开始构建自定义功能
  • Sprout OS:一个融合三大平台应用的操作系统,为创意工作者而生
  • OpenGoat:Web安全漏洞靶场实战指南与攻防演练
  • 上海亚卡黎实业有限公司2026高空作业平台精选:剪式高空作业平台厂家推荐/车载式高空作业车生产厂家优选上海亚卡黎实业 - 栗子测评
  • 基于模板引擎的代码生成器设计:从原理到Spring Boot实战
  • MMseqs2工作流自动化:从数据准备到结果分析的全流程指南 [特殊字符]
  • httpserver.h API完全手册:从基础到高级用法详解
  • 上海亚卡黎实业有限公司2026高空作业车品牌优选:高空作业平台生产厂家/采购/平台厂家哪家好推荐 - 栗子测评
  • 5分钟掌握PUBG罗技鼠标宏:新手必看的自动压枪终极教程
  • 【ZYNQ的Linux开发】网络socket编程
  • Rust DSL BeeClaw:为无人机控制打造的高性能领域特定语言
  • Openclaw-Bootstrapping-Benchmark:AI智能体自举能力评估框架详解
  • 美发行业SaaS系统设计:预约冲突检测与库存管理核心技术解析
  • 解决云服务器安装VSCode Go插件失败/一直是installing问题
  • 开发者效率革命:用dotfiles打造可移植的个性化开发环境
  • ARM MPAM内存带宽分区技术详解与实战配置
  • 【限时开放】ChatGPT支付功能内测权限获取教程:仅剩83个企业认证名额,含Stripe+支付宝双网关配置密钥
  • 用RCWL-0516微波雷达模块DIY一个智能感应小夜灯(附Arduino代码)
  • 146.轻量化部署口罩检测!YOLOv8 模型导出(ONNX/TensorRT)实战教程
  • 终极指南:OR-Tools启发式评估函数设计——快速掌握搜索方向引导技巧
  • OpenCore Legacy Patcher深度技术解析:古董Mac硬件兼容性原理与系统补丁机制
  • Arm调试寄存器DBGDSAR详解与架构演进
  • 触发器如何在主从架构下进行同步_基于Row格式的Binlog规避触发器
  • 为AI智能体构建机构级交易基础设施:TradeOS架构与安全实践
  • 虚拟机没网络,主机有网络
  • Go语言高性能混合向量数据库Comet:架构、索引与实战指南
  • 【紧急通告】DeepSeek-R1毒性分类器存在语境盲区?3小时内验证并热修复的4种API级补丁
  • mysql数据库响应缓慢如何排查_使用EXPLAIN分析执行计划
  • Windows上安装APK的终极指南:告别模拟器,5步实现安卓应用无缝运行