MFC 如何收缩对话框

来源:互联网 发布:2016淘宝销售前十名 编辑:程序博客网 时间:2024/04/29 11:24

在网上看到很多关于收缩对话框的例子,但大多数是先收缩后扩展的。这里写一下先扩展后收缩的例子。

在对话框上用picture控件画一个矩形(ID为IDC_SEPARATOR),这个矩形的上放部分就是待显示的对话框,当然下部分就是要收缩的了,然后添加一个Button(ID为IDC_ISEXTEND),标题为<<open<<。

在头文件中添加:

BOOL m_bExpand;
并在构造函数中将m_bExpand初始化为FALSE,默认的对话框是没有展开的。

然后在OnInitDialog()中添加:

CRect rectNormal;CRect rectExpand;GetWindowRect(&rectExpand);m_nExpandedHeight=rectExpand.Height();GetDlgItem(IDC_SEPARATOR)->GetWindowRect(&rectNormal);m_nNormalHeight=rectNormal.top-rectExpand.top;rectExpand.SetRect(rectExpand.left,rectExpand.top,rectExpand.right, rectExpand.top + m_nNormalHeight);MoveWindow(&rectExpand,TRUE);

然后在响应“open”按钮的BN_CLICKED消息函数中添加:

void CCalculatorDlg::OnIsExtend() {// TODO: Add your control notification handler code hereCRect rect;GetWindowRect(&rect);   //缩小后的矩形if(!m_bExpand){rect.SetRect(rect.left,rect.top,rect.right, rect.top + m_nExpandedHeight); //扩展SetDlgItemText(IDC_ISEXTEND,"<<close <<");m_bExpand=TRUE;}else{rect.SetRect(rect.left,rect.top,rect.right, rect.top + m_nNormalHeight);SetDlgItemText(IDC_ISEXTEND,">>open >>");m_bExpand=FALSE;}MoveWindow(&rect,TRUE);}