MFC窗口及组件大小设置

MFC

一.桌面分辨率获取

1.获取桌面的大小,不包括状态栏

cxx = GetSystemMetrics(SM_CXFULLSCREEN);
cyy = GetSystemMetrics(SM_CYFULLSCREEN);  

2.获取桌面的大小,包括状态栏 正真屏幕大小

cxx = GetSystemMetrics(SM_CXSCREEN);
cyy = GetSystemMetrics(SM_CYSCREEN);  

二.软件各尺寸获取

1.获取软件的大小

CRect oWindowRect; 
GetWindowRect( &oWindowRect );

2.获取客户区的大小(除去边框)

CRect oClientRect; 
GetClientRect( &oClientRect );//获取客户区的大小 

3.获取边框的大小

ULONG cx = oWindowRect.Width() - oClientRect.Width();		//窗口的宽 (边框)
ULONG cy = oWindowRect.Height() - oClientRect.Height();		//窗口的高(边框)

三.设置软件界面

1.MoveWindow函数

void MoveWindow(int x, int y, int nWidth, int nHeight, BOOL bRepaint = TRUE);

(x,y):设置窗口移动的位置,
(nWidth,nHeight):设置窗口的大小

  • 使用方法1
GetDlgItem(IDC_BUTTON)->MoveWindow(0, 0, 100, 80);
  • 使用方法2
    定义控件的变量 m_btn
m_btn.MoveWindow(0, 0, 100, 80);
  • 设置软件主界面的大小,在初始化函数OnInitDialog 添加如下代码
this->MoveWindow(0, 0, 100, 80);

2.SetWindowPos函数

SetWindowPos功能比较全,包含了MoveWindow的全部功能,设置组件和设置屏幕大小是一样的

  • 使用方法1
GetDlgItem(IDC_BUTTON)->SetWindowPos(NULL, 0, 0, 100, 80, SWP_SHOWWINDW);
  • 使用方法2
    定义控件的变量 m_btn
m_btn.SetWindowPos(NULL, 0, 0, 100, 80, SWP_SHOWWINDW);
  • 设置软件主界面的大小,在初始化函数OnInitDialog 添加如下代码
this->SetWindowPos(NULL, 0, 0, 100, 80, SWP_SHOWWINDW);

或者

SetWindowPos(&CWnd::wndTop, 0, 0, 100, 80, SWP_SHOWWINDW);

定位的标志

 	#define SWP_NOSIZE          0x0001    不改变尺寸(忽略cx,cy)
    #define SWP_NOMOVE          0x0002    不移动窗口位置(忽略x,y)
    #define SWP_NOZORDER        0x0004    维持当前Z序(忽略hWndlnsertAfter参数)
    #define SWP_NOREDRAW        0x0008    
    #define SWP_NOACTIVATE      0x0010
    #define SWP_FRAMECHANGED    0x0020  /* The frame changed: send WM_NCCALCSIZE */
    #define SWP_SHOWWINDOW      0x0040    显示窗口
    #define SWP_HIDEWINDOW      0x0080    隐藏窗口
    #define SWP_NOCOPYBITS      0x0100
    #define SWP_NOOWNERZORDER   0x0200  /* Don't do owner Z ordering */
    #define SWP_NOSENDCHANGING  0x0400  /* Don't send WM_WINDOWPOSCHANGING */
    #define SWP_DRAWFRAME       SWP_FRAMECHANGED
    #define SWP_NOREPOSITION    SWP_NOOWNERZORDER
    #define SWP_DEFERERASE      0x2000
    #define SWP_ASYNCWINDOWPOS  0x4000
  • 如果窗口设置隐藏可以使用ShowWindow函数操作
m_btn.ShowWindow(TRUE)

或者

GetDlgItem(IDC_BUTTON)->ShowWindow(TRUE)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值