bcgcontrolbar pro for mfc怎么使用

2025-05-15 16:15:12
推荐回答(1个)
回答1:

XTToolkitPro使用1开发环境2添加SDI程序的CommandBar和MenuBar支持2定制toolbars和menus的支持3添加自定义的主题支持5添加DockingPanes支持6发现定义在XTPDeprecated.h中的符号,为废弃符号,修改为新符号即可9添加智能菜单支持9添加自定义特性的派生控件9VisualStudio2008+XTToolkitProv11.21、创建MFC的SDI应用程序2、在stdafx.h添加#include//XtremeToolkitProcomponentlibrary3、修改mainfrm.h的CMainFrame基类,MDI对应为CXTPMDIFrameWndclassCMainFrame:publicCXTPFrameWnd4、修改CMainFrame::OnCreate函数//Initializethecommandbarsif(!InitCommandBars())return-1;//Getapointertothecommandbarsobject.CXTPCommandBars*pCommandBars=GetCommandBars();if(pCommandBars==NULL){TRACE0("Failedtocreatecommandbarsobject.\n");return-1;//failtocreate}//AddthemenubarCXTPCommandBar*pMenuBar=pCommandBars->SetMenu(_T("MenuBar"),IDR_MAINFRAME);if(pMenuBar==NULL){TRACE0("Failedtocreatemenubar.\n");return-1;//failtocreate}//CreateToolBarCXTPToolBar*pToolBar=(CXTPToolBar*)pCommandBars->Add(_T("Standard"),xtpBarTop);if(!pToolBar||!pToolBar->LoadToolBar(IDR_MAINFRAME)){TRACE0("Failedtocreatetoolbar\n");return-1;}//SetOffice2003ThemeCXTPPaintManager::SetTheme(xtpThemeOffice2003);注释掉以下几行//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("未能创建工具栏\n");//return-1;//未能创建//}/*m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);EnableDocking(CBRS_ALIGN_ANY);DockControlBar(&m_wndToolBar);*/5、如果需要重载CMainFrame::PreTranslateMessage和CMainFrame::OnCmdMsg,修改如下BOOLCMainFrame::PreTranslateMessage(MSG*pMsg){//TODO:Addyourspecializedcodehereand/orcallthebaseclassreturnCXTPMDIFrameWnd::PreTranslateMessage(pMsg);}BOOLCMainFrame::OnCmdMsg(UINTnID,intnCode,void*pExtra,AFX_CMDHANDLERINFO*pHandlerInfo){//TODO:Addyourspecializedcodehereand/orcallthebaseclassreturnCXTPMDIFrameWnd::OnCmdMsg(nID,nCode,pExtra,pHandlerInfo);}6、编译运行,出现Offiice2003主题风格的应用程序1、在CMainFrm类增加响应ON_COMMAND的消息XTP_ID_CUSTOMIZE支持在mainfrm.cpp中修改BEGIN_MESSAGE_MAP(CMainFrame,CMDIFrameWnd)//{{AFX_MSG_MAP(CMainFrame)ON_WM_CREATE()//}}AFX_MSG_MAPON_COMMAND(XTP_ID_CUSTOMIZE,OnCustomize)END_MESSAGE_MAP()在mainfrm.h中修改//{{AFX_MSG(CMainFrame)afx_msgintOnCreate(LPCREATESTRUCTlpCreateStruct);//}}AFX_MSGafx_msgvoidOnCustomize();DECLARE_MESSAGE_MAP()2、在mainfrm.cpp中增加voidCMainFrame::OnCustomize(){//Getapointertothecommandbarsobject.CXTPCommandBars*pCommandBars=GetCommandBars();if(pCommandBars!=NULL){//Instanciatethecustomizedialogobject.CXTPCustomizeSheetdlg(pCommandBars);//Addtheoptionspagetothecustomizedialog.CXTPCustomizeOptionsPagepageOptions(&dlg);dlg.AddPage(&pageOptions);//Addthecommandspagetothecustomizedialog.CXTPCustomizeCommandsPage*pCommands=dlg.GetCommandsPage();pCommands->AddCategories(IDR_MDISAMTYPE);//Usethecommandbarmanagertoinitializethe//customizedialog.pCommands->InsertAllCommandsCategory();pCommands->InsertBuiltInMenus(IDR_MDISAMTYPE);pCommands->InsertNewMenuCategory();//Dispalythedialog.dlg.DoModal();}}3、添加CMainFrm类的对commandbar和menubar的定制配置序列化支持intCMainFrame::OnCreate(LPCREATESTRUCTlpCreateStruct){//Loadthepreviousstatefortoolbarsandmenus.LoadCommandBars(_T("CommandBars"));return0;}voidCMainFrame::OnClose(){//Savethecurrentstatefortoolbarsandmenus.SaveCommandBars(_T("CommandBars"));CMDIFrameWnd::OnClose();}4、资源包含,查看rc2资源文件代码,添加xttoolkitpro.rc,在资源附加目录中添加xttoolkitpro.rc所在目录5、编译运行,发现定制化工具栏和菜单的资源没有加载进来,如图标、字符串等,解决方法是修改字符资源语言为英文(这里编译的是英文资源的lib库,根据自己需要也可以编译中文资源的lib库)