我建了一个MFC视图/文档项目,里面加了两个ToolBar,我想在程序运行时让他们在同一行,怎么才可以?
当前我采用下面的代码:
if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC, CRect(0,0,0,0), IDR_MAINFRAME) ||
!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
{
TRACE0("未能创建工具栏\n");
return -1; // 未能创建
} // 创建媒体控制工具栏
if (!m_wndToolBar_MediaControl.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC, CRect(0,0,0,0), IDR_MEDIA_CONTROL) ||
!m_wndToolBar_MediaControl.LoadToolBar(IDR_MEDIA_CONTROL))
{
TRACE0("未能创建媒体控制工具栏\n");
return -1; // 未能创建
} // TODO: 如果不需要工具栏可停靠,则删除这三行
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
m_wndToolBar_MediaControl.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndToolBar);
DockControlBar(&m_wndToolBar_MediaControl);
运行时两个ToolBar是在两行上的
当前我采用下面的代码:
if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC, CRect(0,0,0,0), IDR_MAINFRAME) ||
!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
{
TRACE0("未能创建工具栏\n");
return -1; // 未能创建
} // 创建媒体控制工具栏
if (!m_wndToolBar_MediaControl.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC, CRect(0,0,0,0), IDR_MEDIA_CONTROL) ||
!m_wndToolBar_MediaControl.LoadToolBar(IDR_MEDIA_CONTROL))
{
TRACE0("未能创建媒体控制工具栏\n");
return -1; // 未能创建
} // TODO: 如果不需要工具栏可停靠,则删除这三行
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
m_wndToolBar_MediaControl.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndToolBar);
DockControlBar(&m_wndToolBar_MediaControl);
运行时两个ToolBar是在两行上的
解决方案 »
- 关于 Toolbar
- 关于串行化,建立文件时路径变化的问题。
- ** 难题: A网页有一部分数据, A网页请求我的MFC函数显示一个网页B来显示其中一条记录, 网页B点击一个按钮后, A网页如何感知?
- 我封装的完成端口服务端框架,希望大家帮忙分析,看哪里有不合理的地方
- 请问如何用什么方法编程实现网络间的文件传送?谢谢!
- 求教:如何把一个基于多文档的程序换成基于对话框的?
- 父窗体发出的消息如何上子窗体也能够获取,难道一定要再postmessage,我有多个子窗体,这样比较麻烦?
- 大虾门 提问!(2)
- [问题解决,1小时后结贴散分]怎么会出现这样的地址值?!
- 请教winzip如何解密?多谢(无正文)
- 怎么去掉一个CListCtrl的水平滚动条?
- [求助]请问如何获得开始菜单中所有程序的路径?
这个函数的用法看看函数参数吧
void CCJFrameWnd::DockControlBarLeftOf(CControlBar* Bar, CControlBar* LeftOf)
{
CRect rect;
DWORD dw;
UINT n;
// get MFC to adjust the dimensions of all docked ToolBars
// so that GetWindowRect will be accurate
RecalcLayout(TRUE);
LeftOf->GetWindowRect(&rect);
rect.OffsetRect(1,0);
dw=LeftOf->GetBarStyle();
n = 0;
n = (dw&CBRS_ALIGN_TOP) ? AFX_IDW_DOCKBAR_TOP : n;
n = (dw&CBRS_ALIGN_BOTTOM && n==0) ? AFX_IDW_DOCKBAR_BOTTOM : n;
n = (dw&CBRS_ALIGN_LEFT && n==0) ? AFX_IDW_DOCKBAR_LEFT : n;
n = (dw&CBRS_ALIGN_RIGHT && n==0) ? AFX_IDW_DOCKBAR_RIGHT : n;
// When we take the default parameters on rect, DockControlBar will dock
// each Toolbar on a seperate line. By calculating a rectangle, we in effect
// are simulating a Toolbar being dragged to that location and docked.
DockControlBar(Bar,n,&rect);
}