【发布时间】:2010-10-11 13:28:38
【问题描述】:
我已经用 CreateWindowEx() 函数创建了一个窗口,现在我如何从我创建的那个窗口中获取宽度和高度?这听起来很基本,但我找不到任何答案;_;
这是必需的,因为窗口高度是根据 Windows 想要创建的方式自动创建的。
语言 C 或 C++
【问题讨论】:
标签: c++ c windows winapi window
我已经用 CreateWindowEx() 函数创建了一个窗口,现在我如何从我创建的那个窗口中获取宽度和高度?这听起来很基本,但我找不到任何答案;_;
这是必需的,因为窗口高度是根据 Windows 想要创建的方式自动创建的。
语言 C 或 C++
【问题讨论】:
标签: c++ c windows winapi window
使用GetWindowRect。从左边减去右边得到宽度,从顶部减去底部得到高度。
RECT rect;
if(GetWindowRect(hwnd, &rect))
{
int width = rect.right - rect.left;
int height = rect.bottom - rect.top;
}
附带说明,如果您想要客户区而不是整个窗口。您可以使用GetClientRect。有关该窗口的其他信息,您可以使用GetWindowInfo。
【讨论】:
我相信你在找GetWindowInfo
例子:
HWND window = ::CreateWindowEx(...);
WINDOWINFO info;
if ( ::GetWindowInfo(window, &info) ) {
...
}
【讨论】:
您是否尝试过返回WINDOWINFO 结构的GetWindowRect() 或GetWindowInfo()?
【讨论】:
鉴于没有说明您需要该大小的原因,并且如果窗口样式设置为包含可调整大小的属性[并且用户使用最小化/最大化/恢复或拖动窗口边缘来调整窗口大小],则大小可能会发生变化,您的最安全的选择是包含 WM_SIZE 的消息处理程序并使用 wparam 和 lparam 参数值来确定窗口尺寸。这样,您将始终知道当前大小。 WM_SIZE 在窗口创建后的消息序列中被调用。
【讨论】: