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

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

这是必要的,因为窗口高度是根据Windows如何创build窗口自动创build的。

语言C或C ++

Solutions Collecting From Web of "如何从CreateWindowEx()窗口获取宽度和高度? C ++"

使用GetWindowRect 。 从左边减去右边的宽度和从上到下的高度来获得高度。

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

作为一个侧面说明,如果你想客户区而不是整个窗口。 你可以使用GetClientRect 。 有关窗口的其他信息,您可以使用GetWindowInfo 。

你有没有尝试GetWindowRect()GetWindowInfo()返回一个WINDOWINFO结构?

我相信你正在寻找GetWindowInfo

例:

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

由于没有迹象表明为什么需要这个大小,并且如果窗口样式被设置为包含可调整大小的属性(并且用户使用最小化/最大化/恢复或拖动窗口边缘调整窗口大小),大小可以改变,所以最安全的选择是为WM_SIZE包含消息处理程序,并使用wparam和lparam参数值来确定窗口大小。 这样,你将永远知道当前的大小。 在消息发布窗口创建序列中调用WM_SIZE。