easy-size控件自适应大小的使用

来源:互联网 发布:.cx域名投资 编辑:程序博客网 时间:2024/06/08 14:38

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:控件的相应边的大小不变

0 0
原创粉丝点击