我从网上down了一个重写CToolBar的函数(下附),在OnCreate()中也调用了该函数 this->CreateExToolBar()
(接上面)同时//TODO:如果您不希望工具栏和菜单栏可停靠,请删除这五行m_wndMenuBar.EnableDocking(CBRS_ALIGN_ANY);m_wnd...
(接上面)同时
//TODO: 如果您不希望工具栏和菜单栏可停靠,请删除这五行
m_wndMenuBar.EnableDocking(CBRS_ALIGN_ANY);
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockPane(&m_wndMenuBar);
DockPane(&m_wndToolBar);
也改成了
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockPane(&m_wndToolBar);
DockControlBar(&m_wndToolBar);
最后这句为了使得工具栏可以停靠,加上去就报错报的错我截图了。注视了就没有报错,但是工具栏无法显示。最近比较急,我又是个菜鸟 。大大不吝赐教啊。
附上函数
bool CMainFrame::CreateExToolBar()
{
if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
| CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC))
{
return false;
}
m_wndToolBar.GetToolBarCtrl().SetButtonWidth(40, 80); //设置按钮的宽度和长度
CImageList img; //图标列表
m_wndToolBar.ModifyStyle(0, TBSTYLE_FLAT |CBRS_TOOLTIPS
| TBSTYLE_TRANSPARENT|TBBS_CHECKBOX ); //改变工具栏属性
m_wndToolBar.SetButtons(NULL, 2); //共7个按钮
// 设置每个工具按钮文字
m_wndToolBar.SetButtonInfo(0, ID_PRODUCT_M, TBSTYLE_BUTTON, 0);
m_wndToolBar.SetButtonText(0, _T("商品信息"));
m_wndToolBar.SetButtonInfo(1, ID_STORE_M, TBSTYLE_BUTTON, 1);
m_wndToolBar.SetButtonText(1, _T("库存信息"));
CRect rectToolBar;
m_wndToolBar.GetItemRect(0, &rectToolBar); //得到按钮的大小
m_wndToolBar.SetSizes(rectToolBar.Size(), CSize(20,20)); //设置按钮的大小
}
没用的东西我都删掉了,然后在MainFrm.h中定义了 CToolBar m_wndToolBar; CReBar m_wndReBar; 展开
//TODO: 如果您不希望工具栏和菜单栏可停靠,请删除这五行
m_wndMenuBar.EnableDocking(CBRS_ALIGN_ANY);
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockPane(&m_wndMenuBar);
DockPane(&m_wndToolBar);
也改成了
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockPane(&m_wndToolBar);
DockControlBar(&m_wndToolBar);
最后这句为了使得工具栏可以停靠,加上去就报错报的错我截图了。注视了就没有报错,但是工具栏无法显示。最近比较急,我又是个菜鸟 。大大不吝赐教啊。
附上函数
bool CMainFrame::CreateExToolBar()
{
if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
| CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC))
{
return false;
}
m_wndToolBar.GetToolBarCtrl().SetButtonWidth(40, 80); //设置按钮的宽度和长度
CImageList img; //图标列表
m_wndToolBar.ModifyStyle(0, TBSTYLE_FLAT |CBRS_TOOLTIPS
| TBSTYLE_TRANSPARENT|TBBS_CHECKBOX ); //改变工具栏属性
m_wndToolBar.SetButtons(NULL, 2); //共7个按钮
// 设置每个工具按钮文字
m_wndToolBar.SetButtonInfo(0, ID_PRODUCT_M, TBSTYLE_BUTTON, 0);
m_wndToolBar.SetButtonText(0, _T("商品信息"));
m_wndToolBar.SetButtonInfo(1, ID_STORE_M, TBSTYLE_BUTTON, 1);
m_wndToolBar.SetButtonText(1, _T("库存信息"));
CRect rectToolBar;
m_wndToolBar.GetItemRect(0, &rectToolBar); //得到按钮的大小
m_wndToolBar.SetSizes(rectToolBar.Size(), CSize(20,20)); //设置按钮的大小
}
没用的东西我都删掉了,然后在MainFrm.h中定义了 CToolBar m_wndToolBar; CReBar m_wndReBar; 展开
3个回答
2011-06-21
展开全部
代码如下:
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(theApp.m_bHiColorIcons ? IDR_MAINFRAME_256 : IDR_MAINFRAME))
{
TRACE0("未能创建工具栏\n");
return -1; // 未能创建
}
// 这是要加的代码
if (!m_newToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_RIGHT | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
!m_newToolBar.LoadToolBar(IDR_TOOLBAR1))
{
TRACE0("未能创建工具栏\n");
return -1; // fail to create
} //创建一个靠在窗体右边的工具栏
// 到这里结束了
CString strToolBarName;
bNameValid = strToolBarName.LoadString(IDS_TOOLBAR_STANDARD);
ASSERT(bNameValid);
m_wndToolBar.SetWindowText(strToolBarName);
CString strCustomize;
bNameValid = strCustomize.LoadString(IDS_TOOLBAR_CUSTOMIZE);
ASSERT(bNameValid);
m_wndToolBar.EnableCustomizeButton(TRUE, ID_VIEW_CUSTOMIZE, strCustomize);
// 允许用户定义的工具栏操作:
InitUserToolbars(NULL, uiFirstUserToolBarId, uiLastUserToolBarId);
if (!m_wndStatusBar.Create(this))
{
TRACE0("未能创建状态栏\n");
return -1; // 未能创建
}
m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT));
// TODO: 如果您不希望工具栏和菜单栏可停靠,请删除这五行
m_wndMenuBar.EnableDocking(CBRS_ALIGN_ANY);
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
m_newToolBar.EnableDocking(CBRS_ALIGN_ANY); // 这是要加的代码
EnableDocking(CBRS_ALIGN_ANY);
DockPane(&m_wndMenuBar);
DockPane(&m_wndToolBar); // 这是要加的代码
DockPane(&m_newToolBar);
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(theApp.m_bHiColorIcons ? IDR_MAINFRAME_256 : IDR_MAINFRAME))
{
TRACE0("未能创建工具栏\n");
return -1; // 未能创建
}
// 这是要加的代码
if (!m_newToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_RIGHT | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
!m_newToolBar.LoadToolBar(IDR_TOOLBAR1))
{
TRACE0("未能创建工具栏\n");
return -1; // fail to create
} //创建一个靠在窗体右边的工具栏
// 到这里结束了
CString strToolBarName;
bNameValid = strToolBarName.LoadString(IDS_TOOLBAR_STANDARD);
ASSERT(bNameValid);
m_wndToolBar.SetWindowText(strToolBarName);
CString strCustomize;
bNameValid = strCustomize.LoadString(IDS_TOOLBAR_CUSTOMIZE);
ASSERT(bNameValid);
m_wndToolBar.EnableCustomizeButton(TRUE, ID_VIEW_CUSTOMIZE, strCustomize);
// 允许用户定义的工具栏操作:
InitUserToolbars(NULL, uiFirstUserToolBarId, uiLastUserToolBarId);
if (!m_wndStatusBar.Create(this))
{
TRACE0("未能创建状态栏\n");
return -1; // 未能创建
}
m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT));
// TODO: 如果您不希望工具栏和菜单栏可停靠,请删除这五行
m_wndMenuBar.EnableDocking(CBRS_ALIGN_ANY);
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
m_newToolBar.EnableDocking(CBRS_ALIGN_ANY); // 这是要加的代码
EnableDocking(CBRS_ALIGN_ANY);
DockPane(&m_wndMenuBar);
DockPane(&m_wndToolBar); // 这是要加的代码
DockPane(&m_newToolBar);
展开全部
是不是这里的问题:
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockPane(&m_wndToolBar);
DockControlBar(&m_wndToolBar);
可以改成以下语句试试:
EnableDocking(CBRS_ALIGN_ANY);
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndToolBar);
如果不行的话,可以将代码发给我,帮你看看!
邮箱: leewycyp@hotmail.com
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockPane(&m_wndToolBar);
DockControlBar(&m_wndToolBar);
可以改成以下语句试试:
EnableDocking(CBRS_ALIGN_ANY);
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndToolBar);
如果不行的话,可以将代码发给我,帮你看看!
邮箱: leewycyp@hotmail.com
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
留下你的邮箱,这里有字符限制。
追问
258382866@qq.com 这是我的邮箱
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询