源程序链接
- 首先如上篇文章所示安装XTP,using mfcas static library,使用unicode,编译生成相应lib文件,直至没有错误。
- VC选项设置。Tools|Options
分别配置
头文件路径 C:\Program Files\Codejock Software\MFC\Xtreme ToolkitPro v13.2.1\Source
库文件路径 C:\Program Files\Codejock Software\MFC\Xtreme ToolkitPro v13.2.1\Lib\vc60
资源文件路径 C:\Program Files\Codejock Software\MFC\Xtreme ToolkitPro v13.2.1\Source
(或者在工程中配置additional include path相对路径,更便于移植)
3、新建MDI工程
注意:下一步using mfc as a staticallly linked library要选择,以便与xtp安装时选项配置一致。或者也可以在项目中配置。
如果此步中没有选择using mfc as a statically linked,在工程中可以设置ProjectSettings General选项。
4.在stdafx中添加下面两行代码,对xtp头文件引用
#define _XTP_STATICLINK
#include <XTToolkitPro.h>
在rc2文件中添加如下一行代码,对资源文件的引用
#include <XTToolkitPro.rc>
项目设置,忽略libcd.lib库文件
5、在mainfrm.h文件中替换基类CMDIFrameWnd为CXTPMDIFrameWnd
6.在mainframe的OnCreate中添加工具栏等的创建
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;
// 初始命令工具栏
if (!InitCommandBars())
return -1;
// 得到命令工具栏对象指针.
CXTPCommandBars* pCommandBars = GetCommandBars();
if(pCommandBars == NULL)
{
TRACE0("Failed to create command bars object.\n");
return -1; // fail to create
}
// 添加菜单栏
CXTPCommandBar* pMenuBar = pCommandBars->SetMenu(
_T("Menu Bar"), IDR_MDISAMTYPE);//你自己的菜单栏资源ID,根据工程名有变化 比如工程名为MDI则ID为IDR_MDISAMTYPE
if(pMenuBar == NULL)
{
TRACE0("Failed to create menu bar.\n");
return -1; // fail to create
}
// 制作工具栏
CXTPToolBar* pToolBar = (CXTPToolBar*)
pCommandBars->Add(_T("Standard"), xtpBarTop);
if (!pToolBar || !pToolBar->LoadToolBar(IDR_MAINFRAME))
{
TRACE0("Failed to create toolbar\n");
return -1;
}
// 设置Office 2003 主题
CXTPPaintManager::SetTheme(xtpThemeOffice2003);
return 0;
}
也可以保留状态栏创建代码
if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;
//保留状态栏代码
if (!m_wndStatusBar.Create(this) ||
!m_wndStatusBar.SetIndicators(indicators,
sizeof(indicators)/sizeof(UINT)))
{
TRACE0("Failed to create status bar\n");
return -1; // fail to create
}
// 初始命令工具栏
if (!InitCommandBars())
return -1;
7、编译链接运行
请原谅我的系统桌面主题已经被更改了,因此下面的界面与应用时有所不同,未更改桌面主题情况下应该与上图所示一样。
保留状态栏
可以改变不同的主题风格,只需在CXTPPaintManager中SetTheme
CXTPPaintManager::SetTheme(xtpThemeNativeWinXP);