请教多个工具栏(ControlBar,DialogBar)的停靠问题

nonotoday 2007-03-13 04:18:09
怎样把:
0000
0000
0000
0000
111111111111111111
111111111111111111
要变成:
0000
0000
00001111111111111111111
00001111111111111111111

就是把
---------------------------
toolbar1
---------------------------
|2 |
| |
| |
| |
| |
-----------------------------
3
———————————————
样子的停靠方式改成
如下,不知道怎么改?
---------------------------
toolbar1
---------------------------
| |
| |
| |
| 2 |
| |
| |
| |-------------------------
| | 3
| |—————————————

搜索过以前的帖子,发现没有解决,请大家帮忙~~~
解决问题后立刻给分~~~谢谢大家!

...全文
464 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
wellxia 2011-12-26
  • 打赏
  • 举报
回复
楼主,问题怎么解决的? 我也遇到同样问题,跪求啊。 感谢~
nonotoday 2007-03-14
  • 打赏
  • 举报
回复
To dazedase:
貌似不行啊?能详细一点吗?

To wangpai7776()
你的两个在同一行,不符要求。
回风舞雪 2007-03-14
  • 打赏
  • 举报
回复
将两个ControlBar停靠在同一行中
DockControlBar(&m_wndMyBar1, AFX_IDW_DOCKBAR_BOTTOM);///停靠在底部
RecalcLayout();
CRect rect;
m_wndMyBar1.GetWindowRect(rect);
rect.OffsetRect(1, 0);//偏移一个位置
DockControlBar(&m_wndMyBar2, AFX_IDW_DOCKBAR_BOTTOM,rect);///也停靠在底部

回风舞雪 2007-03-14
  • 打赏
  • 举报
回复
要不,自己定义工具栏的区域
dazedase 2007-03-14
  • 打赏
  • 举报
回复
实地试验了一下,发现确实不行
横向的工具条会挤占竖向的工具条的位置
sorry 上面说错了
我记得以前做的一个是可以排成这样的,不过不能Dock,一旦DockControlBar就完了

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;
if (!m_wndStatusBar.Create(this) ||
!m_wndStatusBar.SetIndicators(indicators,
sizeof(indicators)/sizeof(UINT)))
{
TRACE0("Failed to create status bar\n");
return -1; // fail to create
}

if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
{
TRACE0("Failed to create toolbar\n");
return -1; // fail to create
}

if (!m_ToolBar1.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_LEFT
| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
!m_ToolBar1.LoadToolBar(IDR_TOOLBAR1))
{
TRACE0("Failed to create toolbar\n");
return -1; // fail to create
}

if (!m_ToolBar2.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_BOTTOM
| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
!m_ToolBar2.LoadToolBar(IDR_TOOLBAR2))
{
TRACE0("Failed to create toolbar\n");
return -1; // fail to create
}


// m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
// m_ToolBar1.EnableDocking(CBRS_ALIGN_ANY);
// m_ToolBar2.EnableDocking(CBRS_ALIGN_ANY);



// EnableDocking(CBRS_ALIGN_ANY);


// DockControlBar(&m_wndToolBar);
// DockControlBar(&m_ToolBar1);
// DockControlBar(&m_ToolBar2);

return 0;
}

这样能达到最后的效果,但再也不能改变。
也许还有更好的办法,只是我太菜,不知道吧。

只要把竖向的工具条锁住了,横向的就不会挤占竖向的位置了

楼主可以尝试让工具条不能浮动但可以拖动的效果,也许能够达到目的
但是我不知道怎样去掉CBRS_FLOATING 属性
东文-桑晨 2007-03-13
  • 打赏
  • 举报
回复
可移动的Toolbar(如word里的)
dazedase 2007-03-13
  • 打赏
  • 举报
回复
先出来的Toolbar会挤占后出来的Toolbar的位置,后出来的Toolbar只能填满先出来的Toolbar剩下的位置,把先出来的toolbar3拿掉再摆回去,3就在2之后了
dazedase 2007-03-13
  • 打赏
  • 举报
回复
把3 Hide掉再Dock到底部

15,979

社区成员

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

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