CStatusBar和CStatusBarCtrl默认行为(风格)差异

本文介绍了在MFC中,CStatusBar和CStatusBarCtrl在创建和大小调整时的不同表现。CStatusBarCtrl在对话框大小变化时会自动调整位置和大小,而CStatusBar不会。这种差异源于CStatusBar在创建时设置了CCS_NOPARENTALIGN和CCS_NORESIZE风格,阻止了自动位置调整。此外,CStatusBar的size-grip取决于对话框是否具有WS_THICKFRAME风格,而不是Create函数中的SBARS_SIZEGRIP参数。
摘要由CSDN通过智能技术生成

因为今天在基于对话框的程序中,测试了CStatusBarCtrl和CStatusBar两种“状态栏”,发现默认的情况下,调用Create构造出来的状态栏的行为还是有不小的差异,所以在此总结出来。

 

首先强调,下文中,CStatusBar和CStatusBarCtrl会多次出现,请一定不要搞混淆了!!!

 

首先说明这个现象,然后我再来解释原因。
现象:
当运行程序,对话框显示出来,你先将对话框的大小随意改变(最好是变大,才好看效果),然后再尝试通过size-grip改变CStatusBarCtrl对象的大小。此时你会发现,神奇的事情发生了!!!!
和你想象的不一样,它竟然会自动移动到对话框的底部(因为你此处指定的是CCS_BOTTOM,如果指定的是CCS_TOP,那么它会自动跳到对话框顶部),而且,大小也还原为开始的值(后面你会知道, 这是系统预定义的默认值)。
而对于你构造的CStatusBar对象,你改变它的大小的时候,它确实按照你所想象的那样,仅仅改变了大小而已。

我百思不得其解,到底发生了什么事?为什么会这样呢?

我的源代码是这样的:
1、 首先在Dialog类里面添加两个成员变量
    CStatusBar m_wndStatusBar;
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值