深入浅出CChart 每日一课——快乐高四第十四课 枝头红杏,Win32标准控件ChartCtrl之围城

本节课笨笨继续介绍ChartCtrl控件在DuiLib中的应用。

请大家先复习高四第三课。

本节课的方法和这一课的方法差不多,由于笨笨提供了ChartCtrl这个新工具,所以编程可以有一定的简化。

首先,XML文件和高四第三课完全一样。

其次,cpp文件只有CreateControl部分有所修改,如下。当然,前面那个CChartWnd变量不需要了。

virtual CControlUI* CreateControl(LPCTSTR pstrClassName)
    {
        if (_tcsicmp(pstrClassName, _T("Wnd")) == 0)
        {
            CWndUI  *pUI  = new CWndUI;
            HWND    hWnd  = CreateWindow(_T("ChartCtrl"), _T("win32"), WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON, 0, 0, 0, 0, m_PaintManager.GetPaintWindow(), NULL, NULL, NULL);
            pUI->Attach(hWnd);  

            CChart *chart = GetChart(hWnd);
			chart->AddPoint2D(1, 1);
			chart->AddPoint2D(2, 2);
			chart->AddPoint2D(3, 2);
			chart->AddPoint2D(4, 1);

            return pUI;
        }
        //return NULL;
		return WindowImplBase::CreateControl(pstrClassName);
    }

可以看到,这里利用CreateWindow直接创建了一个ChartCtrl窗口,而高四第三课创建的是一个Button窗口,再粘一个CChartWnd。

效果如图。

和高四第三课一模一样!!

从代码量来说,两节课差不多。本课的方法有什么好处吗?

呵呵,这是个秘密,一般人我不告诉他哟!

其实,好处就在于本节课的方法可以创建多个窗口。在笨笨目前实现的CChart版本里,只能对一个窗口句柄Attach,创建第二个窗口,对其Attach就会失败。当然,高四第八课的方法也可以创建多个窗口,不过那里需要自己编写窗口函数,没有本课这么简洁。

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

时间: 2024-12-21 20:00:08

深入浅出CChart 每日一课——快乐高四第十四课 枝头红杏,Win32标准控件ChartCtrl之围城的相关文章

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

各位用过CChart的小伙伴们,笨笨的这个控件还算好使吧. 慢着,慢着,让我想想,CChart是一个控件吗?好像顶多就是一个类库吧,根本就不是正儿八经的控件. 呵呵,本节课就给大家介绍一下CChart怎么作为一个Windows标准控件来使用. 还是按前面的规矩吧. 第一步,建立一个基于对话框的MFC程序LessonA12. 第二步,在LessonA12.h文件的头部加入CChart头文件和函数库的引用. 第三步,在主对话框中删除掉原来那个标签,并添加一个Custom Control控件.设置其I

深入浅出CChart 每日一课——快乐高四第十三课 月上柳梢,Win32标准控件ChartCtrl之牵手

上节课笨笨介绍了新增加的ChartCtrl控件,是在对话框中使用的.本节课简单介绍这个控件的另一种用法. 首先按照以前的步骤建立一个Win32Application. 增加WM_CREATE消息的响应例程如下. case WM_CREATE: HWND hW; hW = CreateWindow(_T("ChartCtrl"), _T("Cap"), WS_CHILD | WS_VISIBLE, 20, 20, 600, 400, hWnd, NULL, hInst

深入浅出CChart 每日一课——快乐高四第十一课 不离不弃,利用CChartWnd实现多区域绘图

笨笨在前面的课程里面提到,在一个窗口上不能粘多个CChartWnd,否则图像不正常,故而在高四6到8课,均使用CChart类,实现了在普通窗口.对话框窗口.DuiLib窗口上的多区域绘图. 使用CChart类必须手动处理消息,而采用CChartWnd类省去了处理消息的步骤,编程更为简便. 近几天笨笨进行了一些改进,采用CChartWnd类也可以在一个窗口上多区域绘图了. 1 首先按照前面的步骤建立一个基于Win32 Application的程序,名为LessonA11. 2 在WndProc函数

深入浅出CChart 每日一课——快乐高四第十六课 老马识途,ChartCtrl控件在WTL中的使用

这几天有个朋友想在WTL下使用ChartCtrl控件,因此笨笨在这里也写一个简单的教程. 要使用WTL当然要先安装它. 笨笨在这里介绍两个例子,一个是WTL对话框界面,一个是WTL单文档SDI界面. A16.1 WTL对话框界面 第一步,首先用AppWizard建立一个基于对话框的WTL程序LessonA16. 第二步,在主对话框资源IDD_MAINDLG上添加一个Custom Control控件,其ID设置为IDC_CHART,class设置为ChartCtrl. 第三步,拷贝库文件. 第四步

深入浅出CChart 每日一课——快乐高四第七课 铁蛋的竹马,返璞归真之对话框窗口多区域绘图

上一课笨笨给大家介绍的是在普通窗口上多区域绘图,本课将介绍对话框下的情形.由于对话框的消息循环和普通窗口有一些区别,所以在具体操作上略有不同,下面的处理过程可以供大家参考. 第一步,打开VC,建立一个基于MFC AppWizard(exe)向导的项目LessonA07.向导中选择Dialog Based,其它不做任何更改,直接点Finish. 第二步,拷贝库文件到LessonA07文件夹中, 第三步,在VC界面的资源编辑器中,删除掉对话框中间的"TODO: 在这里设置对话控制."这个标

前端每日实战:158# 视频演示如何用纯 CSS 创作一个雨伞 toggle 控件

效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/pxLbjv 可交互视频 此视频是可以交互的,你可以随时暂停视频,编辑视频中的代码. 请用 chrome, safari, edge 打开观看. https://scrimba.com/p/pEgDAM/cMV8euJ 源代码下载 每日前端实战系列的全部源代码请从 github 下载: https://github.com/comehope/f

深入浅出CChart 每日一课——快乐高四第九课 于无声处,CChart内置功能介绍之数据存取篇

笨笨长期以来一直使用Origin软件画图和处理数据,但Origin软件没有编程语言的接口.笨笨开发CChart的一个潜在的目标.是想实现Origin软件的功能.当然这是一个不可能达到的目标.Origin软件的功能太强了.笨笨仅仅能膜拜. 下节课将介绍CChart内置的数据处理功能,这是笨笨向Origin的致敬. 在这之前.本节课首先介绍一下CChart内置的数据存取功能. A9.1 CChart数据保存 假定我们绘制了如图的两条曲线. 假设要保存全部曲线数据,请点击右键菜单"曲线数据-->

深入浅出CChart 每日一课——快乐高四第十课 见微知著,CChart内置功能介绍之数据处理篇

CChart内置数据处理功能默认是不打开的.要打开数据处理功能,请点击菜单"绘图状态-->特别功能-->允许数据处理",这时菜单"曲线数据-->数据名"下,将多出一个"数据处理"菜单,如图所示. 可以看到,笨笨内置了四种数据处理功能,线性变换.微积分.数据平滑.数据拟合. A10.1线性变换 "线性变换"菜单提供了三个功能,分别是偏移.缩放.变换.这三个功能都非常简单,只要看看弹出的对话框就全明白了. 可见,

高并发第十四弹:线程池的介绍及使用

单线程就不说了因为简单,并且 在实际的生产环境中一般必须来说 线程资源都是由线程池提供线程资源的. 线程池的好处 重用存在的线程,减少对象创建.消亡的开销,性能好 可有效控制最大并发线程数,提高系统资源利用率,同时可以避免过多资源竞争,避免阻塞. 提供定时执行.定期执行.单线程.并发数控制等功能. 在线程池的类图中,我们最常使用的是最下边的Executors,用它来创建线程池使用线程.那么在上边的类图中,包含了一个Executor框架,它是一个根据一组执行策略的调用调度执行和控制异步任务的框架,