标签: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安全策略的设置,主要是动态库进程空间的管理方式。
为保险起见,还是多写这么一行吧。// 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)); }
CChart *GetChart(HWND hWnd);
我们看到这个函数非常简单,只有一个参数,这个参数是一个窗口句柄。这里就要注意了,不是任何窗口都能获得CChart指针的哟,使用这个函数之前请确认这个窗口是一个ChartCtrl控件窗口。
获得CChart指针以后,需要干什么我想小伙伴们都明白了,就像洞房之夜,不需要笨笨来指导吧,哈哈。
好了,现在运行程序,效果如图。
可以看到,利用ChartCtrl控件编程也是非常非常简洁的。
版权声明:本文为博主原创文章,未经博主允许不得转载。
深入浅出CChart 每日一课——必也正名,Win32标准控件ChartCtrl之初识
标签:cchart chartctrl windows标准控件
原文地址:http://blog.csdn.net/benbenlixin/article/details/48106383