MFC 如何收缩对话框

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

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

在头文件中添加:

	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 here

	CRect rect;
	GetWindowRect(&rect);   //缩小后的矩形
	if(!m_bExpand)
	{
		rect.SetRect(rect.left,rect.top,rect.right, rect.top + m_nExpandedHeight); //扩展
		SetDlgItemText(IDC_ISEXTEND,"<>open >>");
		m_bExpand=FALSE;
	}
	MoveWindow(&rect,TRUE);
}


你可能感兴趣的:(MFC)