📜  获取窗口位置 - C++ (1)

📅  最后修改于: 2023-12-03 15:11:53.105000             🧑  作者: Mango

获取窗口位置 - C++

在窗口应用程序中,我们时常需要获取窗口的位置信息。本文将介绍如何在C++中获取窗口位置。

使用GetWindowRect函数

GetWindowRect函数可以获取窗口在屏幕上的左上角和右下角的坐标。我们可以通过计算坐标差得到窗口的宽度和高度。

RECT rect;
GetWindowRect(hwnd, &rect);
int x = rect.left;
int y = rect.top;
int width = rect.right - rect.left;
int height = rect.bottom - rect.top;

其中,hwnd为窗口的句柄。

使用GetClientRect函数

GetClientRect函数可以获取客户区的左上角和右下角的坐标。客户区是除去标题栏、边框和滚动条等非客户区之后的窗口区域。

RECT rect;
GetClientRect(hwnd, &rect);
int x = rect.left;
int y = rect.top;
int width = rect.right - rect.left;
int height = rect.bottom - rect.top;

注意,这里获取的坐标是相对于客户区的,如果需要获取窗口在屏幕上的坐标,可以使用以下代码:

POINT pt = {0};
ClientToScreen(hwnd, &pt);
int x = pt.x;
int y = pt.y;

其中,pt是一个POINT结构体,存储了客户区左上角的坐标。

总结

在C++中,获取窗口位置有两种方法:使用GetWindowRect函数获取窗口在屏幕上的坐标,或者使用GetClientRect函数获取客户区左上角的坐标。需要注意的是,如果使用GetClientRect函数,需要用ClientToScreen函数将客户区坐标转换为屏幕坐标。