【旧资料整理】MFC--尝试得出<<修改浮动边栏标题使立即生效>>方法

资料时间:2009-12-02之前

分享时间:2009-12-02到百度空间,空间关闭,重新整理

    修改边栏的标题很简单,即调用SetWindowText().但是它不会立即显示在标题栏上,让标题立即显示的方法在网上实在找不到,自己前几天尝试了多半天,最后只是通过调用框架的DockControlBar()重新生成边栏来实现立即显示. 但是自己对这个方法并不满意,今天重新尝试,终于找到了有效且根本的方法.

    修改后的标题之所以不立即显示是因为边栏的父窗口是ReBar,

ReBar的父窗口是浮动边栏的框架,显示出来的标题是框架的标题,不是边栏的标题,只是二者初始化时相等.如果通过两次求父窗口指针获得框架的指针来修改框架的标题的话,即GetParent()->GetParent()->

SetWindowText().虽然显示了修改后的标题,但是一但框架移动重绘又恢复了.经过自己尝试,恢复的不是边栏的标题,而是Rebar的标题.所以修改边栏的标题是没有意义的,修改了也不会被显示,修改Rebar的标题才会使修改立即显示.

 

修改效果:


代码:

    CWnd *pWnd = GetParent();//得到父窗口指针

   if (pWnd != (CWnd *) NULL)//非空
{
ASSERT_KINDOF(CWnd, pWnd);//有效
pWnd->SetWindowText("新标题");//修改
//修改当前标题,否则只会在边栏移动后更新,方法很多,列出简便的两种
pWnd=pWnd->GetParent();
if(pWnd!=(CWnd *) NULL)//非空
{
ASSERT_KINDOF(CWnd, pWnd);//有效
//方法1,直接修改
pWnd->SetWindowText("新标题");
//方法2,向窗口发送 WM_SIZE消息,让框架自己更新 
//::SendMessage(pWnd->m_hWnd,WM_SIZE,0,0);
}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值