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

来源:互联网 发布:f22和歼20数据对比 编辑:程序博客网 时间:2024/05/21 17:57

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

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

[cpp] view plaincopy
  1. void SetWindowSize(HWND hWnd)  
  2.  
  3.     RECT WindowRect;  
  4.     RECT ClientRect;  
  5.     GetWindowRect(hWnd, &WindowRect);  
  6.     GetClientRect(hWnd, &ClientRect);  
  7.     WindowRect.right += (DEFAULT_WIDTH ClientRect.right);  
  8.     WindowRect.bottom += (DEFAULT_HIGHT ClientRect.bottom);  
  9.     MoveWindow(hWnd, WindowRect.left, WindowRect.top, WindowRect.right-WindowRect.left, WindowRect.bottom-WindowRect.top, true);  
  10.  
在创建窗体的的函数里设置窗口客户区大小主要是用作参考,这里设置的大小实际为窗体大小,其它参数自行配置。

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

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

函数原型:BOOLMoveWindow( HWND hWnd, int X, int Y, int nWidth, int nHeight, BOOLbRepaint );

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