我用CreateWindowEx()函数创build了一个窗口,现在我如何从创build的窗口获取宽度和高度? 这听起来很基本,但我找不到任何答案; _;
这是必要的,因为窗口高度是根据Windows如何创build窗口自动创build的。
语言C或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。