一:效果展示:
1.默认状态为展开状态:
2.点击折叠按钮后:按钮下方的部分折叠起来。
3.点击展开按钮:恢复到初始的展开状态。
二:按钮功能代码实现
BOOL bFold=TRUE;//表示是否收缩的标志位
CRect RectBtn; //按钮信息
CRect RectDlg; //主对话框信息
void CWinFoldDlg::OnBnClickedBtnFold()
{
CButton *Btn= (CButton *)GetDlgItem(IDC_BTN_FOLD);
//获取按钮的位置值
Btn->GetWindowRect(&RectBtn);
if (bFold)
{
//折叠
bFold = FALSE;
//折叠前先获取窗体的位置值,便于展开时使用
this->GetWindowRect(&RectDlg);
//设置窗体高度:窗口底部的y值–按钮底部的y值 + 30像素的边距
SetWindowPos(NULL, 0, 0, RectDlg.Width(), RectDlg.bottom - RectBtn.top + 30,SWP_NOZORDER | SWP_NOMOVE);
this->SetDlgItemText(IDC_BTN_FOLD, _T("展开"));
}
else
{
//展开
bFold=TRUE;
//设置窗体高度:恢复为折叠前的高度
SetWindowPos(NULL, 0, 0, RectDlg.Width(), RectDlg.Height(), SWP_NOZORDER | SWP_NOMOVE);
this->SetDlgItemText(IDC_BTN_FOLD, _T("折叠"));
}
}
三:使用场景
当某些功能不经常使用或者只有获得了某种权限密码后方可使用时可以使用这种折叠与展开方式。