[英]How to resize window using WinAPI
我想使用 WinAPI 调整窗口大小。 我使用 WinAPI 函数:
SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int x, int y, int cx, int cy, uint uFlags);
调整窗口大小,但不重绘其内容。 如果我使用鼠标调整此窗口的大小,内容将重绘。 如何使用带有内容重绘的 WinAPI 调整窗口大小?
确保您没有在uFlags
参数中指定SWP_NOREDRAW
。 如果未设置且窗口仍未重绘,请在调用SetWindowPos
后调用UpdateWindow
。
默认情况下,窗口在调整大小时不会重绘(更准确地说 - 不会失效)。 如果缩小窗口 - 它根本不会收到WM_PAINT
消息。 如果放大它 - 更新区域将只包括添加的区域。
如果窗口的内容取决于其大小 - 窗口本身必须在处理WM_SIZE
消息时决定使自身无效(通过调用InvalidateRect
/ InvalidateRgn
)。
不过,您可以随时通过调用InvalidateRect
/ InvalidateRgn
使任何窗口InvalidateRgn
。
在窗口过程中编写此代码:
代码:
case WM_SIZE:
{
HWND groupControl;
RECT rcClient;//screen size
GetClientRect(hwnd, &rcClient);
groupControl = GetDlgItem(hwnd,Id);//get the id of control
SetWindowPos(groupControl, NULL, rcClient.right-50,
rcClient.bottom-50, 20, 20,
SWP_NOZORDER);//set a coordinate of control and
height and width.
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.