MFC添加加瓦系列一之MFC水平与垂直布局

前言

MFC 作为Windows界面编程元老级的成员,确实是让人又爱又恨。但是如果有人让我在windows下实现功能性桌软,我依然会选择它。于是小马哥决定从今天起推出我的第一个编程系列《MFC填砖加瓦》,想在今后的时光里为这位过期的妹纸增添几件衣服。

正文

MFC原生控件在布局方面非常吃力。将控件“摆好”后,再想进行布局操作只能靠代码控制。为此我模仿Duilib的水平于垂直布局方式,写了一个布局类。
代码很简单功能却很舒服:

CLayout 布局抽象
CHLayout水平布局类
CVLayout垂直布局类

控件

MFC添加加瓦系列一之MFC水平与垂直布局_第1张图片

代码

CHLayout *lll1 = new CHLayout();

    CVLayout *ll1 = new CVLayout();

    CHLayout *l1 = new CHLayout();
    l1->AddLayout(new CHLayout(GetDlgItem(IDC_EDIT1)));
    l1->AddLayout(new CHLayout(&btn1));
    l1->AddLayout(new CHLayout(GetDlgItem(IDC_EDIT2)));
    l1->AddLayout(new CHLayout(&btn2));
    l1->AddLayout(new CHLayout(GetDlgItem(IDC_EDIT3)));
    l1->AddLayout(new CHLayout(&btn3));
    l1->SetPadding(5);
    ll1->AddLayout(l1);

    CHLayout *l2 = new CHLayout();
    l2->AddLayout(new CHLayout(GetDlgItem(IDC_EDIT4)));
    l2->AddLayout(new CHLayout(GetDlgItem(IDC_EDIT5)));
    l2->AddLayout(new CHLayout(GetDlgItem(IDC_EDIT6)));
    l2->SetPadding(5);
    ll1->AddLayout(l2);

    CHLayout *l3 = new CHLayout();
    l3->AddLayout(new CHLayout(GetDlgItem(IDC_EDIT7)));
    l3->AddLayout(new CHLayout(GetDlgItem(IDC_EDIT8)));
    l3->AddLayout(new CHLayout(GetDlgItem(IDC_EDIT9)));
    l3->SetPadding(5);
    ll1->AddLayout(l3);

    CHLayout *ll2 = new CHLayout();
    ll2->AddLayout(new CHLayout(&list));

    lll1->AddLayout(ll1);
    lll1->AddLayout(ll2);

    CVLayout *lll2 = new CVLayout();

    layout.AddLayout(lll1);
    layout.AddLayout(lll2);

效果

你可能感兴趣的:(MFC添加加瓦系列)