如何从CreateWindowEx()窗口获取宽度和高度? C ++

时间:2009-03-05 16:31:03

标签: c++ c windows winapi window

我用CreateWindowEx()函数创建了一个窗口,现在如何从我创建的窗口中获取宽度和高度?这听起来很基本,但我找不到任何答案; _;

这是必需的,因为窗口高度是根据Windows想要创建它的方式自动创建的。

语言C或C ++

4 个答案:

答案 0 :(得分:25)

使用GetWindowRect。从左侧减去右边以从顶部获得宽度和底部以获得高度。

RECT rect;
if(GetWindowRect(hwnd, &rect))
{
  int width = rect.right - rect.left;
  int height = rect.bottom - rect.top;
}

作为旁注,如果您想要客户区而不是整个窗口。您可以使用GetClientRect。有关该窗口的其他信息,您可以使用GetWindowInfo

答案 1 :(得分:1)

我相信你正在寻找GetWindowInfo

示例:

HWND window = ::CreateWindowEx(...);
WINDOWINFO info;
if ( ::GetWindowInfo(window, &info) ) {
  ...
}

答案 2 :(得分:1)

您是否尝试过返回GetWindowRect()结构的GetWindowInfo()WINDOWINFO

答案 3 :(得分:0)

鉴于没有迹象表明您需要大小,并且如果窗口样式设置为包含可调整大小的属性[并且用户使用最小化/最大化/恢复或拖动窗口边缘来调整窗口大小],则大小可能会更改,最安全的选择是包含WM_SIZE的消息处理程序,并使用wparam和lparam参数值来确定窗口维度。这样,您将始终知道当前的大小。在窗口创建后的消息序列中调用WM_SIZE。