我从网上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;
展开
 我来答
匿名用户
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);
leewycyp
2011-06-10 · TA获得超过134个赞
知道小有建树答主
回答量:107
采纳率:0%
帮助的人:159万
展开全部
是不是这里的问题:
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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
分通物流
2011-06-05 · TA获得超过193个赞
知道小有建树答主
回答量:242
采纳率:100%
帮助的人:98.9万
展开全部
留下你的邮箱,这里有字符限制。
追问
258382866@qq.com 这是我的邮箱
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式