GetWindowRect与GetClientRect

简介: GetWindowRect与GetClientRect

先调用GetWindowRect后再调用ScreenToClient,这个时候得到的rect和直接使用GetClientRect得到的值是相等的。有时候需要获得窗口矩形的大小和客户区矩形的大小二者的值,故需要分别调用GetWindowRect和GetClientRect。如果只需要获得客户区矩形的大小,调用GetClientRect就行了。 GetWindowRect和GetClientRect函数的说明如下: CWnd::GetClientRect      void GetClientRect( LPRECT lpRect ) const;Parameters:lpRect    Points to a RECT structure or a CRect object to receive the client coordinates. The left and top members will be 0. The right and bottom members will contain the width and height of the window.Remarks:    Copies the client coordinates of the CWnd client area into the structure pointed to by lpRect. The client coordinates specify the upper-left and lower-right corners of the client area. Since client coordinates are relative to the upper-left corners of the CWnd client area, the coordinates of the upper-left corner are (0,0). CWnd::GetWindowRectvoid GetWindowRect( LPRECT lpRect ) const;Parameters:lpRectPoints to a CRect object or a RECT structure that will receive the screen coordinates of the upper-left and lower-right corners.Remarks:Copies the dimensions of the bounding rectangle of the CWnd object to the structure pointed to by lpRect. The dimensions are given in screen coordinates relative to the upper-left corner of the display screen. The dimensions of the caption, border, and scroll bars, if present, are included. GetWindowRect() 得到的是在屏幕坐标系下的RECT;(即以屏幕左上角为原点) GetClientRect() 得到的是在客户区坐标系下的RECT; (即以所在窗口左上角为原点) GetWindowRect()取的是整个窗口的矩形; GetClientRect()取的仅是客户区的矩形,也就是说不包括标题栏,外框等; 第一个函数获得的是窗口在屏幕上的位置,得到的结果可能是这样CRect(10,10,240,240); 第二个函数和它不同,它只获得了客户区的大小,因此得到的结果总是这样CRect(0,0,width,height); ScreenToClient() 就是把屏幕坐标系下的RECT坐标转换为客户区坐标系下的RECT坐标。 The GetClientRect function retrieves the coordinates of a window's client area. The client coordinates specify the upper-left and lower-right corners of the client area. Because client coordinates are relative to the upper-left corner of a window's client area, the coordinates of the upper-left corner are (0,0). GetClientRect得到的是客户区的大小,也就是说这样得到的左上角永远是(0,0) The GetWindowRect function retrieves the dimensions of the bounding rectangle of the specified window. The dimensions are given in screen coordinates that are relative to the upper-left corner of the screen. GetWindowRect 是窗口相对于整个屏幕的坐标,屏幕左上点为0,0 相互转化用ScreenToClient 或者 ClientToScreen ClientToScreenThe ClientToScreen function converts the client coordinates of a specified point to screen coordinates. BOOL ClientToScreen(   HWND hWnd,        // window handle for source coordinates   LPPOINT lpPoint   // pointer to structure containing screen coordinates);ParametershWnd Handle to the window whose client area is used for the conversion. lpPoint Pointer to a POINT structure that contains the client coordinates to be converted. The new screen coordinates are copied into this structure if the function succeeds. Return ValuesIf the function succeeds, the return value is nonzero.If the function fails, the return value is zero. 虽然存在调用GetWindowRect后再调用ScreenToClient==GetClientRect,但ScreenToClient()和ClientToScreen()两者都是属于WINDOWS API函数,可能是存在一定的冗余设计,但意义不同。不过在.Net Framework下对WINDOWS API函数进行了重新整理和优化,在获取控件或窗口的屏幕坐标和客户区坐标时更方便的多,只需要得到与控件或窗口相对应屏幕坐标和客户区坐标属性值就可以了。 ScreenToClientThe ScreenToClient function converts the screen coordinates of a specified point on the screen to client coordinates. BOOL ScreenToClient(   HWND hWnd,         // window handle for source coordinates   LPPOINT lpPoint    // address of structure containing coordinates);Parameters:hWnd Handle to the window whose client area will be used for the conversion. lpPoint Pointer to a POINT structure that contains the screen coordinates to be converted. Return Values:If the function succeeds, the return value is nonzero.If the function fails, the return value is zero.

相关文章
|
缓存 JavaScript 网络架构
[Vue]学习笔记目录 【Vue2与Vue3完结】 (尚硅谷Vue2.0+Vue3.0全套教程丨vuejs从入门到精通)
[Vue]学习笔记目录 【Vue2与Vue3完结】 (尚硅谷Vue2.0+Vue3.0全套教程丨vuejs从入门到精通)
|
7月前
|
负载均衡 算法 微服务
常见的微服务流量治理策略
常见的微服务流量治理策略
480 3
|
4月前
|
机器学习/深度学习 PyTorch TensorFlow
ONNX 与量化:提高模型效率
【8月更文第27天】随着人工智能技术的广泛应用,模型部署变得越来越重要。为了在资源受限的设备上运行复杂的机器学习模型,模型量化技术成为了一种有效的手段。Open Neural Network Exchange (ONNX) 作为一种开放格式,支持在不同框架之间交换训练好的模型,同时也支持模型量化。本文将探讨如何结合 ONNX 和模型量化技术来提高模型的效率,减少模型大小并加快推理速度。
630 2
|
4月前
|
监控 编译器 C++
【代码讲解】【C/C++】获取文件最后修改的时间(系统时间)
【代码讲解】【C/C++】获取文件最后修改的时间(系统时间)
131 0
|
4月前
|
机器学习/深度学习 自然语言处理 API
自然语言处理 Paddle NLP - 文本语义相似度计算(ERNIE-Gram)
自然语言处理 Paddle NLP - 文本语义相似度计算(ERNIE-Gram)
270 0
MFC基本控件4-列表框控件List Box
MFC基本控件4-列表框控件List Box
|
7月前
|
数据可视化 JavaScript 定位技术
Cesium第1篇,CesiumJS第1篇,CesiumJS使用详细,在vue中使用Cesium.js(WebGIS中的Cesium地图可视化应用)
Cesium是一种基于WebGL开源的虚拟地球技术,可以用于构建高性能、跨平台的三维地球应用程序,它支持多种数据格式和地图服务,可以实现地球表面的高精度渲染、地形分析、数据可视化等功能。Cesium还提供了丰富的API和插件,方便开发者进行二次开发和定制化,且可免费商用,在航空航天、国防、城市规划、教育等领域得到了广泛应用。
404 0
Cesium第1篇,CesiumJS第1篇,CesiumJS使用详细,在vue中使用Cesium.js(WebGIS中的Cesium地图可视化应用)
|
7月前
|
计算机视觉 Python
cv2.polylines
cv2.polylines
311 1
|
机器学习/深度学习 传感器 算法
基于matlab模拟鲁棒孤子分布
基于matlab模拟鲁棒孤子分布
|
7月前
|
Java BI
java: 警告: 源发行版 11 需要目标发行版 11
【2月更文挑战第1天】java: 警告: 源发行版 11 需要目标发行版 11 问题处理