Window的Window/Client坐标
GetWindowRect屏幕坐标GetClientRect只能获取客户区尺寸ScreenToClient屏幕坐标与指定窗口客户区坐标ClientToScreenMoveWindow顶级窗口屏幕坐标。子窗口父窗口客户区坐标SetWindowPos1. GetWindowRect GetWindowRect是一个Windows API函数用于获取指定窗口的边框矩形尺寸。该函数返回窗口的边框矩形包括客户区与非客户区标题栏和边框尺寸以屏幕坐标表示。在窗口最大化后有的Window版本其左上角坐标为负数即如屏幕坐标尺寸为1920*1080系统任务栏高度50获取的窗口坐标为[(-9,-9),(1929,1039)]。2. GetClientRectGetClentRect()获取的是自身客户区其左上角以自身客户区的左上角为(0,0)。不含标题栏与边框。因此该函数只能得到自身客户区的大小而不能得到相对屏幕/父窗口的相对位置。3. ScreenToClientAPI原型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函数用于改变指定窗口的位置和大小。该函数适用于顶级窗口和子窗口具体行为如下顶级窗口位置和尺寸相对于屏幕左上角。子窗口位置和尺寸相对于父窗口客户区的左上角MoveWindow适用于只需要简单移动或调整窗口位置和大小的场景。如果你不需要复杂的窗口管理功能使用MoveWindow会更加直接和高效。6. SetWindowPos除了具备MoveWindow的所有功能外SetWindowPos还允许更精细的控制包括设置窗口的Z顺序即窗口的叠放顺序、是否应该被重绘、是否应该激活窗口等。它接受更多的参数包括窗口句柄、插入点窗口句柄、新的位置和大小、标志位等。SetWindowPos的功能更加全面适用于需要更多控制的场景SetWindowPos适用于需要更精细控制的场景比如需要将窗口置于特定Z顺序、控制重绘行为或激活窗口等。如果你需要更多的灵活性SetWindowPos是更好的选择。