| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5478 人关注过本帖, 4 人收藏
标题:在View中使用PlotLab
只看楼主 加入收藏
hlmzrdongdong
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖北武汉
等 级:版主
威 望:1
帖 子:99
专家分:145
注 册:2008-10-24
结帖率:100%
收藏(4)
 问题点数:0 回复次数:10 
在View中使用PlotLab
最近一直在钻研PlotLab_VC库,发现PlotLab_VC帮助文档里只给出了如何在对话框里使用PlotLab的例程,没有在View中使用的例子,今晚试了一些,终于在View下试验成功了。先上图看看。
图片附件: 游客没有浏览图片的权限,请 登录注册

我建立了一个SDI工程,名为Test。
第一步,在TestView.h中该如下代码
程序代码:
// TestView.h : interface of the CTestView class
//
/////////////////////////////////////////////////////////////////////////////

#if !defined(AFX_TESTVIEW_H__63DC1CE4_B0BF_4911_B9F3_1644DD0D5E10__INCLUDED_)
#define AFX_TESTVIEW_H__63DC1CE4_B0BF_4911_B9F3_1644DD0D5E10__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include <CSLScope.h>//////////////添加的代码

class CTestView : public CView
{
protected: // create from serialization only
    CTestView();
    DECLARE_DYNCREATE(CTestView)

// Attributes
public:
    CTestDoc* GetDocument();

// Operations
public:
    CTSLScope scope;/////////添加的代码
    bool bScopeCreated;//////////添加的代码
    int counter;/////////////添加的代码

// Overrides
    // ClassWizard generated virtual function overrides
    //{{AFX_VIRTUAL(CTestView)
    public:
    virtual void OnDraw(CDC* pDC);  // overridden to draw this view
    virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
    virtual void OnInitialUpdate();
    protected:
    virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);
    virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo);
    virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo);
    //}}AFX_VIRTUAL

// Implementation
public:
    virtual ~CTestView();
#ifdef _DEBUG
    virtual void AssertValid() const;
    virtual void Dump(CDumpContext& dc) const;
#endif

protected:

// Generated message map functions
protected:
    //{{AFX_MSG(CTestView)
    afx_msg void OnSize(UINT nType, int cx, int cy);
    afx_msg void OnDatadraw();
    afx_msg void OnDataclear();
    //}}AFX_MSG
    DECLARE_MESSAGE_MAP()
};

#ifndef _DEBUG  // debug version in TestView.cpp
inline CTestDoc* CTestView::GetDocument()
   { return (CTestDoc*)m_pDocument; }
#endif

/////////////////////////////////////////////////////////////////////////////

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_TESTVIEW_H__63DC1CE4_B0BF_4911_B9F3_1644DD0D5E10__INCLUDED_)

 
第二步,初始化,重写OnInitialUpdate()
程序代码:
void CTestView::OnInitialUpdate() 
{
    CView::OnInitialUpdate();
    
    // TODO: Add your specialized code here and/or call the base class
    //VCL_InitControls(AfxGetApp()->m_pMainWnd->GetSafeHwnd());
    VCL_InitControls(this->GetSafeHwnd());
    scope.Open(this->GetSafeHwnd());
    scope.Title.Text="";//设置示波器标题
    scope.XAxis.AxisLabel.Text="采样点";//设置坐标轴标签
    scope.YAxis.AxisLabel.Text="幅度";
    scope.Color=RGB(0,0,20);//设置背景颜色

    scope.Channels.Add();//添加通道
    scope.Channels[0].Name="通道一";
    scope.Channels[1].Name="通道二";
    VCL_Loaded();
    bScopeCreated=true;
    counter=0;
}

 
第三步,响应WM_SIZE消息
程序代码:
void CTestView::OnSize(UINT nType, int cx, int cy) 
{
    CView::OnSize(nType, cx, cy);
    
    // TODO: Add your message handler code here
    if(bScopeCreated)
    {
        scope.Width=cx;
        scope.Height=cy;
    }
}

 
第四步,绘制数据,在菜中添加数据|绘制和清除菜单,分别添加响应函数
程序代码:
void CTestView::OnDatadraw()//绘制数据曲线 
{
    // TODO: Add your command handler code here
    float SampleDatas[1000];
    for (int i=0;i<1000;i++)
    {
        SampleDatas[i]=rand()-1000;
    }
    scope.Channels[0].Data.SetYData(SampleDatas,1000);
    
    for(i=0;i<1000;i++)
    {
        SampleDatas[i]=(float)(counter++%120)*300-1000;
    }
    scope.Channels[1].Data.SetYData(SampleDatas,1000);
}

void CTestView::OnDataclear() //清除数据曲线
{
    // TODO: Add your command handler code here
    scope.Channels[0].Data.Clear();
    scope.Channels[1].Data.Clear();
    scope.Hold=false;
}

 
最后奉上源代码,共同学习,共同进步
Test.rar (35.92 KB)


[ 本帖最后由 hlmzrdongdong 于 2012-5-14 21:42 编辑 ]
搜索更多相关主题的帖子: interface 
2012-05-14 21:39
lchh04050211
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2012-7-2
收藏
得分:0 
还其它有资料吗。这个控件太难弄了
2012-07-02 16:33
abaoliiu
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2012-10-22
收藏
得分:0 
收了,谢谢
2012-10-22 21:10
nuanfeng0424
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2013-8-15
收藏
得分:0 
PlotLab_VC库这个能发一份给我不 网上没破解
2013-08-15 22:18
xwdcjlu
Rank: 1
等 级:新手上路
帖 子:12
专家分:2
注 册:2013-9-5
收藏
得分:0 
PlotLab_VC库安装以后怎么用呢
2013-09-05 18:08
zsvsdq
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2014-5-26
收藏
得分:0 
很好很强大,向您学习
2014-05-26 11:25
快捷方程式
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2014-5-29
收藏
得分:0 
慷慨
2014-05-29 16:35
flyingcatkin
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2014-8-25
收藏
得分:0 
回复 5 楼 xwdcjlu
很好很强大

[ 本帖最后由 flyingcatkin 于 2014-9-3 13:56 编辑 ]
2014-08-26 14:54
超级蒜苗
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2016-2-19
收藏
得分:0 
值得学习,支持一下
2016-02-19 18:38
yp19892012
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2013-1-5
收藏
得分:0 
谢谢了!!!!!!!!!
2016-08-28 10:43
快速回复:在View中使用PlotLab
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020842 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved