有时在进行MFC界面软件设计时,需要实现模块区域在使用到时才显示出来,不需要的时候可以进行隐藏的功能。其方法如下:
1.创建对话框;
2.在xxxDlg.h文件中定义矩形变量:
private:
CRect m_RectLarge; //整个,整体全部面积区域
CRect m_RectSmall; //隐藏之后的面积区域
3.在OnInitDialog()初始化函数中添加以下代码,该代码用于初始化时隐藏区域功能:
CRect m_RectShow; //显示部分的面积区域
GetWindowRect(&m_RectLarge);
GetDlgItem(IDC_SHOW)->GetWindowRect(&m_RectShow);
m_RectSmall.left = m_RectLarge.left;
m_RectSmall.top = m_RectLarge.top;
m_RectSmall.right = m_RectLarge.right;
m_RectSmall.bottom = m_RectShow.top;
SetWindowPos(NULL,0,0,m_RectSmall.Width(),m_RectSmall.Height(),SWP_NOMOVE|SWP_NOZORDER);
4.创建 button按钮,并在回调函数OnBnClickedBtnShow()中实现:
{
// TODO: 在此添加控件通知处理程序代码
CString str;
GetDlgItemText(IDC_BTN_SHOW, str);
if(str == _T("扩展显示>>"))
{
SetDlgItemText(IDC_BTN_SHOW, _T("隐藏显示<<"));
SetWindowPos(NULL, 0, 0, m_RectLarge.Width(), m_RectLarge.Height(),SWP_NOMOVE|SWP_NOZORDER);
}
else if(str == _T("隐藏显示<<"))
{
SetDlgItemText(IDC_BTN_SHOW, _T("扩展显示>>"));
SetWindowPos(NULL, 0, 0, m_RectSmall.Width(), m_RectSmall.Height(),SWP_NOMOVE|SWP_NOZORDER);
}
}
完成,其结果如下所示: