MFC对话框可扩展区域显示

本文介绍了一种在对话框中实现窗口伸缩效果的方法,通过记录原始大小与缩小后的大小,利用按钮触发事件来切换显示状态,实现了对话框的扩展与隐藏功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.在Extend.h文件中加入

CRect m_rectOrig;
CRect m_rectSmall;

2.在Extend.cpp的OnInitDialog()函数中加入

SetDlgItemText(IDC_BTN_TRANSFER,"<< 扩展");
CRect rectSeparator;
GetWindowRect(&m_rectOrig);
GetDlgItem(IDC_SEPARATOR)->GetWindowRect(&rectSeparator);

m_rectSmall.left = m_rectOrig.left;//将m_rectSmall、m_rectOrig设置成对话框的数据成员,方便后面的伸缩事件使用
m_rectSmall.top = m_rectOrig.top;
m_rectSmall.right = m_rectOrig.right;
m_rectSmall.bottom = rectSeparator.bottom;
SetWindowPos(NULL,0,0,m_rectSmall.Width(),m_rectSmall.Height(),
		SWP_NOMOVE|SWP_NOZORDER);

3.添加扩展按钮函数

void CExtendDlg::OnBnClickedBtnTransfer()
{
	// TODO: 在此添加控件通知处理程序代码
	CString str;
	if(GetDlgItemText(IDC_BTN_TRANSFER,str),str == ">> 隐藏")
	{
		SetDlgItemText(IDC_BTN_TRANSFER,"<< 扩展");
	}
	else
	{
		SetDlgItemText(IDC_BTN_TRANSFER,">> 隐藏");
	}

	if(str == ">> 隐藏")
	{
		SetWindowPos(NULL,0,0,m_rectSmall.Width(),m_rectSmall.Height(),
			SWP_NOMOVE|SWP_NOZORDER);
	}
	else
	{
		SetWindowPos(NULL,0,0,m_rectOrig.Width(),m_rectOrig.Height(),
			SWP_NOMOVE|SWP_NOZORDER);
	}
}

4.IDC_BTN_TRANSFER为按键的ID,IDC_SEPARATOR为控件Picture_Control的ID,其中Picture_Control作为分割线,把Picture_Control控件拉成一条直线,属性中Visible设为false,sunken设置为true.

点击“扩展”前

点击“扩展”后

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值