⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 myformview.cpp

📁 一个曲线类
💻 CPP
字号:
// MyFormView.cpp : implementation file
//

#include "stdafx.h"
#include "TestChart.h"
#include "MyFormView.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CMyFormView

IMPLEMENT_DYNCREATE(CMyFormView, CFormView)

CMyFormView::CMyFormView()
	: CFormView(CMyFormView::IDD)
{
	//{{AFX_DATA_INIT(CMyFormView)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
}

CMyFormView::~CMyFormView()
{
}

void CMyFormView::DoDataExchange(CDataExchange* pDX)
{
	CFormView::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CMyFormView)
		// NOTE: the ClassWizard will add DDX and DDV calls here
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CMyFormView, CFormView)
	//{{AFX_MSG_MAP(CMyFormView)
	ON_BN_CLICKED(IDC_BTN_SET_BK_GND, OnBtnSetBkGnd)
	ON_BN_CLICKED(IDC_BTN_SET_TITLE, OnBtnSetTitle)
	ON_BN_CLICKED(IDC_BTN_TO_CLIPB, OnBtnToClipb)
	ON_BN_CLICKED(IDC_BTN_TO_FILE, OnBtnToFile)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CMyFormView diagnostics

#ifdef _DEBUG
void CMyFormView::AssertValid() const
{
	CFormView::AssertValid();
}

void CMyFormView::Dump(CDumpContext& dc) const
{
	CFormView::Dump(dc);
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CMyFormView message handlers

const int DATACOUNT = 50;

void CMyFormView::OnInitialUpdate() 
{
	CFormView::OnInitialUpdate();
	CString sBuffer;
	int f;
	double nData[DATACOUNT][4];

	m_chart.SubclassDlgItem( IDC_CHART, this );

	// let's fill chart; this is a random way
	nData[0][0] = 10;
	nData[0][1] = -4;
	nData[0][2] = 18;
	nData[0][3] = 9;

	for( f=1; f<DATACOUNT ; f++ ) {
		nData[f][0] = nData[f-1][0] + rand()%9 - 4;
		nData[f][1] = nData[f-1][1] + rand()%9 - 4;
		nData[f][2] = nData[f-1][2] + rand()%9 - 4;
		nData[f][3] = nData[f-1][3] + rand()%9 - 4;
	}

		nData[0][3] = 1;
		nData[1][3] = 2;
		nData[2][3] = 1;
		nData[3][3] = 3;

	for( f=0; f<DATACOUNT; f++ ) {
		m_chart.SetData( 0, nData[f][0] );
		m_chart.SetData( 1, nData[f][1] );
		m_chart.SetData( 2, nData[f][2] );
		m_chart.SetData( 3, nData[f][3] );
		sBuffer.Format("%d", f );
		m_chart.SetXScaleLabel( f, sBuffer );
	}

	// let's insert some invalid value
	for( f=0; f<DATACOUNT; f++ ) {
		if( rand()%9 > 7 )
			m_chart.SetData( 0, f, HMX_DATASET_VALUE_INVALID );
		if( rand()%9 > 4 )
			m_chart.SetData( 1, f, HMX_DATASET_VALUE_INVALID );
		if( rand()%9 > 5 )
			m_chart.SetData( 2, f, HMX_DATASET_VALUE_INVALID );
		if( rand()%9 > 7 )
			m_chart.SetData( 3, f, HMX_DATASET_VALUE_INVALID );

	}

	m_chart.SetDatasetStyle( 0, HMX_DATASET_STYLE_LINE );
	m_chart.SetDatasetStyle( 1, HMX_DATASET_STYLE_LINE );
	m_chart.SetDatasetStyle( 2, HMX_DATASET_STYLE_VBAR );
	m_chart.SetDatasetStyle( 3, HMX_DATASET_STYLE_AREA );
	m_chart.SetDatasetMarker( 0, HMX_DATASET_MARKER_TRI );
	m_chart.SetDatasetMarker( 1, HMX_DATASET_MARKER_DIA );
	m_chart.SetDatasetPenColor( 0, RGB(   0,   0,   0) );
	m_chart.SetDatasetPenColor( 1, RGB( 255, 128, 255) );
	m_chart.SetDatasetPenColor( 2, RGB( 255, 255, 128) );
	m_chart.SetDatasetPenColor( 3, RGB( 128, 255, 128) );
	m_chart.SetDatasetPenSize( 0, 1 );
	m_chart.SetDatasetPenSize( 1, 3 );
	m_chart.SetDatasetPenSize( 2, 7 );

	m_chart.SetYTicks( 20 );
	m_chart.SetRoundY( 5 );
	m_chart.SetTitle("This is a chart!");
	m_chart.SetXLabelStep( 2 );
	m_chart.SetYText("Y Data Label");
	m_chart.SetXText("Here your own X data label");

	// TODO: Add your specialized code here and/or call the base class
	
}

void CMyFormView::OnBtnSetBkGnd() 
{
	// TODO: Add your control notification handler code here
	m_chart.SetBkGnd();
}


void CMyFormView::OnBtnSetTitle() 
{
	// TODO: Add your control notification handler code here
}

void CMyFormView::OnBtnToClipb() 
{
	// TODO: Add your control notification handler code here
	m_chart.CopyToClipboard();	
}

void CMyFormView::OnBtnToFile() 
{
	// TODO: Add your control notification handler code here
	m_chart.CopyToFile();	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -