码迷,mamicode.com
首页 > Windows程序 > 详细

深入浅出CChart 每日一课——必也正名,Win32标准控件ChartCtrl之初识

时间:2015-08-30 17:30:33      阅读:2678      评论:0      收藏:0      [点我收藏+]

标签:cchart   chartctrl   windows标准控件   

各位用过CChart的小伙伴们,笨笨的这个控件还算好使吧。

慢着,慢着,让我想想,CChart是一个控件吗?好像顶多就是一个类库吧,根本就不是正儿八经的控件。

呵呵,本节课就给大家介绍一下CChart怎么作为一个Windows标准控件来使用。

还是按前面的规矩吧。

第一步,建立一个基于对话框的MFC程序LessonA12。

第二步,在LessonA12.h文件的头部加入CChart头文件和函数库的引用。

第三步,在主对话框中删除掉原来那个标签,并添加一个Custom Control控件。设置其ID为IDC_CHART,并设置其Class为ChartCtrl。这里Class的设置是关键,大小写无所谓,但一个字母也不能差。

如图所示。

技术分享

ChartCtrl就是笨笨编写的这个Windows标准控件的类名,和edit、static等标准控件类似。所谓标准控件,无非就是Windows下注册的一个窗口类,笨笨用“ChartCtrl”这个名字注册了一个窗口类,大家可以直接使用。

第四步,打开LessonA12.cpp,在InitInstance函数里面,添加下面一行。

RegisterChartControl();

这句话实际上就是注册“ChartCtrl”这个窗口类。

注意这一行要写在原来int nResponse = dlg.DoModal();这行代码之前。

实际上,这一行代码不写,基本上也是可以的。因为笨笨在PlotDll.dll这个动态库的DllMain里面已经调用这个函数了。但为什么说是基本上呢?因为笨笨发现在有的机器上可以不写这一行,但有的机器上不写这一行又不行。其中的原因笨笨猜测是Windows安全策略的设置,主要是动态库进程空间的管理方式。

为保险起见,还是多写这么一行吧。
第五步,打开LessonA12Dlg.cpp,在OnInitDialog函数里面,添加如下代码。

// TODO: Add extra initialization here
	CWnd *pWnd = GetDlgItem(IDC_CHART);
	CChart *chart = GetChart(pWnd->m_hWnd);
	int n=100;
	for(int i=-n; i<n; i++)
	{
		chart->AddPoint2D(i/(double)n, i*i/double(n*n));
	}

注意这里的代码,我们利用GetChart()获得了一个CChart类对象的指针。这个函数定义如下。

CChart	*GetChart(HWND hWnd);

我们看到这个函数非常简单,只有一个参数,这个参数是一个窗口句柄。这里就要注意了,不是任何窗口都能获得CChart指针的哟,使用这个函数之前请确认这个窗口是一个ChartCtrl控件窗口。

获得CChart指针以后,需要干什么我想小伙伴们都明白了,就像洞房之夜,不需要笨笨来指导吧,哈哈。

好了,现在运行程序,效果如图。

技术分享

可以看到,利用ChartCtrl控件编程也是非常非常简洁的。


版权声明:本文为博主原创文章,未经博主允许不得转载。

深入浅出CChart 每日一课——必也正名,Win32标准控件ChartCtrl之初识

标签:cchart   chartctrl   windows标准控件   

原文地址:http://blog.csdn.net/benbenlixin/article/details/48106383

(1)
(1)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!