CReBar 的分隔竖线如何去除?

WhiteEat 2002-12-10 03:48:01
我想在CReBar上放一个网络广告,把左端的分隔竖线去除。请各位帮帮忙。
...全文
120 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
jerrytse 2002-12-11
  • 打赏
  • 举报
回复
应该这样

REBARBANDINFO rbi;
memset(&rbi, 0, sizeof(REBARBANDINFO));

int nCount = m_wndReBar.GetReBarCtrl().GetBandCount();
for(int i = 0; i < nCount; i++)
{
rbi.cbSize = sizeof(rbi); // 注意要设置rbi的值以取得正确数值
rbi.fMask = RBBIM_ID| RBBIM_CHILD | RBBIM_STYLE;
m_wndReBar.GetReBarCtrl().GetBandInfo(i, &rbi);
rbi.fStyle = rbi.fStyle & ~RBBS_GRIPPERALWAYS;
m_wndReBar.GetReBarCtrl().SetBandInfo(i, &rbi);
}
kingcom_xu 2002-12-11
  • 打赏
  • 举报
回复
hwndChild 这个值是指ReBar上放置的控件句柄,还是指控件里面包含的东西的句柄?
MSDN的解释:
hwndChild
Handle to the child window contained in the band, if any.

这个band是指m_wndDlgBar,还是指m_wndReBar?
------------------------------------------------------
应该是指m_wndDlgBar的...一个rebar可以有多个区段.一个区段有且只有一个子窗口...
kingcom_xu 2002-12-11
  • 打赏
  • 举报
回复
REBARBANDINFO rbi;
memset(&rbi, 0, sizeof(REBARBANDINFO));
rbi.fMask= RBBIM_ID| RBBIM_CHILD | RBBIM_STYLE;



int nCount = m_wndReBar.GetReBarCtrl().GetBandCount();
for(int i=0; i<nCount; i++)
{
m_wndReBar.GetReBarCtrl().GetBandInfo(i,&rbi);
rbi.fMask= RBBIM_STYLE;
rbi.fStyle = rbi.fStyle &~ RBBS_GRIPPERALWAYS;
m_wndReBar.GetReBarCtrl().SetBandInfo(i,&rbi);
}
这样不知有没有用...

WhiteEat 2002-12-11
  • 打赏
  • 举报
回复
我开始试过这样写,可是没有效果:
REBARBANDINFO rbi;
memset(&rbi, 0, sizeof(REBARBANDINFO));

int nCount = m_wndReBar.GetReBarCtrl().GetBandCount();
for(int i=0; i<nCount; i++)
{
m_wndReBar.GetReBarCtrl().GetBandInfo(i,&rbi);
rbi.fStyle = rbi.fStyle &~ RBBS_GRIPPERALWAYS;
m_wndReBar.GetReBarCtrl().SetBandInfo(i,&rbi);
}
WhiteEat 2002-12-11
  • 打赏
  • 举报
回复
hwndChild 这个值是指ReBar上放置的控件句柄,还是指控件里面包含的东西的句柄?
MSDN的解释:
hwndChild
Handle to the child window contained in the band, if any.

这个band是指m_wndDlgBar,还是指m_wndReBar?
kingcom_xu 2002-12-11
  • 打赏
  • 举报
回复
我想fStyle最好用CReBarCtrl::GetBandInfo从原来的区段中读出来后再用&~RBBS_GRIPPERALWAYS来去掉这个风格...

WhiteEat 2002-12-11
  • 打赏
  • 举报
回复
REBARBANDINFO rbi;
memset(&rbi, 0, sizeof(REBARBANDINFO));
rbi.cbSize= sizeof(REBARBANDINFO);
rbi.fMask= RBBIM_ID| RBBIM_CHILD | RBBIM_STYLE;
rbi.fStyle=RBBS_CHILDEDGE ;
rbi.wID=m_wndReBar.GetDlgCtrlID();


int nCount = m_wndReBar.GetReBarCtrl().GetBandCount();
for(int i=0; i<nCount; i++)
{
//rbi.hwndChild= m_wndDlgBar.GetSafeHwnd();
m_wndReBar.GetReBarCtrl().SetBandInfo(i,&rbi);
}
kingcom_xu 2002-12-10
  • 打赏
  • 举报
回复
可否把你代码贴出来
WhiteEat 2002-12-10
  • 打赏
  • 举报
回复
竖线去掉了,可是ReBar不会重画了
kingcom_xu 2002-12-10
  • 打赏
  • 举报
回复
如果区段已经存在可用SetBandInfo函数来改...
kingcom_xu 2002-12-10
  • 打赏
  • 举报
回复
REBARBANDINFO rbi;
rbi.cbSize= sizeof(REBARBANDINFO);
rbi.fMask= RBBIM_ID| RBBIM_CHILD | RBBIM_STYLE;
rbi.fStyle= ;//这里去掉RBBS_GRIPPERALWAYS风格
rbi.wID=m_wndToolBar.GetDlgCtrlID();
rbi.cch= 7;
rbi.hwndChild= (HWND)m_wndToolBar;
m_wndReBar.GetReBarCtrl().InsertBand(-1, &rbi);

以上代码不完整...
但大约就是这个原理...
LookSail 2002-12-10
  • 打赏
  • 举报
回复
up
WhiteEat 2002-12-10
  • 打赏
  • 举报
回复
help

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧