Dialog窗体收缩与扩展

这篇博客介绍如何在Dialog中通过按钮控制窗体的收缩和扩展。作者设置了两个矩形区域,一个用于完全展开状态,另一个用于收缩状态,并通过改变窗口位置和大小实现动态切换效果。

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

在Dialog中放置一个按钮和一个图像控件
按钮ID:IDC_BUTTON1
图像控件ID:IDC_SEPARATOR   //作为分隔条
并设置图像控件visble不可见,勾选sunken(凹陷)
窗体如图:

Dialog窗体收缩与扩展 - andylanzhiyong - C++学习
 
代码:
void CTest0610Dlg::OnButton1() 
{
// TODO: Add your control notification handler code here

CString str;
if(GetDlgItemText(IDC_BUTTON1,str),str=="收缩<<")
{
SetDlgItemText(IDC_BUTTON1,"扩展>>");
}
else
{
SetDlgItemText(IDC_BUTTON1,"收缩<<");
}
static CRect rectLarge;    //完整窗体矩形
static CRect rectSmall;    //缩小窗体矩形
if(rectLarge.IsRectNull())    //如果窗体矩形为空
{
GetWindowRect(&rectLarge);

CRect rectSeparator;    //分隔条矩形
GetDlgItem(IDC_SEPARATOR)->GetWindowRect(&rectSeparator);
rectSmall.left=rectLarge.left;
rectSmall.top=rectLarge.top;
rectSmall.right=rectSeparator.right;
rectSmall.bottom=rectLarge.bottom;
}
if(str=="收缩<<")
{
//设置窗体
//参数1:z次序,设置样式SWP_NOZORDER(无Z次序)时忽略此参数
//参数2、3:窗体矩形左上角坐标, 设置样式 SWP_NOMOVE (不移动) 时忽略此参数
//参数4、5:窗体矩形宽和高
//参数6:样式
SetWindowPos(NULL,0,0,rectSmall.Width(),rectSmall.Height(),
SWP_NOMOVE | SWP_NOZORDER);
}
else
{
SetWindowPos(NULL,0,0,rectLarge.Width(),rectLarge.Height(),
SWP_NOMOVE | SWP_NOZORDER);
}
}

运行效果:
Dialog窗体收缩与扩展 - andylanzhiyong - C++学习
 
Dialog窗体收缩与扩展 - andylanzhiyong - C++学习
 
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值