[MFC] 1. TeeChart的安装与使用

日期: 栏目:常识 浏览:5

环境:VS2017 + TeeChart5
由于毕设被迫需要使用MFC来设计程序(这显然是个很糟糕的选择),在安装与使用TeeChart插件时出现了许多问题。在2023年间我们尝试去使用1992年的技术时出现了各问题,而且这些技术正在被逐渐淘汰,相关的技术文章也并不充分。[MFC]系列将用于记录我毕设期间所遇到的难点问题,向这一古老且经典的技术示以崇高的敬意!

(密码:7dve)

1-1 安装TeeChart

解压TeeChart.Pro.v5.ActiveX.7z文件,打开安装程序,使用sn.txt中的License和Password

默认安装位置C:\Program Files (x86)\TeeChart Pro v5 ActiveX Control

其余步骤按提示进行。

安装完成之后在windows搜索输入cmd,选择以管理员方式打开。

依次输入(文件路径为TeeChart安装路径)

cd C:\Program Files (x86)\TeeChart Pro v5 ActiveX Controlregsvr32 TeeChart5.ocx

当出现如下提示即为安装成功

1-2 在VS中插入控件

打开VS2017 -> 新建MFC项目 -> 选择基于对话框 -> 完成

在标题栏点击工具 -> 选择工具箱

在COM组件中选择TeeChart Pro Activex Control v5

在工具箱中添加TeeChart Pro Activex control v5和一个按钮,并适当调整位置大小

1-3 添加类与变量

右击项目名称 -> 类向导

选择添加类型库中的MFC类

可用类型库选择TeeChart Pro Activex Control v5<1.0>,在接口中选择ISeries和ITChart。点击完成后头文件中会生成CSeries.h和CTChart.h两个头文件。

分别打开这两个头文件并分别对其中的第三行代码添加//,将其注释掉

//#import "C:\\WINDOWS\\SysWow64\\TeeChart5.ocx" no_namespace

右击插入的TeeChart控件,选择添加变量

名称输入为m_chart,变量类型为CTChart1。点击完成之后头文件中新生成了一个COCX.h的头文件

然而这个COCX.h文件并不完整,我们需要在其中插入一些方法,代码如下

点击查看代码
// ITChart 方法public:LPDISPATCH get_Aspect(){LPDISPATCH result;InvokeHelper(0x1, DISPATCH_PROPERTYGET, VT_DISPATCH, (void*)&result, nullptr);return result;}LPDISPATCH get_Axis(){LPDISPATCH result;InvokeHelper(0x2, DISPATCH_PROPERTYGET, VT_DISPATCH, (void*)&result, nullptr);return result;}LPDISPATCH get_Canvas(){LPDISPATCH result;InvokeHelper(0x3, DISPATCH_PROPERTYGET, VT_DISPATCH, (void*)&result, nullptr);return result;}BOOL get_ClipPoints(){BOOL result;InvokeHelper(0x4, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, nullptr);return result;}void put_ClipPoints(BOOL newValue){static BYTE parms[] = VTS_BOOL;InvokeHelper(0x4, DISPATCH_PROPERTYPUT, VT_EMPTY, nullptr, parms, newValue);}short get_Cursor(){short result;InvokeHelper(0x5, DISPATCH_PROPERTYGET, VT_I2, (void*)&result, nullptr);return result;}void put_Cursor(short newValue){static BYTE parms[] = VTS_I2;InvokeHelper(0x5, DISPATCH_PROPERTYPUT, VT_EMPTY, nullptr, parms, newValue);}short get_DragCursor(){short result;InvokeHelper(0x6, DISPATCH_PROPERTYGET, VT_I2, (void*)&result, nullptr);return result;}void put_DragCursor(short newValue){static BYTE parms[] = VTS_I2;InvokeHelper(0x6, DISPATCH_PROPERTYPUT, VT_EMPTY, nullptr, parms, newValue);}long get_DragMode(){long result;InvokeHelper(0x7, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, nullptr);return result;}void put_DragMode(long newValue){static BYTE parms[] = VTS_I4;InvokeHelper(0x7, DISPATCH_PROPERTYPUT, VT_EMPTY, nullptr, parms, newValue);}BOOL get_Enabled(){BOOL result;InvokeHelper(0x8, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, nullptr);return result;}void put_Enabled(BOOL newValue){static BYTE parms[] = VTS_BOOL;InvokeHelper(0x8, DISPATCH_PROPERTYPUT, VT_EMPTY, nullptr, parms, newValue);}LPDISPATCH get_Export(){LPDISPATCH result;InvokeHelper(0x9, DISPATCH_PROPERTYGET, VT_DISPATCH, (void*)&result, nullptr);return result;}LPDISPATCH get_Footer(){LPDISPATCH result;InvokeHelper(0xa, DISPATCH_PROPERTYGET, VT_DISPATCH, (void*)&result, nullptr);return result;}LPDISPATCH get_Frame(){LPDISPATCH result;InvokeHelper(0xb, DISPATCH_PROPERTYGET, VT_DISPATCH, (void*)&result, nullptr);return result;}LPDISPATCH get_Header(){LPDISPATCH result;InvokeHelper(0x16, DISPATCH_PROPERTYGET, VT_DISPATCH, (void*)&result, nullptr);return result;}long get_Height(){long result;InvokeHelper(0xc, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, nullptr);return result;}void put_Height(long newValue){static BYTE parms[] = VTS_I4;InvokeHelper(0xc, DISPATCH_PROPERTYPUT, VT_EMPTY, nullptr, parms, newValue);}LPDISPATCH get_Import(){LPDISPATCH result;InvokeHelper(0xd, DISPATCH_PROPERTYGET, VT_DISPATCH, (void*)&result, nullptr);return result;}long get_Left(){long result;InvokeHelper(0xe, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, nullptr);return result;}void put_Left(long newValue){static BYTE parms[] = VTS_I4;InvokeHelper(0xe, DISPATCH_PROPERTYPUT, VT_EMPTY, nullptr, parms, newValue);}LPDISPATCH get_Legend(){LPDISPATCH result;InvokeHelper(0xf, DISPATCH_PROPERTYGET, VT_DISPATCH, (void*)&result, nullptr);return result;}LPDISPATCH get_Page(){LPDISPATCH result;InvokeHelper(0x10, DISPATCH_PROPERTYGET, VT_DISPATCH, (void*)&result, nullptr);return result;}LPDISPATCH get_Panel(){LPDISPATCH result;InvokeHelper(0x11, DISPATCH_PROPERTYGET, VT_DISPATCH, (void*)&result, nullptr);return result;}LPDISPATCH get_Printer(){LPDISPATCH result;InvokeHelper(0x12, DISPATCH_PROPERTYGET, VT_DISPATCH, (void*)&result, nullptr);return result;}LPDISPATCH get_Scroll(){LPDISPATCH result;InvokeHelper(0x13, DISPATCH_PROPERTYGET, VT_DISPATCH, (void*)&result, nullptr);return result;}LPDISPATCH get_aSeries(long SeriesIndex){LPDISPATCH result;static BYTE parms[] = VTS_I4;InvokeHelper(0x14, DISPATCH_PROPERTYGET, VT_DISPATCH, (void*)&result, parms, SeriesIndex);return result;}long get_SeriesCount(){long result;InvokeHelper(0x15, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, nullptr);return result;}long get_Top(){long result;InvokeHelper(0x17, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, nullptr);return result;}void put_Top(long newValue){static BYTE parms[] = VTS_I4;InvokeHelper(0x17, DISPATCH_PROPERTYPUT, VT_EMPTY, nullptr, parms, newValue);}BOOL get_Visible(){BOOL result;InvokeHelper(0x18, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, nullptr);return result;}void put_Visible(BOOL newValue){static BYTE parms[] = VTS_BOOL;InvokeHelper(0x18, DISPATCH_PROPERTYPUT, VT_EMPTY, nullptr, parms, newValue);}LPDISPATCH get_Walls(){LPDISPATCH result;InvokeHelper(0x19, DISPATCH_PROPERTYGET, VT_DISPATCH, (void*)&result, nullptr);return result;}long get_Width(){long result;InvokeHelper(0x1a, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, nullptr);return result;}void put_Width(long newValue){static BYTE parms[] = VTS_I4;InvokeHelper(0x1a, DISPATCH_PROPERTYPUT, VT_EMPTY, nullptr, parms, newValue);}LPDISPATCH get_Zoom(){LPDISPATCH result;InvokeHelper(0x1b, DISPATCH_PROPERTYGET, VT_DISPATCH, (void*)&result, nullptr);return result;}void AboutBox(){InvokeHelper(DISPID_ABOUTBOX, DISPATCH_METHOD, VT_EMPTY, nullptr, nullptr);}long AddSeries(long SeriesClass){long result;static BYTE parms[] = VTS_I4;InvokeHelper(0x1c, DISPATCH_METHOD, VT_I4, (void*)&result, parms, SeriesClass);return result;}void ChangeSeriesType(long SeriesIndex, long NewSeriesType){static BYTE parms[] = VTS_I4 VTS_I4;InvokeHelper(0x1d, DISPATCH_METHOD, VT_EMPTY, nullptr, parms, SeriesIndex, NewSeriesType);}long CloneSeries(long SourceSeriesIndex){long result;static BYTE parms[] = VTS_I4;InvokeHelper(0x1e, DISPATCH_METHOD, VT_I4, (void*)&result, parms, SourceSeriesIndex);return result;}void Draw(long DC, long Left, long Top, long Right, long Bottom){static BYTE parms[] = VTS_I4 VTS_I4 VTS_I4 VTS_I4 VTS_I4;InvokeHelper(0x1f, DISPATCH_METHOD, VT_EMPTY, nullptr, parms, DC, Left, Top, Right, Bottom);}void ExchangeSeries(long Series1, long Series2){static BYTE parms[] = VTS_I4 VTS_I4;InvokeHelper(0x20, DISPATCH_METHOD, VT_EMPTY, nullptr, parms, Series1, Series2);}double GetDateTimeStep(long DateTimeStep){double result;static BYTE parms[] = VTS_I4;InvokeHelper(0x21, DISPATCH_METHOD, VT_R8, (void*)&result, parms, DateTimeStep);return result;}unsigned long GetFreeSeriesColor(BOOL CheckBackgroundColor){unsigned long result;static BYTE parms[] = VTS_BOOL;InvokeHelper(0x22, DISPATCH_METHOD, VT_UI4, (void*)&result, parms, CheckBackgroundColor);return result;}LPDISPATCH GetLabelsSeries(long DestAxis){LPDISPATCH result;static BYTE parms[] = VTS_I4;InvokeHelper(0x23, DISPATCH_METHOD, VT_DISPATCH, (void*)&result, parms, DestAxis);return result;}BOOL IsFreeSeriesColor(unsigned long AColor, BOOL CheckBackgroundColor){BOOL result;static BYTE parms[] = VTS_UI4 VTS_BOOL;InvokeHelper(0x24, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, AColor, CheckBackgroundColor);return result;}void RemoveAllSeries(){InvokeHelper(0x25, DISPATCH_METHOD, VT_EMPTY, nullptr, nullptr);}void RemoveSeries(long SeriesIndex){static BYTE parms[] = VTS_I4;InvokeHelper(0x26, DISPATCH_METHOD, VT_EMPTY, nullptr, parms, SeriesIndex);}void Repaint(){InvokeHelper(0x27, DISPATCH_METHOD, VT_EMPTY, nullptr, nullptr);}CString SeriesTitleLegend(long ASeriesIndex){CString result;static BYTE parms[] = VTS_I4;InvokeHelper(0x28, DISPATCH_METHOD, VT_BSTR, (void*)&result, parms, ASeriesIndex);return result;}void ShowEditor(long SeriesIndex){static BYTE parms[] = VTS_I4;InvokeHelper(0x29, DISPATCH_METHOD, VT_EMPTY, nullptr, parms, SeriesIndex);}void StopMouse(){InvokeHelper(0x2a, DISPATCH_METHOD, VT_EMPTY, nullptr, nullptr);}BOOL get_TimerEnabled(){BOOL result;InvokeHelper(0x2b, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, nullptr);return result;}void put_TimerEnabled(BOOL newValue){static BYTE parms[] = VTS_BOOL;InvokeHelper(0x2b, DISPATCH_PROPERTYPUT, VT_EMPTY, nullptr, parms, newValue);}long get_TimerInterval(){long result;InvokeHelper(0x2c, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, nullptr);return result;}void put_TimerInterval(long newValue){static BYTE parms[] = VTS_I4;InvokeHelper(0x2c, DISPATCH_PROPERTYPUT, VT_EMPTY, nullptr, parms, newValue);}BOOL get_AutoRepaint(){BOOL result;InvokeHelper(0x2d, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, nullptr);return result;}void put_AutoRepaint(BOOL newValue){static BYTE parms[] = VTS_BOOL;InvokeHelper(0x2d, DISPATCH_PROPERTYPUT, VT_EMPTY, nullptr, parms, newValue);}void EditOneSeries(long SeriesIndex){static BYTE parms[] = VTS_I4;InvokeHelper(0x2e, DISPATCH_METHOD, VT_EMPTY, nullptr, parms, SeriesIndex);}LPDISPATCH get_Environment(){LPDISPATCH result;InvokeHelper(0x2f, DISPATCH_PROPERTYGET, VT_DISPATCH, (void*)&result, nullptr);return result;}long get_ChartLink(){long result;InvokeHelper(0x30, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, nullptr);return result;}LPDISPATCH get_MousePosition(){LPDISPATCH result;InvokeHelper(0x31, DISPATCH_PROPERTYGET, VT_DISPATCH, (void*)&result, nullptr);return result;}void ChartRect(long Left, long Top, long Right, long Bottom){static BYTE parms[] = VTS_I4 VTS_I4 VTS_I4 VTS_I4;InvokeHelper(0x32, DISPATCH_METHOD, VT_EMPTY, nullptr, parms, Left, Top, Right, Bottom);}LPDISPATCH get_Tools(){LPDISPATCH result;InvokeHelper(0x33, DISPATCH_PROPERTYGET, VT_DISPATCH, (void*)&result, nullptr);return result;}LPDISPATCH get_SubHeader(){LPDISPATCH result;InvokeHelper(0x34, DISPATCH_PROPERTYGET, VT_DISPATCH, (void*)&result, nullptr);return result;}LPDISPATCH get_SubFooter(){LPDISPATCH result;InvokeHelper(0x35, DISPATCH_PROPERTYGET, VT_DISPATCH, (void*)&result, nullptr);return result;}void ClearChart(){InvokeHelper(0x37, DISPATCH_METHOD, VT_EMPTY, nullptr, nullptr);}void RefreshData(){InvokeHelper(0x36, DISPATCH_METHOD, VT_EMPTY, nullptr, nullptr);}LPDISPATCH Series(long SeriesIndex){LPDISPATCH result;static BYTE parms[] = VTS_I4;InvokeHelper(0x38, DISPATCH_METHOD, VT_DISPATCH, (void*)&result, parms, SeriesIndex);return result;}

1-4 设置图表

双击插入的TeeChart控件,点击ADD,选择fastline,取消勾选3D

双击添加的Button控件,进入OnBnClickedButton1()函数。在为该函数添加语句之前先为该文件添加两个头文件

#include "CSeries.h"#include "CTChart.h"

然后在OnBnClickedButton1()函数中输入以下内容

void CChartDemoDlg::OnBnClickedButton1(){// TODO: 在此添加控件通知处理程序代码CSeries lineSeries = (CSeries)m_chart.Series(0);lineSeries.Clear();for (int i = 0; i < 50; i++)lineSeries.AddXY((double)i, rand(), NULL, NULL);}

最后就可以运行本地Windows调试器,点击Button1按钮得到下面实例结果

本文地址:https://caijingdemo.com/changshi/84913.html

标签: