应用程序迁移至Xtreme Toolkit proWord格式文档下载.docx
《应用程序迁移至Xtreme Toolkit proWord格式文档下载.docx》由会员分享,可在线阅读,更多相关《应用程序迁移至Xtreme Toolkit proWord格式文档下载.docx(7页珍藏版)》请在冰豆网上搜索。
dockwindow的创建
添加对toolbar和menu的定制
添加智能菜单
为应用程序添加一个theme准备你的应用程序首先你要做的是改变你的StdAfx.h文件中的include文件。
这个文件常用来引进
所有的toolkit的类定义并把你的程序连接到toolkit。
你需要打开你的StdAfx.h文件,
把#include&
lt;
XTToolKit.h&
gt;
改为#include&
XTPToolkit.h&
,例如:
#include&
XTToolkitPro.h&
//XtremeToolkitProcomponents重新命名你的基类
下来你需要改变一些基类。
你得把所有出现的CXT&
#8230;
改为C&
,比如在一个MDI程序中,
CXTMDIChildWnd要变成CMDIChildWnd,CXTMDIFrameWnd要变成CMDIFrameWnd。
对一个SDI程序,CXTFrameWnd要变成CFrameWnd。
下面是一个所有需要改变为起初的
MFC命名惯例的类的列表。
这是你的程序返
回到迁移时的一个好的起点。
ToolkitClassNameMFCClassName(renameto)
CXTFrameWndCFrameWnd
CXTMDIChildWndCMDIChildWnd
CXTMDIFrameWndCMDIFrameWnd
CXTOleIPFrameWndCOleIPFrameWnd
CXTControlBarCControlBar
CXTDialogBarCDialogBar
CXTReBarCReBar
CXTReBarCtrlCReBarCtrl其他缺失的类以下的类在XtremeToolkit的专业版中不再出现。
在新的体系中,他们或是被代替或
是被废弃。
这些类中的大多数你不能再直接使用;
但在这里把它们列出来作为你的参
考:
ToolkitClassName
CXTAccelSwapOutItemListCXTCustOptionsCXTPopupTearOffWnd
CXTAccelManagerCXTCustomizeSheetCXTPopupColorTearOff
CXTCBarDialogCXTDockBarCXTPopupToolbarTearOff
CXTCommandsListBoxCXTDockColorSelectorCXTPreviewView
CXTItemDataCXTDockContextCXTSplitterDock
CXTCoolMenuCXTDockWindowCXTSplitterRowDock
CXTMenuCXTFrameImplCXTToolBar
CXTCustomToolBarCXTStringCXTToolBarCtrl
CXTCustToolBarPageCXTMenuBarItemCXTPopupWndToolbar
CXTCustCommandsPageCXTMenuBarCXTToolBarPopupWndHook
CXTCustAcceleratorsCXTMiniDockFrameWndCXTToolBarPopupWnd
CXTCustToolsCXTNewToolbarDlgCXTToolsManager开始改变你的主框架的继承关系
现在你的程序已经不再涉及标准版本的东西了,我们可以开始迁移了。
现在你已经
更新了你的StdAfx.h文件,在你的MainFrm.h文件中改变你的基类为CXTPMDIFrameWnd
(对MDI程序)和CXTPFrameWnd(对SDI程序):
classCMainFrame:
publicCXTPMDIFrameWnd
{
...
};
如果你重载了PreTranslateMessage请确保你调用了CXTPMDIFrameWnd基类,例如:
BOOLCMainFrame:
:
PreTranslateMessage(MSG*pMsg)
//TODO:
Addyourspecializedcodehereand/orcallthebaseclassreturnCXTPMDIFrameWnd:
PreTranslateMessage(pMsg);
}
另外,如果你重载了OnCmdMsg请确保你调用了CXTPMDIFrameWnd基类,例如:
OnCmdMsg(UINTnID,intnCode,
void*pExtra,AFX_CMDHANDLERINFO*pHandlerInfo)
OnCmdMsg(nID,nCode,pExtra,pHandlerInfo);
}Commandbar的初始化Commandbar在使用之前必须进行初始化,而且它们必须在所有的controlbar对象(
比如你的statusbar)创建之后再被创建。
这是你为commandbar设置theme的好地方。
在标准版中你需要调用xtAfxData.bXPMode=true;
设置theme为OfficeXP。
在专业版中
对每个组件你有theme
managers。
这允许你定义你自己的theme或者选用toolkit中已定义的theme。
这是一个如何初始化controlbar的例子:
intCMainFrame:
OnCreate(LPCREATESTRUCTlpCreateStruct)
if(CMDIFrameWnd:
OnCreate(lpCreateStruct)==-1)
return-1;
//CreateStatusbar.
//Important:
AllcontrolbarsincludingtheStatusBar
//mustbecreatedbeforeCommandBars....
if(!
m_wndStatusBar.Create(this)||
!
m_wndStatusBar.SetIndicators(indicators,
sizeof(indicators)/sizeof(UINT)))
TRACE0("
Failedtocreatestatusbar\n"
);
//failtocreate
}//Initializethecommandbars
InitCommandBars())
//Getapointertothecommandbarsobject.
CXTPCommandBars*pCommandBars=GetCommandBars();
if(pCommandBars==NULL)
Failedtocreatecommandbarsobject.\n"
}//SetOffice2003Theme
CXTPPaintManager:
SetTheme(xtpThemeOfficeXP);
return0;
使用coolmenu请注意:
在应用程序中不再有必要调用InstallCoolMenus初始化菜单的theme。
这由commandbar的thememanager来处理。
menubar的创建你需要更改你的代码使用pro版本的menubar。
使用了标准版toolkit的程序参
考CMainFrame:
OnCreate的CXTMenuBar对象。
在这里m_wndMenuBar对象被创建,
允许停靠被调用使menubar可以停靠在程序的工作区。
在专业版中做法有些不同,
没必要调用允许停靠了,例如:
}//Addthemenubar
CXTPCommandBar*pMenuBar=pCommandBars-&
SetMenu(
_T("
MenuBar"
),IDR_MDISAMTYPE);
if(pMenuBar==NULL)
Failedtocreatemenubar.\n"
}//Removetheoldmenubarcode...
//if(!
m_wndMenuBar.CreateEx(this,TBSTYLE_FLAT,WS_CHILD|WS_VISIBLE|CBRS_TOP
//|CBRS_GRIPPER|CBRS_TOOLTIPS|CBRS_FLYBY|CBRS_SIZE_DYNAMIC)||
//!
m_wndMenuBar.LoadMenuBar(IDR_MAINFRAME))
//{
//TRACE0("
Failedtocreatemenubar\n"
//return-1;
//}//m_wndMenuBar.EnableDocking(CBRS_ALIGN_ANY);
//EnableDocking(CBRS_ALIGN_ANY);
//DockControlBar(&
amp;
m_wndMenuBar);
}toolbar的创建你需要更改你的代码去使用pro版本的toolbar。
相对于menubar,toolbar对象通常
在CMainFrame:
OnCreate中创建,而且调用允许停靠使toolbar停靠到程序的工作区。
Toolbar采用和menubar使用toolbar资源相似的创建方式,例如:
}//CreateToolBar
CXTPToolBar*pToolBar=(CXTPToolBar*)
pCommandBars-&
Add(_T("
Standard"
),xtpBarTop);
pToolBar||!
pToolBar-&
LoadToolBar(IDR_MAINFRAME))
Failedtocreatetoolbar\n"
}//Removetheoldtoolbarcode...
m_wndToolBar.CreateEx(this,TBSTYLE_FLAT,WS_CHILD|WS_VISIBLE|CBRS_TOP
m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
//}
//m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
m_wndToolBar);