深入浅出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之后,就相当于出租房转手好几道,消 ...
随机推荐
- poj 1703(带权并查集)
Find them, Catch them Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 31840 Accepted: ...
- PCRE的安装及使用
摘自http://www.cnblogs.com/renhao/archive/2011/08/17/2143264.html PCRE的安装及使用 1.主页地址:http://www.pcre.or ...
- eclipse中误删了servers文件
Eclipse中误删了servers文件,需要重新添加tomcat服务器,这时就会遇到在New Server对话框中选择了Tomcat 6/7后却无法单击"Next"按钮的问题,如 ...
- Unsupported Media Type 415问题解决办法(Ajax)
场景:Ajax传一个json对象到服务器,让参数自动封装至与json对象匹配的java对象中. 错误类型 错误类型1: "status":415 "error" ...
- A Bug's Life
#include<stdio.h> #include<string.h> ],num[]; int find(int x){ int r=x; while(r!=bug[r]) ...
- Splay POJ3468(老题新做)
A Simple Problem with Integers Time Limit:5000MS Memory Limit:131072KB 64bit IO Format:%I64d ...
- JNI_最简单的Java调用C/C++代码
JNI_最简单的Java调用C/C++代码 JNI.是Java Native Interface的简称,中文是"Java本地调用".通过这种技术能够做到下面两点: Java程序中的 ...
- apache 日志中记录代理IP以及真实客户端IP
vim /usr/local/apach2/conf/httpd.conf 默认情况下log日志格式为:LogFormat "%h %l %u %t \"%r\" %&g ...
- jquery优化引发的思考
无意间看到jquery优化的一个细节让我觉得不可思议记录一下.仅仅只是换个地方代码就能提高数倍的效率,带给我的不是个仅是个小技巧,而是一总编程思想,技术大牛往往是在细节上体现. 通过缓存最小化选择操作 ...
- .net 链接oracle
虽然EF6都快要出来了,但是对于Oracle数据库,仍然只能用DB first和Model First来编程,不能用Code First真是一个很大的遗憾啊. 好了,废话少说,我们来看看EF中是如何用 ...