怎么在mfc中添加新的工具栏

怎么在mfc中添加新的工具栏,第1张

在ResourceView里,双击Toolbar,双击IDR_MAINFRAME,

就出现了工具条编辑界面,默认的最右边那个灰按钮就是用来添加新按钮的,

双击它,会d出对话框让你给新按钮取个ID,取完后关掉对话框

就会多出一个按钮,你可以在这个界面下给按钮画下简单的图案

pDocTemplate = new CSingleDocTemplate(

IDR_MAINFRAME,

RUNTIME_CLASS(CMyScrollViewDoc),

RUNTIME_CLASS(CMainFrame), // 主 SDI 框架窗口

RUNTIME_CLASS(CMyScrollViewView))这个函数将文档类视类和框架类结合在一起,这个是单文档的组织形式,所以在单文档中框架类始终没有改变,所以可以动态加载菜单;

pDocTemplate = new CMultiDocTemplate(IDR_questionTYPE,

RUNTIME_CLASS(CquestionDoc),

RUNTIME_CLASS(CChildFrame), // 自定义 MDI 子框架

RUNTIME_CLASS(CquestionView))而这个是多文档的组织形式,可以看到第三个参数变成了CChildFrame,而不是CMainFrame,第一个参数也有所改变看,所以每新建一个多文档就会对应一个CChildFrame,所以动态添加的菜单不会显示在CMainFrame上,多文档不共用框架类

第一个工具栏

if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT,  

    WS_CHILD | WS_VISIBLE | CBRS_TOP |  

    CBRS_FLOAT_MULTI | CBRS_GRIPPER | CBRS_TOOLTIPS |  

    CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||  

    !m_wndToolBar.LoadToolBar(IDR_MAINFRAME))  

{  

    TRACE0("Failed to create toolbar")  

    return -1      // fail to create  

}  

m_wndToolBar.SetWindowText(_T("标准工具栏"))  

m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY)  

EnableDocking(CBRS_ALIGN_ANY)  

DockControlBar(&m_wndToolBar)

第二个工具栏:

if (!m_wndExtendBar.CreateEx(this, TBSTYLE_FLAT,  

    WS_CHILD | WS_VISIBLE | CBRS_TOP |  

    CBRS_FLOAT_MULTI | CBRS_GRIPPER | CBRS_TOOLTIPS |  

    CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||  

    !m_wndExtendBar.LoadToolBar(IDR_EXTEND_BAR))  

{  

    TRACE0(_T("Failed to create extend toolbar"))  

    return -1  

}  

m_wndExtendBar.SetWindowText(_T("扩展工具栏"))  

m_wndExtendBar.EnableDocking(CBRS_ALIGN_ANY)  

CRect rect  

m_wndExtendBar.GetWindowRect(&rect)  

rect.OffsetRect(1, 0)  

this->RecalcLayout()    //关键的一步,重新排列  

DockControlBar(&m_wndExtendBar, AFX_IDW_DOCKBAR_TOP, &rect)

注:第二个工具栏CreateEx必须写在第一个工具栏CreateEx之后,否则还是两行。

MFC并列显示多个工具栏(Toolbar)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11664407.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存