这几天有个朋友想在WTL下使用ChartCtrl控件,因此笨笨在这里也写一个简单的教程。
要使用WTL当然要先安装它。
笨笨在这里介绍两个例子,一个是WTL对话框界面,一个是WTL单文档SDI界面。
A16.1 WTL对话框界面
第一步,首先用AppWizard建立一个基于对话框的WTL程序LessonA16。
第二步,在主对话框资源IDD_MAINDLG上添加一个Custom Control控件,其ID设置为IDC_CHART,class设置为ChartCtrl。
第三步,拷贝库文件。
第四步,打开maindlg.h,在其头部加入头文件和导入库文件的引用。
第五步,在OnInitDialog函数里面,找到returnTRUE;这句话,在其前面添加代码如下。
HWND hWnd = GetDlgItem(IDC_CHART);
CChart *chart = GetChart(hWnd);
int i;
for(i=-10; i<=10; i++)
{
chart->AddPoint2D(i, i*i);
}
运行程序,结果如图。
A16.2 WTL单文档界面
第一步,首先用AppWizard建立一个基于对话框的WTL单文档SDI程序LessonA16_1。
第二步,拷贝库文件。
第三步,打开LessonA16_1view.h文件,在其头部加入CChart头文件和导入库文件的引用。
第四步,响应WM_CREATE消息。
在BEGIN_MSG_MAP和END_MSG_MAP之间,加入下面一行。
MESSAGE_HANDLER(WM_CREATE, OnCreate)
增加OnCreate函数如下。
LRESULT OnCreate(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
{
HWND hWnd = CreateSubChartWnd(m_hWnd, kTypeXY, _T("Chart"), 0, 0, 600, 400);
CChart *chart = GetChart(hWnd);
for(int i=-10; i<=10; i++)
{
chart->AddPoint2D(i, i*i);
}
return 0;
}
这里笨笨是用CreateSubChartWnd创建的窗口,实际上这是CreateWindow的一个简单封装,同学们完全可以用CreateWindow来实现。
好了,第二个程序也已经完成,效果如下。
这节课主要是介绍笨笨新增加的ChartCtrl控件在WTL下的使用,供有需要的小伙伴参考。