📄 curvedisp.h
字号:
#if !defined(AFX_CURVEDISP_H__773C3355_A5FA_4677_88B2_5BD625A1C289__INCLUDED_)
#define AFX_CURVEDISP_H__773C3355_A5FA_4677_88B2_5BD625A1C289__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// CurveDisp.h : header file
//
///////////////////////////////////////////////////////////////////////
// 文件名: CurveDisp.cpp
// 创建者: 吴正平
// 创建时间: 2001年8月30日
// 修改时间 2002年5月7日
// 修改时间 2002年12月15日
//为解决断线问题而做的修改(2002.12.15)
//这样也使得该程序只适应于scrollRows=1的情况
// 内容描述: 用于曲线实时显示
/////////////////////////////////////////////////////////////////////////
/*
(1) 定义 CCurveDisp m_CurDis;
(2) 置屏幕滚动方式:m_CurDis.SetDispMode(BOOL mode);
mode = 0 水平滚动 mode = 1 垂直滚动
(3) 创建窗口:
BOOL Create(DWORD dwStyle, const RECT& rect,
CWnd* pParentWnd, UINT nID) ;
(4) 设置要测曲线:
void SetSerie(int s, const char *szTitle,int scaleType,COLORREF color,
int style, double min,double max, double coordLow,double coordHi);
(5) 采样到新数据,使用下列函数滚动显示:
void AddNewData(float *fValue);
注意:
(1) 类中只提供了上面三个public函数,其使用顺序不能颠倒
(2) 最多显示六条曲线
(3) 参考坐标实际是采样点数,当一秒采样一点,则表示时间
*/
#define MAXCURVE 6
class CCurve
{
public:
CCurve();
~CCurve(); //析构函数
CString szCurveName ; //曲线名
BOOL m_bIAmInUse ; //被使用
BOOL m_bIAmLine ; //线性刻度
COLORREF m_color ; // line color
int m_iLineStyle ; // line style
CPen m_Pen ; // pre-calculated pen (for speed)
float m_nMinValue ; //最小值
float m_nMaxValue ; //最大值
float m_nCoordLow ; //坐标低边值
float m_nCoordHi ; //坐标高值
float m_dxValuePrPixel ; //象数/每值
void Reset();
};
/////////////////////////////////////////////////////////////////////////////
// CCurveDisp window
class CCurveDisp : public CWnd
{
// Construction
public:
CCurveDisp();
virtual ~CCurveDisp();
public:
void SetDispMode(BOOL mode);
BOOL Create(DWORD dwStyle, const RECT& rect,
CWnd* pParentWnd, UINT nID) ;
void CCurveDisp::SetSerie(int s, const char *szTitle,int scaleType,
COLORREF color,int style, float min,float max,
float coordLow,float coordHi);
void AddNewData(float *fValue);
void InvalidateCtrl();
protected:
void AddNewDatay(float *fValue);
void AddNewDatax(float *fValue);
void DrawCurve(float *fValue);
void DrawTitlex();
void DrawTitley();
void DrawGridx();
void DrawGridy();
protected:
BOOL bDisMode ;//为1则垂直滚动,为0则水平滚动
BYTE scrollRows;
CRect m_Client;
CRect m_Plot;
WORD bmpWd;
WORD bmpHi;
CBitmap *pMemBmp;
CDC *pMemDc;
CCurve m_curves[MAXCURVE];
BYTE m_nCurveNum ; //曲线总条数
long SamDots; //到目前采样的总点数
// Generated message map functions
protected:
//{{AFX_MSG(CCurveDisp)
afx_msg void OnSize(UINT nType, int cx, int cy);
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
afx_msg void OnPaint();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
/////////////////////////////////////////////////////////////////////////////
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_CURVEDISP_H__773C3355_A5FA_4677_88B2_5BD625A1C289__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -