设置窗口客户区大小的一种办法

首先,在CreateWindow函数里面填上希望的窗口客户区尺寸,例:hWnd = CreateWindow(szWindowClass, szTitle, WS_SYSMENU | WS_MINIMIZEBOX, CW_USEDEFAULT, 0, DEFAULT_WIDTH, DEFAULT_HIGHT, NULL, NULL, hInstance, NULL);

DEFAULT_WIDTH,为窗口客户区宽度,DEFAULT_HIGHT为客户区高度。再编写一下函数,用来调整窗体大小。

void SetWindowSize(HWND hWnd)
{
    RECT WindowRect;
    RECT ClientRect;
    GetWindowRect(hWnd, &WindowRect);
    GetClientRect(hWnd, &ClientRect);
    WindowRect.right += (DEFAULT_WIDTH - ClientRect.right);
    WindowRect.bottom += (DEFAULT_HIGHT - ClientRect.bottom);
    MoveWindow(hWnd, WindowRect.left, WindowRect.top, WindowRect.right-WindowRect.left, WindowRect.bottom-WindowRect.top, true);
}
在创建窗体的的函数里设置窗口客户区大小主要是用作参考,这里设置的大小实际为窗体大小,其它参数自行配置。

因主题不同,所以程序的边框宽度不同,所以很难直接使用CreateWindow一次创建成功所需的窗体。

使用GetWindowRect获取到的WindowRect.left为窗体左上角距屏幕最左边的距离,WindowRect.top为窗体左上角距屏幕最上边的距离,WindowRect.right为窗体右下角距屏幕最左边的距离,WindowRect.bottom为窗体右下角距屏幕最上边的距离。

函数原型:BOOL MoveWindow( HWND hWnd, int X, int Y, int nWidth, int nHeight, BOOL bRepaint );

  参数
  hWnd指定了窗口的句柄
  x指定了CWnd的左边的新位置。
  y指定了CWnd的顶部的新位置。
  nWidth指定了CWnd的新宽度。
  nHeight指定了CWnd的新高度。
  bRepaint指定了是否要重画CWnd。如果为TRUE,则CWnd象通常那样在OnPaint消息处理函数中接收到一条WM_PAINT消息。如果这个参数为FALSE,则不会发生任何类型的重画操作。这应用于客户区、非客户区(包括标题条和滚动条)和由于CWnd移动而露出的父窗口的任何部分。当这个参数为FALSE的时候,应用程序必须明确地使CWnd和父窗口中必须重画的部分无效或重画。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值