以Custom Control为例:
一、 使用前的准备
1 新建一个基于对话框的MFC程序ReportControlTest。
2 添加对XT Toolkit Pro 的引用。
添加对头文件“XTToolkitPro.h”的引用。假设Xtreme ToolkitPro的目录下的源文件夹的路径为“D:\Software\Software Development\vs6.0\Xtreme ToolkitPro v11.2.2-src\Source”,该目录下包含有文件“XTToolkitPro.h”和其他的一些源文件,然后右键单击工程ReportControlTest弹出右键菜单,选择Settings->c/c++->Catrgory:Preprocessor->Additional include directories: “D:\Software\Software Development\vs6.0\Xtreme ToolkitPro v11.2.2-src\Source”。
然后在StdAfx.h文件中添加对文件“XTToolkitPro.h”的引用,如:
#include <XTToolkitPro.h> // Codejock Software Components
在XTToolkitPro.h中包含了其他所有的.h头文件的调用,如
#if defined(_XTP_INCLUDE_DEPRECATED)
#include "Common/XTPDeprecated.h"
#endif
#if !defined(_XTP_EXCLUDE_COMMON)
#include "Common/Includes.h" // _XTP_INCLUDE_COMMON
#endif。
3 添加对.lib文件的调用
假设在debug 下需要ToolkitPro1122vc60D.lib 文件在“D:\Software\Software Development\vs6.0\Xtreme ToolkitPro v11.2.2-src\lib\vc60” 下,那么给工程添加lib路径:
Settings->Link-> Additional library path directories: “D:\Software\Software Development\vs6.0\Xtreme ToolkitPro v11.2.2-src\ lib\vc60”,在XTToolkitPro.h文件中添加了对该Lib文件的调用。
4 将ToolkitPro1122vc60D.dll拷到当前exe文件目下下,如debug文件夹下。
5 运行程序,如果出现编译错误:atal error C1076: compiler limit : internal heap limit reached; use /Zm to specify a higher limit,这是因为内存不够。/Zm指定预编译头的内存分配限制,可以修改内存分配。
Settings->c/c++->project options: 在最后有/c,在/c前添加一个/Zm200,200指定分配内存是100M。
6. 在窗体IDD_REPORTCONTROLTEST_DIALOG上添加一个 Custom Control
设置其属性如下:
ID: IDC_REPORTCTRL
7. 在源文件中将控件IDC_REPORTCTRL与实际的ReportControl 绑定。注意,由于在ClassWizard中不能识别CXTPReportControl类,所以必须手动修改。
a. 给窗体类添加一个CXTPReportControl类的变量 m_wndReportCtrl;
如在ReportControlTestDlg.h头文件中添加如下:
//{{AFX_DATA(CReportControlTestDlg)
enum { IDD = IDD_REPORTCONTROLTEST_DIALOG };
// NOTE: the ClassWizard will add data members here
CXTPReportControl m_wndReportCtrl;
//}}AFX_DATA
b. 将控件IDC_REPORTCTRL与变量m_wndReportCtrl 绑定,有两种方法:
(1)在ReportControlTestDlg.cpp文件的DoDataExchange()中修改如下:
void CReportControlTestDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CReportControlTestDlg)
// NOTE: the ClassWizard will add DDX and DDV calls here
DDX_Control(pDX, IDC_REPORTCTRL, m_wndReportCtrl);
//}}AFX_DATA_MAP
}
(2)采用SubclassDlgItem子类化一个控件,将派生类的控件对象与对话框中的基类控件相连接
m_wndReportCtrl.SubclassDlgItem(IDC_REPORTCTRL, this);
//SubclassDlgItem子类化一个控件,将派生类的控件对象与对话框中的基类控件相连接
8. 开始使用m_wndReportCtrl。