关于MsChart控件的注册:

32位系统之下

1.将mschrt20.ocx放在windows/system32目录下。注意,这个文件名中的没有字母a,即没有写chart中的字母a,就是这一细节让我多花了不少时间。

2.使用命令regsvr32 MSCHRT20.OCX来注册。

64位系统下

1.确保win7管理员权限

2.把OCX控件,放到C:\Windows\SysWow64路径下面

3.进入cmd,管理员权限运行

4.regsvr32C:\Windows\SysWow64\MSCHRT20.OCX

注册成功会有提示的。

可以使用反注册来验证。

regsvr32 MSCHRT20.OCX /u  //清除

PS:注册出现问题时,很大原因是没有以管理员身份运行cmd

注册完成以后,就可以使用了。

很多的资料上说,先包含头文件

<span style="font-family:KaiTi_GB2312;font-size:18px;">#include "vcbackdrop.h"
#include "vcfill.h"
#include "vcbrush.h"
#include "vcaxis.h"
#include "vcaxisgrid.h"
#include "vcaxisscale.h"
#include "vcplot.h"
#include "vcvaluescale.h"
#include "vcseriescollection.h"
#include "vcseries.h"
#include "vcpen.h"
#include "vccolor.h"
#include "vccategoryscale.h"
#include "vcaxistitle.h"
#include "vcdatagrid.h"
#include "vcdatapoint.h"
#include "vcdatapoints.h"
#include "vcdatapointlabel.h"</span>

但并没有提供头文件的代码,头文件代码下载地址:http://download.csdn.net/detail/u014023993/8203443

将这些类添加到自己的工程就可以了。

CMSChart类

<span style="font-family:KaiTi_GB2312;font-size:18px;">#if !defined(AFX_MSCHART_H__93A82E05_CA08_483A_8512_6446AA3EA1CC__INCLUDED_)
#define AFX_MSCHART_H__93A82E05_CA08_483A_8512_6446AA3EA1CC__INCLUDED_#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++// NOTE: Do not modify the contents of this file.  If this class is regenerated by
//  Microsoft Visual C++, your modifications will be overwritten.// Dispatch interfaces referenced by this interface
class CVcTitle;
class CVcFootnote;
class CVcBackdrop;
class CVcLegend;
class CVcDataGrid;
class CVcPlot;/
// CMSChart wrapper classclass CMSChart : public CWnd
{
protected:DECLARE_DYNCREATE(CMSChart)
public:CLSID const& GetClsid(){static CLSID const clsid= { 0x3a2b370c, 0xba0a, 0x11d1, { 0xb1, 0x37, 0x0, 0x0, 0xf8, 0x75, 0x3f, 0x5d } };return clsid;}virtual BOOL Create(LPCTSTR lpszClassName,LPCTSTR lpszWindowName, DWORD dwStyle,const RECT& rect,CWnd* pParentWnd, UINT nID,CCreateContext* pContext = NULL){ return CreateControl(GetClsid(), lpszWindowName, dwStyle, rect, pParentWnd, nID); }BOOL Create(LPCTSTR lpszWindowName, DWORD dwStyle,const RECT& rect, CWnd* pParentWnd, UINT nID,CFile* pPersist = NULL, BOOL bStorage = FALSE,BSTR bstrLicKey = NULL){ return CreateControl(GetClsid(), lpszWindowName, dwStyle, rect, pParentWnd, nID,pPersist, bStorage, bstrLicKey); }// Attributes
public:// Operations
public:BOOL GetAutoIncrement();void SetAutoIncrement(BOOL bNewValue);BOOL GetRandomFill();void SetRandomFill(BOOL bNewValue);long GetChartType();void SetChartType(long nNewValue);short GetColumn();void SetColumn(short nNewValue);short GetColumnCount();void SetColumnCount(short nNewValue);CString GetColumnLabel();void SetColumnLabel(LPCTSTR lpszNewValue);short GetColumnLabelCount();void SetColumnLabelCount(short nNewValue);short GetColumnLabelIndex();void SetColumnLabelIndex(short nNewValue);CString GetData();void SetData(LPCTSTR lpszNewValue);CString GetFootnoteText();void SetFootnoteText(LPCTSTR lpszNewValue);BOOL GetRepaint();void SetRepaint(BOOL bNewValue);short GetRow();void SetRow(short nNewValue);short GetRowCount();void SetRowCount(short nNewValue);CString GetRowLabel();void SetRowLabel(LPCTSTR lpszNewValue);short GetRowLabelCount();void SetRowLabelCount(short nNewValue);short GetRowLabelIndex();void SetRowLabelIndex(short nNewValue);short GetSeriesColumn();void SetSeriesColumn(short nNewValue);long GetSeriesType();void SetSeriesType(long nNewValue);BOOL GetShowLegend();void SetShowLegend(BOOL bNewValue);long GetDrawMode();void SetDrawMode(long nNewValue);long GetBorderStyle();void SetBorderStyle(long nNewValue);BOOL GetEnabled();void SetEnabled(BOOL bNewValue);long GetHWnd();CVcTitle GetTitle();CVcFootnote GetFootnote();CString GetTitleText();void SetTitleText(LPCTSTR lpszNewValue);BOOL GetStacking();void SetStacking(BOOL bNewValue);long GetTextLengthType();void SetTextLengthType(long nNewValue);BOOL GetAllowSelections();void SetAllowSelections(BOOL bNewValue);BOOL GetAllowSeriesSelection();void SetAllowSeriesSelection(BOOL bNewValue);BOOL GetAllowDynamicRotation();void SetAllowDynamicRotation(BOOL bNewValue);short GetActiveSeriesCount();CVcBackdrop GetBackdrop();CVcLegend GetLegend();CVcDataGrid GetDataGrid();CVcPlot GetPlot();BOOL GetAllowDithering();void SetAllowDithering(BOOL bNewValue);BOOL GetDoSetCursor();void SetDoSetCursor(BOOL bNewValue);BOOL GetChart3d();VARIANT GetChartData();void SetChartData(const VARIANT& newValue);long GetMousePointer();void SetMousePointer(long nNewValue);void Refresh();void EditPaste();void EditCopy();void Layout();void ToDefaults();void SelectPart(short part, short index1, short index2, short index3, short index4);void GetSelectedPart(short* part, short* index1, short* index2, short* index3, short* index4);void TwipsToChartPart(long xVal, long yVal, short* part, short* index1, short* index2, short* index3, short* index4);long GetOLEDragMode();void SetOLEDragMode(long nNewValue);long GetOLEDropMode();void SetOLEDropMode(long nNewValue);void OLEDrag();LPUNKNOWN GetDataSource();void SetRefDataSource(LPUNKNOWN newValue);CString GetDataMember();void SetDataMember(LPCTSTR lpszNewValue);
};//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.#endif // !defined(AFX_MSCHART_H__93A82E05_CA08_483A_8512_6446AA3EA1CC__INCLUDED_)
</span>
<span style="font-family:KaiTi_GB2312;font-size:18px;">// Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++// NOTE: Do not modify the contents of this file.  If this class is regenerated by
//  Microsoft Visual C++, your modifications will be overwritten.#include "stdafx.h"
#include "mschart.h"// Dispatch interfaces referenced by this interface
#include "vctitle.h"
#include "vcfootnote.h"
#include "vcbackdrop.h"
#include "vclegend.h"
#include "vcdatagrid.h"
#include "vcplot.h"/
// CMSChartIMPLEMENT_DYNCREATE(CMSChart, CWnd)/
// CMSChart properties/
// CMSChart operationsBOOL CMSChart::GetAutoIncrement()
{BOOL result;InvokeHelper(0x1, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL);return result;
}void CMSChart::SetAutoIncrement(BOOL bNewValue)
{static BYTE parms[] =VTS_BOOL;InvokeHelper(0x1, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,bNewValue);
}BOOL CMSChart::GetRandomFill()
{BOOL result;InvokeHelper(0x2, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL);return result;
}void CMSChart::SetRandomFill(BOOL bNewValue)
{static BYTE parms[] =VTS_BOOL;InvokeHelper(0x2, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,bNewValue);
}long CMSChart::GetChartType()
{long result;InvokeHelper(0x3, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL);return result;
}void CMSChart::SetChartType(long nNewValue)
{static BYTE parms[] =VTS_I4;InvokeHelper(0x3, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,nNewValue);
}short CMSChart::GetColumn()
{short result;InvokeHelper(0x4, DISPATCH_PROPERTYGET, VT_I2, (void*)&result, NULL);return result;
}void CMSChart::SetColumn(short nNewValue)
{static BYTE parms[] =VTS_I2;InvokeHelper(0x4, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,nNewValue);
}short CMSChart::GetColumnCount()
{short result;InvokeHelper(0x5, DISPATCH_PROPERTYGET, VT_I2, (void*)&result, NULL);return result;
}void CMSChart::SetColumnCount(short nNewValue)
{static BYTE parms[] =VTS_I2;InvokeHelper(0x5, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,nNewValue);
}CString CMSChart::GetColumnLabel()
{CString result;InvokeHelper(0x6, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL);return result;
}void CMSChart::SetColumnLabel(LPCTSTR lpszNewValue)
{static BYTE parms[] =VTS_BSTR;InvokeHelper(0x6, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,lpszNewValue);
}short CMSChart::GetColumnLabelCount()
{short result;InvokeHelper(0x7, DISPATCH_PROPERTYGET, VT_I2, (void*)&result, NULL);return result;
}void CMSChart::SetColumnLabelCount(short nNewValue)
{static BYTE parms[] =VTS_I2;InvokeHelper(0x7, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,nNewValue);
}short CMSChart::GetColumnLabelIndex()
{short result;InvokeHelper(0x8, DISPATCH_PROPERTYGET, VT_I2, (void*)&result, NULL);return result;
}void CMSChart::SetColumnLabelIndex(short nNewValue)
{static BYTE parms[] =VTS_I2;InvokeHelper(0x8, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,nNewValue);
}CString CMSChart::GetData()
{CString result;InvokeHelper(0x9, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL);return result;
}void CMSChart::SetData(LPCTSTR lpszNewValue)
{static BYTE parms[] =VTS_BSTR;InvokeHelper(0x9, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,lpszNewValue);
}CString CMSChart::GetFootnoteText()
{CString result;InvokeHelper(0xa, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL);return result;
}void CMSChart::SetFootnoteText(LPCTSTR lpszNewValue)
{static BYTE parms[] =VTS_BSTR;InvokeHelper(0xa, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,lpszNewValue);
}BOOL CMSChart::GetRepaint()
{BOOL result;InvokeHelper(0xb, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL);return result;
}void CMSChart::SetRepaint(BOOL bNewValue)
{static BYTE parms[] =VTS_BOOL;InvokeHelper(0xb, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,bNewValue);
}short CMSChart::GetRow()
{short result;InvokeHelper(0xc, DISPATCH_PROPERTYGET, VT_I2, (void*)&result, NULL);return result;
}void CMSChart::SetRow(short nNewValue)
{static BYTE parms[] =VTS_I2;InvokeHelper(0xc, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,nNewValue);
}short CMSChart::GetRowCount()
{short result;InvokeHelper(0xd, DISPATCH_PROPERTYGET, VT_I2, (void*)&result, NULL);return result;
}void CMSChart::SetRowCount(short nNewValue)
{static BYTE parms[] =VTS_I2;InvokeHelper(0xd, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,nNewValue);
}CString CMSChart::GetRowLabel()
{CString result;InvokeHelper(0xe, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL);return result;
}void CMSChart::SetRowLabel(LPCTSTR lpszNewValue)
{static BYTE parms[] =VTS_BSTR;InvokeHelper(0xe, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,lpszNewValue);
}short CMSChart::GetRowLabelCount()
{short result;InvokeHelper(0xf, DISPATCH_PROPERTYGET, VT_I2, (void*)&result, NULL);return result;
}void CMSChart::SetRowLabelCount(short nNewValue)
{static BYTE parms[] =VTS_I2;InvokeHelper(0xf, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,nNewValue);
}short CMSChart::GetRowLabelIndex()
{short result;InvokeHelper(0x10, DISPATCH_PROPERTYGET, VT_I2, (void*)&result, NULL);return result;
}void CMSChart::SetRowLabelIndex(short nNewValue)
{static BYTE parms[] =VTS_I2;InvokeHelper(0x10, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,nNewValue);
}short CMSChart::GetSeriesColumn()
{short result;InvokeHelper(0x11, DISPATCH_PROPERTYGET, VT_I2, (void*)&result, NULL);return result;
}void CMSChart::SetSeriesColumn(short nNewValue)
{static BYTE parms[] =VTS_I2;InvokeHelper(0x11, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,nNewValue);
}long CMSChart::GetSeriesType()
{long result;InvokeHelper(0x12, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL);return result;
}void CMSChart::SetSeriesType(long nNewValue)
{static BYTE parms[] =VTS_I4;InvokeHelper(0x12, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,nNewValue);
}BOOL CMSChart::GetShowLegend()
{BOOL result;InvokeHelper(0x13, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL);return result;
}void CMSChart::SetShowLegend(BOOL bNewValue)
{static BYTE parms[] =VTS_BOOL;InvokeHelper(0x13, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,bNewValue);
}long CMSChart::GetDrawMode()
{long result;InvokeHelper(0x17, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL);return result;
}void CMSChart::SetDrawMode(long nNewValue)
{static BYTE parms[] =VTS_I4;InvokeHelper(0x17, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,nNewValue);
}long CMSChart::GetBorderStyle()
{long result;InvokeHelper(DISPID_BORDERSTYLE, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL);return result;
}void CMSChart::SetBorderStyle(long nNewValue)
{static BYTE parms[] =VTS_I4;InvokeHelper(DISPID_BORDERSTYLE, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,nNewValue);
}BOOL CMSChart::GetEnabled()
{BOOL result;InvokeHelper(DISPID_ENABLED, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL);return result;
}void CMSChart::SetEnabled(BOOL bNewValue)
{static BYTE parms[] =VTS_BOOL;InvokeHelper(DISPID_ENABLED, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,bNewValue);
}long CMSChart::GetHWnd()
{long result;InvokeHelper(DISPID_HWND, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL);return result;
}CVcTitle CMSChart::GetTitle()
{LPDISPATCH pDispatch;InvokeHelper(0x1a, DISPATCH_PROPERTYGET, VT_DISPATCH, (void*)&pDispatch, NULL);return CVcTitle(pDispatch);
}CVcFootnote CMSChart::GetFootnote()
{LPDISPATCH pDispatch;InvokeHelper(0x1b, DISPATCH_PROPERTYGET, VT_DISPATCH, (void*)&pDispatch, NULL);return CVcFootnote(pDispatch);
}CString CMSChart::GetTitleText()
{CString result;InvokeHelper(0x1c, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL);return result;
}void CMSChart::SetTitleText(LPCTSTR lpszNewValue)
{static BYTE parms[] =VTS_BSTR;InvokeHelper(0x1c, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,lpszNewValue);
}BOOL CMSChart::GetStacking()
{BOOL result;InvokeHelper(0x1d, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL);return result;
}void CMSChart::SetStacking(BOOL bNewValue)
{static BYTE parms[] =VTS_BOOL;InvokeHelper(0x1d, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,bNewValue);
}long CMSChart::GetTextLengthType()
{long result;InvokeHelper(0x1e, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL);return result;
}void CMSChart::SetTextLengthType(long nNewValue)
{static BYTE parms[] =VTS_I4;InvokeHelper(0x1e, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,nNewValue);
}BOOL CMSChart::GetAllowSelections()
{BOOL result;InvokeHelper(0x20, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL);return result;
}void CMSChart::SetAllowSelections(BOOL bNewValue)
{static BYTE parms[] =VTS_BOOL;InvokeHelper(0x20, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,bNewValue);
}BOOL CMSChart::GetAllowSeriesSelection()
{BOOL result;InvokeHelper(0x21, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL);return result;
}void CMSChart::SetAllowSeriesSelection(BOOL bNewValue)
{static BYTE parms[] =VTS_BOOL;InvokeHelper(0x21, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,bNewValue);
}BOOL CMSChart::GetAllowDynamicRotation()
{BOOL result;InvokeHelper(0x22, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL);return result;
}void CMSChart::SetAllowDynamicRotation(BOOL bNewValue)
{static BYTE parms[] =VTS_BOOL;InvokeHelper(0x22, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,bNewValue);
}short CMSChart::GetActiveSeriesCount()
{short result;InvokeHelper(0x23, DISPATCH_PROPERTYGET, VT_I2, (void*)&result, NULL);return result;
}CVcBackdrop CMSChart::GetBackdrop()
{LPDISPATCH pDispatch;InvokeHelper(0x24, DISPATCH_PROPERTYGET, VT_DISPATCH, (void*)&pDispatch, NULL);return CVcBackdrop(pDispatch);
}CVcLegend CMSChart::GetLegend()
{LPDISPATCH pDispatch;InvokeHelper(0x26, DISPATCH_PROPERTYGET, VT_DISPATCH, (void*)&pDispatch, NULL);return CVcLegend(pDispatch);
}CVcDataGrid CMSChart::GetDataGrid()
{LPDISPATCH pDispatch;InvokeHelper(0x27, DISPATCH_PROPERTYGET, VT_DISPATCH, (void*)&pDispatch, NULL);return CVcDataGrid(pDispatch);
}CVcPlot CMSChart::GetPlot()
{LPDISPATCH pDispatch;InvokeHelper(0x28, DISPATCH_PROPERTYGET, VT_DISPATCH, (void*)&pDispatch, NULL);return CVcPlot(pDispatch);
}BOOL CMSChart::GetAllowDithering()
{BOOL result;InvokeHelper(0x2b, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL);return result;
}void CMSChart::SetAllowDithering(BOOL bNewValue)
{static BYTE parms[] =VTS_BOOL;InvokeHelper(0x2b, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,bNewValue);
}BOOL CMSChart::GetDoSetCursor()
{BOOL result;InvokeHelper(0x2d, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL);return result;
}void CMSChart::SetDoSetCursor(BOOL bNewValue)
{static BYTE parms[] =VTS_BOOL;InvokeHelper(0x2d, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,bNewValue);
}BOOL CMSChart::GetChart3d()
{BOOL result;InvokeHelper(0x2f, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL);return result;
}VARIANT CMSChart::GetChartData()
{VARIANT result;InvokeHelper(0x0, DISPATCH_PROPERTYGET, VT_VARIANT, (void*)&result, NULL);return result;
}void CMSChart::SetChartData(const VARIANT& newValue)
{static BYTE parms[] =VTS_VARIANT;InvokeHelper(0x0, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,&newValue);
}long CMSChart::GetMousePointer()
{long result;InvokeHelper(0x4a, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL);return result;
}void CMSChart::SetMousePointer(long nNewValue)
{static BYTE parms[] =VTS_I4;InvokeHelper(0x4a, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,nNewValue);
}void CMSChart::Refresh()
{InvokeHelper(DISPID_REFRESH, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
}void CMSChart::EditPaste()
{InvokeHelper(0x31, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
}void CMSChart::EditCopy()
{InvokeHelper(0x32, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
}void CMSChart::Layout()
{InvokeHelper(0x34, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
}void CMSChart::ToDefaults()
{InvokeHelper(0x35, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
}void CMSChart::SelectPart(short part, short index1, short index2, short index3, short index4)
{static BYTE parms[] =VTS_I2 VTS_I2 VTS_I2 VTS_I2 VTS_I2;InvokeHelper(0x38, DISPATCH_METHOD, VT_EMPTY, NULL, parms,part, index1, index2, index3, index4);
}void CMSChart::GetSelectedPart(short* part, short* index1, short* index2, short* index3, short* index4)
{static BYTE parms[] =VTS_PI2 VTS_PI2 VTS_PI2 VTS_PI2 VTS_PI2;InvokeHelper(0x39, DISPATCH_METHOD, VT_EMPTY, NULL, parms,part, index1, index2, index3, index4);
}void CMSChart::TwipsToChartPart(long xVal, long yVal, short* part, short* index1, short* index2, short* index3, short* index4)
{static BYTE parms[] =VTS_I4 VTS_I4 VTS_PI2 VTS_PI2 VTS_PI2 VTS_PI2 VTS_PI2;InvokeHelper(0x3b, DISPATCH_METHOD, VT_EMPTY, NULL, parms,xVal, yVal, part, index1, index2, index3, index4);
}long CMSChart::GetOLEDragMode()
{long result;InvokeHelper(0x60e, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL);return result;
}void CMSChart::SetOLEDragMode(long nNewValue)
{static BYTE parms[] =VTS_I4;InvokeHelper(0x60e, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,nNewValue);
}long CMSChart::GetOLEDropMode()
{long result;InvokeHelper(0x60f, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL);return result;
}void CMSChart::SetOLEDropMode(long nNewValue)
{static BYTE parms[] =VTS_I4;InvokeHelper(0x60f, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,nNewValue);
}void CMSChart::OLEDrag()
{InvokeHelper(0x610, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
}LPUNKNOWN CMSChart::GetDataSource()
{LPUNKNOWN result;InvokeHelper(0x47, DISPATCH_PROPERTYGET, VT_UNKNOWN, (void*)&result, NULL);return result;
}void CMSChart::SetRefDataSource(LPUNKNOWN newValue)
{static BYTE parms[] =VTS_UNKNOWN;InvokeHelper(0x47, DISPATCH_PROPERTYPUTREF, VT_EMPTY, NULL, parms,newValue);
}CString CMSChart::GetDataMember()
{CString result;InvokeHelper(0x4b, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL);return result;
}void CMSChart::SetDataMember(LPCTSTR lpszNewValue)
{static BYTE parms[] =VTS_BSTR;InvokeHelper(0x4b, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,lpszNewValue);
}
</span>

创建对话框如下:

首先声明变量并msChart控件 添加控件变量CMSChart m_Chart;,并初始化

<span style="font-family:KaiTi_GB2312;font-size:18px;">void CChartDemoDlg::InitChart()
{//设置标题m_Chart.SetTitleText(LPCTSTR("实时曲线图"));//Title 为CString类型//设置栈模式m_Chart.SetStacking(FALSE);//设置行数及列数m_Chart.SetRowCount(1);//iRowCount和iColumnCount为int型m_Chart.SetColumnCount(1);m_Chart.SetRow(1);m_Chart.SetRowLabel("");m_Chart.GetDataGrid().SetData(1, 1, 0, 0);//设置x轴及y轴的标题。xTitle和yTitle为CString型VARIANT var;m_Chart.GetPlot().GetAxis(0,var).GetAxisTitle().SetText("Time"); //x轴m_Chart.GetPlot().GetAxis(1,var).GetAxisTitle().SetText("DataValue"); //y轴//设置控件类型m_Chart.SetChartType(3);//3:曲线型;1:条形;14:饼图//设置背景颜色m_Chart.GetBackdrop().GetFill().SetStyle(1);m_Chart.GetBackdrop().GetFill().GetBrush().GetFillColor().Set(255, 255, 255);//设置数据系列的颜色:如果是曲线图则对应每条曲线的颜色for (int i = 1; i <= m_Chart.GetColumnCount(); i++ ){//这里设置为随机颜色m_Chart.GetPlot().GetSeriesCollection().GetItem(i).GetPen().GetVtColor().Set(rand() * 230 / RAND_MAX, rand() * 230 / RAND_MAX, rand() * 230 / RAND_MAX);m_Chart.GetPlot().GetSeriesCollection().GetItem(i).GetDataPoints().GetItem(-1).GetDataPointLabel().SetLocationType(1);}//设置x轴的其他属性m_Chart.GetPlot().GetAxis(0,var).GetCategoryScale().SetAuto(FALSE); // 不自动标注X轴刻度m_Chart.GetPlot().GetAxis(0,var).GetCategoryScale().SetDivisionsPerLabel(1);// 每刻度一个标注m_Chart.GetPlot().GetAxis(0,var).GetCategoryScale().SetDivisionsPerTick(1); // 每刻度一个刻度线//不自动标注y轴m_Chart.GetPlot().GetAxis(1,var).GetValueScale().SetAuto(FALSE); m_Chart.GetPlot().GetAxis(1,var).GetValueScale().SetMaximum(100); // y轴最大刻度为100m_Chart.GetPlot().GetAxis(1,var).GetValueScale().SetMinimum(0);  // y轴最小刻度为0m_Chart.GetPlot().GetAxis(1,var).GetValueScale().SetMajorDivision(5); // 将y轴刻度5等分m_Chart.GetPlot().GetAxis(1,var).GetValueScale().SetMinorDivision(1); // 每刻度一个刻度线//  m_Chart.GetPlot().GetAxis(1,var).GetAxisTitle().SetText("YourTitle"); // y的轴名称//不要与x轴垂直的表格线m_Chart.GetPlot().GetAxis(0,var).GetAxisGrid().GetMajorPen().SetStyle(0);// no x grids//隐藏第二y轴,即右边的y轴m_Chart.GetPlot().GetAxis(2,var).GetAxisScale().SetHide(TRUE);//刷新控件m_Chart.Refresh();
}</span>

画图按钮的消息响应函数:

<span style="font-family:KaiTi_GB2312;font-size:18px;">void CChartDemoDlg::OnButDraw()
{// TODO: Add your control notification handler code hereSetTimer(100, 100, NULL);//1/10 secondGetDlgItem(IDC_BUT_DRAW)->EnableWindow(FALSE);//
}</span>

定时器函数

<span style="font-family:KaiTi_GB2312;font-size:18px;">void CChartDemoDlg::OnTimer(UINT nIDEvent)
{int nYValue = rand()%100;nCount++;CString str;int i;i = nCount;str.Format("%d", i);int inPos = m_Chart.GetRowCount() + 1;m_Chart.GetDataGrid().InsertRows(inPos, 1);m_Chart.SetRow(inPos);m_Chart.SetRowLabel(str);//sLabel??CString??m_Chart.GetDataGrid().SetData(inPos, 1, nYValue, 0);if (nCount > 30){m_Chart.GetDataGrid().DeleteRows(inPos - 30, 1);}m_Chart.Refresh();//每产生30个数据便停止计时并启用start按钮,再点击一下即可以继续产生下30个数据if (nCount % 30 == 0){KillTimer(100);GetDlgItem(IDC_BUT_DRAW)->EnableWindow(TRUE);//    }CDialog::OnTimer(nIDEvent);
}
</span>

折线图,柱状图,饼图的相互转化

以下代码可将折线图,柱状图转化为饼状图:

<span style="font-family:KaiTi_GB2312;font-size:18px;">m_Chart.SetChartType(14); //转化为饼状图</span>
<span style="font-family:KaiTi_GB2312;font-size:18px;">m_Chart.SetChartType(1); //转化为柱状图</span>
<span style="font-family:KaiTi_GB2312;font-size:18px;">m_Chart.SetChartType(3); //转化为曲线图</span>
<span style="font-family:KaiTi_GB2312;font-size:18px;">

MsChart控件在VC++中的使用相关推荐

  1. C# mschart 控件 框选 删除部分数据 及游标CursorX CursorY 使用

    C# mschart 控件 框选 删除部分数据 实现功能 : 1.鼠标框选,选中chart控件中部分数据: 2.将选中的数据标红显示: 3.删除选中的红色数据: demo源码下载:https://gi ...

  2. 基于mschart控件,绘制工控采集类曲线,可对图像进行缩放,拖动滚动条显示放大后的图像

    基于mschart控件,绘制工控采集类曲线,可对图像进行缩放,拖动滚动条显示放大后的图像,并动态显示曲线上的数值点 在工控.采集.测试类项目中经常需要对采集接收回来的数据进行图像.曲线显示,本人在项目 ...

  3. 利用MsChart控件绘制多曲线图表 z

    在.Net4.0框架中,微软已经将Mschart控件集成了进来,以前一直在web下面用过,原来winform下的Mschart控件更加简单更加方便,今天我们用mschart绘制一个多曲线图,话不多说, ...

  4. 解决找不到MSchart 控件Microsoft Chart Control, version 6.0

    最近用VC在做网站,需要将捕捉到的数据进行处理,就是绘制一个心电. 结果在添加这个MSchart 控件的时候 步骤:网站->添加引用->COM组件-> 却郁闷的找不到Microsof ...

  5. 解决 MSChart控件 X轴坐标显示不全的问题

    前一阵子做开发用到微软的MSChart控件,功能虽然强大,但是从来没用过,一直处在摸索之中,一个小问题花了半天时间去研究.终于把X轴坐标显示不全的问题给解决了,当然也在网上找了很多的资料才搞定的,今天 ...

  6. 确定多重选择列表控件 (List Control) 中的选定内容

    确定多重选择列表控件 (List Control) 中的选定内容 依次通过控件的 Items 集合,分别测试每一项的 Selected 属性. 下面的示例显示如何测试多重选择 ListBox 控件(名 ...

  7. C# mschart 控件的基本使用和图表控件Series的概念

    使用sharpdevelop: 此工具默认没有mschart控件:把如下dll添加到引用: 工具箱里面把控件加出来:sharpdevelop加控件到工具箱见此: https://blog.csdn.n ...

  8. android 获取控件在屏幕中的坐标

    今天,简单讲讲android如何获取控件在屏幕中的坐标. 这个其实也很简单,但是昨天做一个功能时,需要功能控件的坐标做一些逻辑操作时,居然不知道怎么做.所以在网上查找了资料后,解决了这个问题.这里记录 ...

  9. GridView控件RowDataBound事件中获取列字段值的几种途径

    前台: <asp:TemplateField HeaderText="充值总额|账号余额"><ItemTemplate><asp:Label ID=& ...

最新文章

  1. SQLite.swift的简单使用
  2. 暑期集训2:ACM基础算法 例1:POJ-1064
  3. 矿大计算机专硕和学硕,本硕矿大,考研期间我收获了什么?
  4. python程序员工资低吗-程序员嫌工资低拒绝offer,HR:估计你一辈子就是个程序员...
  5. 为什么一些机器学习模型需要对数据进行归一化?
  6. Linux安装ansible自动化运维工具
  7. ios审核被拒3.2.1问题总结
  8. rea t插件 vscode_VSCode构建汇编语言环境(配置VSCode自动调用dosbox编译运行MASM/TASM程序)...
  9. 问题四十:对ray tracing圆环图形进行debug(2)——C++,用“笛卡尔”方法解一元四次方程
  10. 计算机等级考试c 试题及答案,3月计算机等级考试级C笔试试题及答案解析.doc
  11. 各种格式PPC手机软件的安装方法
  12. 二叉树前中后序遍历【非递归】
  13. python 股票量化盘后分析系统V0.47
  14. 用c语言实现香农编码,单链表实现香农编码(C++)——二牛原创
  15. Linux 的文件与目录(软连接和硬连接)
  16. 贝叶斯统计与变分推断
  17. 中国大学MOOC C语言程序设计(大连理工大学) 课后编程题 第十周题解(个人向仅供参考)
  18. Neokylin7安装gedit
  19. WIFI万能钥匙显密码版
  20. 猜想2010年IT十大表情

热门文章

  1. git status出现大量文件修改
  2. js如何在控制台打印?
  3. CTF-Web 假猪套天下第一
  4. 我的世界动力铁轨怎么做?看完你就懂了!
  5. Mysql join不使用索引
  6. 智能家居实训第八天 JPG库 和摄像头使用
  7. 四招教你无线电通讯工程现场天线驻波比测试
  8. 2021年安全员-A证考试题库及安全员-A证试题及解析
  9. 科学家名言录[事业]
  10. 传奇脚本怎么通过脚本创建NPC