加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 调整大小的WTL布局

发布时间:2020-12-16 07:25:32 所属栏目:百科 来源:网络整理
导读:我想知道具有更多WTL知识的人会如何创建这样的东西: 可调整大小的对话框( – WS_THICKFRAME),其中包含两个“区域”.当调整大小时,一个区域在y方向上生长,并且包含一些应该在彼此之间具有相等高度距离的分量(例如,在区域高度的0%,25%,50%,75%和100%处).
我想知道具有更多WTL知识的人会如何创建这样的东西:

可调整大小的对话框( – > WS_THICKFRAME),其中包含两个“区域”.当调整大小时,一个区域在y方向上生长,并且包含一些应该在彼此之间具有相等高度距离的分量(例如,在区域高度的0%,25%,50%,75%和100%处).

另一个区域位于下方并具有固定高度.调整大小时,两个区域都应在x方向上生长.

这里的重要问题是:
a)用于这两个区域的容器等
b)如何处理调整大小(DLGRESIZE_CONTROL不允许以相等的距离间隔控件,例如,afaik)

谢谢.

解决方法

您可以使用CDialogResize类.只需从类中继承这个类
窗口的定义,并定义每个控件应调整窗口大小的方式
已更新.这些调整大小级联,因此您可以使用以一种方式调整大小的窗口,该窗口也实现CDialogResize.

class CFooWindow : ... public CDialogResize<CFooWindow> {

    BEGIN_MSG_MAP(CFooWindow)
        MESSAGE_HANDLER(WM_INITDIALOG,OnInitDialog)
        ... more messages here
        CHAIN_MSG_MAP(CDialogResize<CFooWindow>)
    END_MSG_MAP()

    // This map defines how the controls within the window are resized.
    // You can also use DLGRESIZE_GROUP() to group controls together.
    BEGIN_DLGRESIZE_MAP(CFooWindow)
       DLGRESIZE_CONTROL(IDC_WINDOW_TOP,DLSZ_SZIZE_X | DLSZ_SIZE_Y);
       DLGRESIZE_CONTROL(IDC_WINDOW_BOTTOM,DLSZ_SZIZE_X | DLSZ_MOVE_Y);
    END_DLGRESIZE_MAP()


    LRESULT OnInitDialog(UINT uMsg,WPARAM wParam,LPARAM lParam,BOOL& bHandled) {

       DlgResize_Init();
    }
      .. the rest of your class here
}

您可以通过使用DLGRESIZE_GROUP()并将资源文件中的控件分开来实现控件之间的间隙,就像您希望它们在最终布局中分开一样.尺寸然后会更新这些项目.如果您需要任何太复杂的东西,可以使用对话框调整大小回调来控制项目的确切位置.只需在类中实现CDlgResize :: OnSize(UINT nType,int cx,int cy)并手动更新控件的大小.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读