【80分求助】MFC对话框程序,添加工具条的问题

liaohuming 2012-02-24 09:22:07
我的问题是这样的:

基于对话框的程序,想给其添加工具条(ToolBar),代码如下:

BOOL CDrawDlg::OnInitDialog()
{
CDialog::OnInitDialog();

if (!m_Wndtoolbar.CreateEx( this,TBSTYLE_FLAT , WS_CHILD | WS_VISIBLE | CBRS_ALIGN_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS,
CRect(4,4,0,0)) || !m_Wndtoolbar.LoadToolBar(IDR_TOOLBAR1) )
{
TRACE0("failed to create toolbar\n");
return FALSE;
}
m_Wndtoolbar.ShowWindow(SW_SHOW);
RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0);

return TRUE;
}


一切都正常使用

但是由于我的对话框是有“最大化”、“最小化”以及“Resizing”可以拉动大小的,这样就导致在改变对话框大小的时候,工具条不见了,只有当把鼠标放到工具条的位置,工具条的图标才一个个的显示出来,要是对话框的窗口拉大了的话工具条就变得短了一截,请问各位如何实现工具条根据对话框大小改变也动态的改变大小呢,以及如何实现工具条浮动呢?最好上代码^_^
...全文
391 19 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
wanglihui1990 2014-07-16
  • 打赏
  • 举报
回复
楼主,工具条的浮动怎么解决的?
liaohuming 2012-03-01
  • 打赏
  • 举报
回复
继续求助啊
liaohuming 2012-03-01
  • 打赏
  • 举报
回复
对了,我是在void OnSize(UINT nType, int cx, int cy);调用的,因为除了最大化最小化之外还可以拉动改变大小[Quote=引用 16 楼 tixisong 的回复:]
最大最小函数中,再次调用 RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0);
[/Quote]
liaohuming 2012-03-01
  • 打赏
  • 举报
回复
哈哈,完美解决,散分~[Quote=引用 16 楼 tixisong 的回复:]
最大最小函数中,再次调用 RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0);
[/Quote]
tixisong 2012-03-01
  • 打赏
  • 举报
回复
最大最小函数中,再次调用 RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0);
liaohuming 2012-02-29
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 lin98666lin 的回复:]
...........给你的工具条父窗口 加上ws_clipchildren 属性就好了。 应该的.
[/Quote]

谢谢你,经你这么一提示,已经解决了大部分的问题^_^

还有问题就是,如何实现工具条根据对话框大小改变也动态的改变大小呢,以及如何实现工具条浮动呢?
only_delusion 2012-02-29
  • 打赏
  • 举报
回复
...........给你的工具条父窗口 加上ws_clipchildren 属性就好了。 应该的.
liaohuming 2012-02-25
  • 打赏
  • 举报
回复
我的对话框是有“最大化”、“最小化”以及“Resizing”可以拉动大小的,这样就导致在改变对话框大小的时候,工具条不见了,只有当把鼠标放到工具条的位置,工具条的图标才一个个的显示出来,要是对话框的窗口拉大了的话工具条就变得短了一截,请问各位如何实现工具条根据对话框大小改变也动态的改变大小呢,以及如何实现工具条浮动呢?最好上代码^_^
hdg3707 2012-02-25
  • 打赏
  • 举报
回复
查一下工具条的成员函数,有没有动态改变大小,如果没有,就OnSize函数里先删除工具条再创建,但这个方法不好,尽量不用,实现在没办法才用的
gold_water 2012-02-25
  • 打赏
  • 举报
回复
重写OnSize函数中对工具条做下刷新。
liaohuming 2012-02-25
  • 打赏
  • 举报
回复
哦,这个RecalcLayout()函数的功能貌似很吻合我想要的O(∩_∩)O~,这个怎么用的能说详细一点吗[Quote=引用 9 楼 qualcode 的回复:]
RecalcLayout这个函数你可能用得到。


当标准工具栏或状态栏隐藏或者显示,或者窗口调整大小时,调用这个方法。
方法原型为:

virtual void RecalcLayout( BOOL bNotify = TRUE );
[/Quote]
qualcode 2012-02-25
  • 打赏
  • 举报
回复
RecalcLayout这个函数你可能用得到。


当标准工具栏或状态栏隐藏或者显示,或者窗口调整大小时,调用这个方法。
方法原型为:

virtual void RecalcLayout( BOOL bNotify = TRUE );
liaohuming 2012-02-25
  • 打赏
  • 举报
回复
目前主要就三个问题:

1、因为我的对话框是非模态的对话框,在窗口失去焦点,之后再得到焦点,工具栏的刷新问题,因为失去焦点后再得到焦点时,工具条有的时候不见了

2、就是工具条随对话框大小同步改变尺寸的问题

3、SDI\MDI下可以使用的浮动工具条,在对话框下好像用不了,如果想把对话框工具条做成浮动的,该怎么做呢?

m_wndColorDlgBar.EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndColorDlgBar);

问题有点多啊,大家有知道怎么做的帮帮忙^_^
  • 打赏
  • 举报
回复
看看这个
http://wenku.baidu.com/view/5b0b494333687e21af45a94c.html
  • 打赏
  • 举报
回复
你在对话框“最大化”、“最小化”以及“Resizing”后强制刷新一下工具条 试试
liaohuming 2012-02-24
  • 打赏
  • 举报
回复
求帮助,求解决 ~~~~(>_<)~~~~

15,980

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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