深入浅出CChart 每日一课——第十六课 实习之旅,百年老店之新锐WTL
上节课笨笨给大家介绍了CChart在微软MFC框架下的应用,本节课的内容仍然和百年老店微软相关,只不过主角换成WTL了。
不了解WTL的同学可以先找度娘温习一下。度娘在怀,今生何求。郎君啊,你是不是闷得慌,如果你闷得慌给我十娘讲,十娘我为你解忧伤。哦,对不起,笨笨刚才走神了,把度娘当成杜十娘了。
要在WTL下使用CChart,当然首先需要安装WTL。由于笨笨使用的是VC6,笨笨下载的是WTL8.0,并下载了WTL7.1用于辅助安装,具体的方法还得找度娘。
如果同学们使用高版本VC,可以下载WTL8.5。
现在我们开始。
第一步,用VC建立一个基于ATL/WTL Wizard向导的程序,名为Lesson16。在余下的向导步骤中选择默认值,不做任何修改。
第二步,拷贝五个库文件到Lesson16文件夹。
第三步,在VC中打开Lesson16View.h文件,在其头部添加如下代码。
#include "Chart.h"
#ifdef _DEBUG
#pragma comment(lib, "PlotDll_d.lib")
#else
#pragma comment(lib, "PlotDll.lib")
#endif
第四步,在Lesson16View.h文件里面,为CLesson16View类添加一个CChartWnd类型的成员变量。
CChartWnd m_ChartWnd;
第五步,找到Lesson16View.h中如下代码。
BEGIN_MSG_MAP(CLesson16View)
MESSAGE_HANDLER(WM_PAINT, OnPaint)
END_MSG_MAP()
修改成下面这样。
BEGIN_MSG_MAP(CLesson16View)
//MESSAGE_HANDLER(WM_PAINT, OnPaint)
MESSAGE_HANDLER(WM_CREATE, OnCreate)
MESSAGE_HANDLER(WM_DESTROY, OnDestroy)
END_MSG_MAP()
这就是WTL的消息响应,呵呵。
第六步,找到Lesson16View.h中如下代码,删除掉或者屏蔽掉它。
LRESULT OnPaint(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
{
CPaintDC dc(m_hWnd); //TODO: Add your drawing code here return 0;
}
第七步,在Lesson16View.h中加入如下代码。
LRESULT OnCreate(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
{
double *pX, *pY;
int i; if(m_ChartWnd.Attach(m_hWnd, kTypeXY))
{
pX=new double[200];
pY=new double[200];
for(i=0; i<200; i++)
{
pX[i]=(i-100.0)/100.0;
pY[i]=pX[i]*pX[i];
}
m_ChartWnd.GetChart()->AddCurve(pX, pY, 200);
delete []pY;
delete []pX;
m_ChartWnd.GetChart()->SetTitle(_TEXT("在WTL框架中测试CChart")); }
return 0;
}
LRESULT OnDestroy(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
{
m_ChartWnd.Detach();
return 0;
}
完成了!编译并运行程序,效果如图。
在WTL中编程总的感觉和用Win32 Application向导差不多,同学们觉得呢?
上面笨笨采用的是CChartWnd类编程,同学们可以试着改用CChart类完成。
深入浅出CChart 每日一课——第十六课 实习之旅,百年老店之新锐WTL的更多相关文章
- vue.js 第十课-第十六课
第十课: http://note.youdao.com/noteshare?id=25b5ba45286464856f21eb4b6b391ecd&sub=19C4429995384F72BD ...
- NeHe OpenGL教程 第四十六课:全屏反走样
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...
- Kali Linux Web 渗透测试视频教程— 第十六课-拒绝服务攻击
Kali Linux Web 渗透测试视频教程— 第十六课-拒绝服务攻击 文/玄魂 目录 Kali Linux Web 渗透测试视频教程— 第十六课-拒绝服务攻击................... ...
- NeHe OpenGL教程 第三十六课:从渲染到纹理
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...
- NeHe OpenGL教程 第二十六课:反射
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...
- NeHe OpenGL教程 第十六课:雾
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...
- webgl(three.js)3D光伏,3D太阳能能源,3D智慧光伏、光伏发电、清洁能源三维可视化解决方案——第十六课
序: 能源是文明和发展的重要保障,人类命运不可避开的话题,无论是战争还是发展,都有它存在的身影.从石器时代到现代文明,人类的能源应用在进步,也在面临能源枯竭的危机与恐惧,而开发与应用可再生能源才是解决 ...
- 深入浅出CChart 每日一课——第十八课 女神的套娃,玩转对话框
前面笨笨已经给大家展示了CChart编程的N个例子.这些例子中,我们的CChart图像都是绘制在程序的主窗口中的. 在很多情况下,我们面对的情形不是这样的.这节课笨笨就给大家介绍一下怎样在对话框中用C ...
- 深入浅出CChart 每日一课——快乐高四第六课 二丫的青梅,返璞归真之普通窗体多区域画图
有好些朋友给我反映,就是一个窗体中加入好几个CChartWnd之后.工作不正常.这个的确是这样,CChartWnd会接管原来窗体的消息循环,加入多个CChartWnd之后,就相当于出租房转手好几道,消 ...
随机推荐
- hdu1166 树状数组
不知道为什么用C++输入输出死活不过,换成C的就过了... #include <stdio.h> #include <string.h> //================= ...
- Android技术路线图
邮件问题: 老师你好,我从去年就在看你的关于Android的视频了,的确讲的不错,去年看了一段时间,寒假的时候回家重新复习了一下Java基础知识,开学的时候看到你又陆续出了一些视频,这段时间看完了,跟 ...
- java编译相关问题总结
参考:http://jingyan.baidu.com/article/5bbb5a1b080f6113eba179f0.html 1.在linux下生成的class文件/jar包,拿到windows ...
- Atom编辑器
Atom介绍 Github的员工Nathan Sobo在Atom的博客中提到:”Sublime和TextMate十分方便,但是扩展性不足:另一方面,Emacs和 Vim扩展性很强却需要学习日程工作中很 ...
- Eclipse - JAR包制作细节
Eclipse - JAR包制作细节 1.Jar包分为两种,一种是不可运行的,一种是可运行的Jar包,他们的主要区别如下: > 不可直接运行的Jar包主要是用于给别的程序提供调用 ...
- 使用react-native做一个简单的应用-01项目介绍
学习react-native也有一个月的时间了.当学习了关于react-native的基础知识之后,打算自己去仿一个应用去练手.于是花了10天左右的时间,这个小应用的基本功能也实现的差不多了. 在展示 ...
- Python和C#基本算法实现对比
最近在学习python,很多入门的例子又写了一遍,基本上是C#和Python都写了一遍,对比发现语言真是相通啊,只是语法不同而已. python开发也是用的VS,很好用,特别是代码段运行,选中一段py ...
- MySQL基础之 path环境变量的作用 (科普)
在谈mysql配置环境变量之前,先谈一下windows环境变量的作用,有时候在windows cmd窗口运行命令时,经常会出现“XXX不是内部或外部命令的提示” 原因是系统没有找到执行相应命令的文件( ...
- ng事件中为变量的参数
之前学习Angular时碰到过这种问题,绑定事件中传参为变量的问题. 举个例子吧,比如有这么一段代码: <button type='button' ng-click="showMsg( ...
- LayoutInflater的获取方式
1.LayoutInflater是什么? 通俗而讲,就是将xml中定义的布局找出来. 2.获取LayoutInflater的三种方式 1. LayoutInflater inflater = ge ...