完成对话框收缩的功能

要求:

在窗口添加个按钮,修改其名称为“收缩”,当点击“收缩”按钮时,将对话框切除一部分,并将按钮文字改为“扩展”;当再次点击“扩展”时,还原对话框


过程:

1、在窗口添加个按钮,修改其名称为“收缩”,

2、为按钮增加点击事件;

3、在事件中添加CString 变量,用来判断当前按钮上的文字内容;

4、在对话框上添加分隔符,用于表示分隔线;

5、获得对话框的宽、高以便截取;要获得坐标

获得窗口的矩形区域:CWnd::GetWindowRect();

6、了解CRect类。

CRect类中,有两个函数可以判断矩形区域是否为空,

IsRectEmpty();检测矩形宽、高是否都为0.

IsRectNull();检测左上角坐标,和右下角坐标是否为0;


Z次序:窗口中的Z次序表明了重叠窗口堆中窗口的位置。这个窗口堆是按一个假想的轴定位的,Windows 系统管理三个独立的Z次序——一个用于顶层窗口,一个用于兄弟窗口,一个用于最顶层窗口。应用程序通过设置WS_EX_TOPMOST风络创建最顶层窗口。可通过函数BringWindowToTop把一个窗口放置到Z次序的顶部,函数SetWindowPos和DeferWindowPos用来重排Z次序。

兄弟窗口:共享同一个父窗口的多个子窗口叫兄弟窗口;

活动窗口:应用程序的顶层窗口,也是当前使用的窗口。应用程序通过调用SetActiveWindow来激活一个顶层窗口。

前台窗口:当前正在创建的窗口,称之为前台窗口,应用 程序用函数SetForegroundWindow设置前台窗口。

后台窗口:其它窗口,称为后台窗口。

CWnd::SetWindowPos():设置窗口位置.如设置为顶层窗口.


示例:

static CRect rectlarge;
static CRect rectsmall;

if(rectlarge.IsRectNull())//因为定义了static值为0,所以可以进入?
{
CRect rectseparator;
GetWindowRect(&rectlarge); \\在这里rectlarge不是0吗?它的地址是多少?
GetDlgItem(IDC_SEPARATOR)->GetWindowRect(&rectseparator);

rectsmall.left = rectlarge.left;
rectsmall.top = rectlarge.top ;
rectsmall.right = rectlarge.right;
rectsmall.bottom = rectseparator.bottom;
}

if(str1 == "收缩<<")
{
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);
}


问题:

1、了解前台窗口和活动窗口的区别,


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值