zoukankan      html  css  js  c++  java
  • 深入浅出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类完成。

  • 相关阅读:
    JQuery中的AJAX
    (十六)JQuery Ready和angularJS controller的运行顺序问题
    Excel自己定义纸张打印设置碰到无法对上尺寸的问题
    MVC整个样例的源代码
    将Image转化为BufferImage
    Graphics samples2
    Graphics samples
    please tell me the error about java Graphics
    获取网络资源大小
    java通过地址获取主机名
  • 原文地址:https://www.cnblogs.com/pangblog/p/3331123.html
Copyright © 2011-2022 走看看