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)