1.在 stdafx.h 头文件中添加
#include "EasySize.h"
在对话框中的OnInitDialog()函数中不能设置对话框大小和位置的信息,如
// 对话框窗口大小初始化
:: SetWindowPos( this-> m_hWnd, HWND_BOTTOM, 10, 10, 1000, 730, SWP_NOZORDER);
如果设置了需要将其注释掉,不然会导致控件不显示
2.在对话框定义类中添加
class CTestDlg : public CDialogEx
{
DECLARE_EASYSIZE
// 构造
public:
CTestDlg(CWnd* pParent = NULL); // 标准构造函数
...//后面的内容省略
}
3.使用类向导添加 onsize()和onsizing()消息函数
afx_msg void OnSize(UINT nType, int cx, int cy);
afx_msg void OnSizing(UINT fwSide, LPRECT pRect);
4.在对话框的OnInitDialog()函数中的末尾添加
INIT_EASYSIZE;
return TRUE;//除非将焦点设置到控件,否则返回 TRUE
5.在onsize()和onsizing()函数中添加
void CMFCApplication2Dlg::OnSize(UINT nType, int cx, int cy)
{
CDialogEx::OnSize(nType, cx, cy);
UPDATE_EASYSIZE;
}
void CMFCApplication2Dlg::OnSizing(UINT fwSide, LPRECT pRect)
{
CDialogEx::OnSizing(fwSide, pRect);
EASYSIZE_MINSIZE(280, 250, fwSide, pRect);
}
6.在对话框的cpp文件中添加easy-size的宏映射
BEGIN_EASYSIZE_MAP(CMFCApplication2Dlg)
EASYSIZE(IDOK, ES_KEEPSIZE, ES_KEEPSIZE, ES_BORDER, ES_BORDER, 0)
EASYSIZE(IDCANCEL, ES_BORDER, ES_BORDER, ES_KEEPSIZE, ES_BORDER, 0)
EASYSIZE(IDC_BUTTON1, ES_BORDER, ES_BORDER, ES_KEEPSIZE, ES_KEEPSIZE, 0)
END_EASYSIZE_MAP
这里需要解释的是宏EASYSIZE()的用法,其原型如下:
EASYSIZE(control,left,top,right,bottom,options)
该宏表示对ID值为control的控件实施缩放效果,缩放后的上下左右位置由control,left,top,right,bottom来确定,大小由option确定。
ES_BORDER:表示与边框的距离不变
ES_KEEPSIZE:控件的相应边的大小不变