一、VS 2022 和 MFC 组件离线安装
1.此处以 Enterprise 版本为例,先下载对应的 exe 文件 (vs_Enterprise.exe),并保存到某个文件夹中,如(F:\vs2022)。
2.使用cmd命令,提前下载各种需要工作负荷或组件的离线包。
进入cmd 命令界面,首先使用 cd 命令进入到exe文件的位置,如 F:\vs2022。再执行下载命令(依据自己的需求,需要什么组件,执行对应命令即可):
1)下载命令各参数意义如下:
--layout :指定工作负荷或组件离线包的保存路径,如: --layout F:\vs2022;不指定位置则默认下载到当前路径。
--add :指定需要添加的工作负荷或组件的 ID;如果语句中没有 --add,则默认添加所有工作负载和组件。
--includeOptional/–includeRecommended:安装所选的工作负荷组里面的 必选项/全部项
--lang :语言(中文:zh-cn ,英文:en-US),安装语言包
2)添加 For .NET web 和 .NET desktop 工作负荷:
vs_Enterprise.exe --layout --add Microsoft.VisualStudio.Workload.ManagedDesktop --add Microsoft.VisualStudio.Workload.NetWeb --add Component.GitHub.VisualStudio --includeOptional --lang zh-cn
3)添加 使用 C++ 的桌面开发 工作负荷:
vs_Enterprise.exe --layout --add Microsoft.VisualStudio.Workload.NativeDesktop --includeRecommended --lang zh-cn
4)添加 Visual Studio 扩展开发,通用 Windows 平台开发 工作负荷:
vs_Enterprise.exe --layout --add Microsoft.VisualStudio.Workload.VisualStudioExtension --add Microsoft.VisualStudio.Workload.Universal --includeRecommended --lang zh-cn
5)添加 使用 C++ 的桌面开发 工作负荷中的 MFC 组件:
(MFC组件ID:Microsoft.VisualStudio.Component.VC.ATLMFC)
vs_Enterprise.exe --layout --add Microsoft.VisualStudio.Component.VC.ATLMFC --includeRecommended --lang zh-CN
6)其他工作负荷或组件的ID,参考官网:
Visual Studio Community workload and component IDs | Microsoft Learnhttps://learn.microsoft.com/en-us/visualstudio/install/workload-component-id-vs-community?view=vs-2019&preserve-view=true#visual-studio-core-editor-included-with-visual-studio-community-20193.离线安装。
下载完成后,将整个文件夹拷贝到离线的电脑上(若提示:确定要在不复制其属性的情况下复制此文件,点击 是 即可),双击 vs_setup.exe 即可安装。
注意,在下图选择工作负荷时,只能选择步骤2中下载过的工作负荷或组件,不然会导致安装失败;同时,可以检查一下有没有漏选步骤2中下载的工作负荷或组件。
若安装后,需要再下载其他工作负荷或组件,按上述步骤2下载需要的工作负荷和组件后重新拷贝文件到离线电脑,再双击文件中的 vs_setup.exe 后即可。
二、Teechart 安装与配置
1.下载好 Teechart 8 安装包后,将其中 Teechart8.ocx 拷贝到 C:\Windows\SysWOW64 (此处为64位系统的安装方法)目录下;
2.在C:\Windows\SysWOW64目录下找到 cmd.exe ,并以管理员方式运行;
3.输入命令:regsvr32 C:\Windows\SysWOW64\Teechart8.ocx,系统提示注册成功即可。
4.若要安装Teechart5.ocx,需要先安装 TeeChartAndroidEval-4.16.5.13-windows.exe 插件(双击后一直点 NEXT 即可),安装后再执行上面的1~3的步骤。
三、MFC+Teechart 在界面输出三维曲线
1.新建 “MFC应用 ” 工程项目。
选择保存路径(如 C:\Users\lenovo\source\repos),并定好名称(如 MFCApplication1);点击 “创建” 后,出现如下对话框,在 应用程序类型(T) 栏选择 “基于对话框” ;点击 “用户界面功能” 根据自己选择所需内容,如最小化最大化框等。最后,点击完成即可。
2.加入Teechart控件。
右击对话框界面,然后选择 “插入ActiveX插件”,然后选择 TeeChart Pro ActiveX control v8 并点击确定。
3.添加TeeChart文件。
将Teechart 8 安装包中的 TeeChart 文件夹,复制到 MFCApplication1 工程文件下。
此处路径为: C:\Users\lenovo\source\repos\MFCApplication1\MFCApplication1
4.添加变量。
右击Teechart控件,选择 “添加变量” ,并定好名称(如 my_Tchart),点击确定,此时系统自动在 MFCApplication1Dlg.h 文件中生成一个语句:
CTCHART1 my_Tcahrt;
5.程序修改。
对 MFCApplication1Dlg.h 文件做出以下修改:
1)将其自动生成的语句 CTCHART1 my_Tcahrt 改为:
CTChart my_Tcahrt;
2)将其自动生成的语句 #include "CTCHART1.h" 注释掉,添加 #include "TeeChart\tchart.h" ;然后在解决方案资源管理器中,分别移除头文件中的 CTCHART1.h 和 源文件中的 CTCHART1.cpp。右击.h 或 .cpp文件,选择移除即可。
6.添加相关的 .h 或 .cpp文件。
1)添加.cpp文件
解决方案资源管理器中,右击源文件,选择添加——>现有项,然后进入TeeChart文件夹,找到需要的.cpp文件即可。
2)添加.h文件
解决方案资源管理器中,右击头文件,选择添加——>现有项,然后进入TeeChart文件夹,找到需要的.h文件即可。
一般需要添加 tchart.cpp/h 、series.cpp/h 、point3dseries.cpp/h 等文件。添加后,需要在MFCApplication1Dlg.cpp 中加入添加文件对应的头文件引用,如:
#include "TeeChart\series.h"
#include "TeeChart\point3dseries.h"
7.调试或运行时,使用Debug + Win32 或 Release + Win32 模式,不然会出现错误: “Debug Assertion Failed!”。
8.使用TeeChart画图。
1)添加 series 序列(在该控件中要绘制几条曲线就添加几个 series ,如添加2条曲线,便需要添加2个 series) 。
双击TeeChart控件,在弹出的对话框中选择 “Add” 按钮。若要绘制三维图,则选择 3D—Point 3D—No Piont;若要绘制二维图,则先取消对话框左下角勾选的 “3D”,然后选择 Standard—Fast Line—Normal。
在上图中标出的 1 区域,可以对图像坐标系的坐标轴标识、图例位置、曲线颜色和线宽等进行修改;在 2 区域可以对更改曲线序列的名字。
2)画图前先清空图像,定义清空函数
void CMFCApplication1Dlg::ClearAllSeries()
{
for( long i = 0;i <my_Tchart.get_SeriesCount();i ++)
{
((CSeries)my_Tchart.Series(i)).Clear();
}
}
2)拖入 Button 控件,双击后在 MFCApplication1Dlg.h 自动生成事件响应函数的声明;
afx_msg void OnBnClickedButton1();
3)在 MFCApplication1Dlg.cpp 自动生成的 void CMFCApplication1Dlg::onBnclickedButton1(){} 事件响应函数中添加绘图程序。
定义好动态数组 :vector<double> VectorXt,VectorYt,VectorZt 等,用以保存绘图的数据,数组赋值前同样需要先清空数组;
void CMFCApplication1Dlg::onBnclickedButton1()
{
//清空数组和图像
VectorXt.clear();
VectorYt.clear();
VectorZt.clear();
VectorXm.clear();
VectorYm.clear();
VectorZm.clear();
ClearAllSeries();
//绘图数据保存
for(int i=0;i<50;i++)
{
double x,y,z;
x=(double)i;
y=(double)i;
z=(double)i;
VectorXt.push_back(x);
VectorYt.push_back(y);
VectorZt.push_back(z);
VectorXm.push_back(150-x);
VectorYm.push_back(150-y);
VectorZm.push_back(150-z);
}
CSeries myline1,myline2;
int len=VectorXt.size();
myline1 = (CSeries)my_Tchart.Series(0); //定义曲线1
myline2 = (CSeries)my_Tchart.Series(1); //定义曲线2
//若需要添加的第二个TeeChart插件,命名my_Ttchart2
//myline1 = (CSeries)my_Tchart2.Series(0);
//myline2 = (CSeries)my_Tchart2.Series(1);
for(int i=0;i<len;i++)
{
Xt=VectorXt.at(i);
Yt=VectorYt.at(i);
Zt=VectorZt.at(i);
Xm=VectorXm.at(i);
Ym=VectorYm.at(i);
Zm=VectorZm.at(i);
//三维曲线绘制
myline1.GetAsPoint3D().AddXYZ(Xt,Yt,Zt,NULL,RGB(255,0,0));
myline2.GetAsPoint3D().AddXYZ(Xm,Ym,Zm,NULL,RGB(0,255,0));
//三维图的不同曲线的颜色,需要双击插件后进入Series--> Format 里设置 line 样式和颜色
//二维曲线
//myline2.AddXY(X,Y,NULL,RGB(255,0,0));
}
}
注意,若要输出两个图像(不是一个图像两条曲线),就需要在界面再插入另一个TeeChart ActiveX插件:右击对话框—>插入ActiveX插件—>选择 TeeChart Pro ActiveX control v8,然后右击插件——>添加变量—>命名 my_Tchart2,添加变量后需要删除自动生成的 CTCHART2.h 和 CTCHART2.cpp 文件,并修改:
//CTCHART2 my_Tchart2; //修改为下面的定义
CTchart my_Tchart2;
四、MFC+ Teechart 使用注意事项
1.添加 Button 或 其他控件 时,需要在对应的 ***Dlg.cpp文件中写入: #include "resource.h" ;
2. error: 无法解析外部符号!
1)手动添加错误提示里的的.cpp文件和.h头文件,如 tchart.cpp , series.cpp , point3dseries.cpp 等;右击源文件——>添加——>现有项——>.cpp或.h文件。
2)也可能是在.h文件里声明了某个成员函数,却没有在对应的.cpp里面实现。
3.移除自动生成的 CTCHART1.h 和 CTCHART1.cpp 文件;
4.error:提示是否忘记向源中添加“#include"pch.h" !
属性——>C/C++——>预编译头——>不使用预编译头;
5.资源视图中.rc文件提示:在另一个编辑器中打开!
关闭resource.h文件;
6. error: Debug Assertion Failed!
1)确为程序有误:点击 重试 ,“调用堆栈”窗口查看错误代码位置,检查其是否有误;
2)检查若无误:试着使用 Debug + win32 模式 调试程序;
7.画出的多条三维曲线颜色都是黑色:是因为曲线各点的颜色仍然设置为黑色,需要双击控件后进入Series--> Format 里设置 line 的样式和颜色。
8.运行后,TeeChart画图区域显示为空白而没有报错,可能是被其他大控件遮挡了(如 Group Box 控件),此时需要在Group Box 属性里设置 透明 的属性值为 True。
9.使用 Edit Control 进行界面的 输入和输出:
右击 Edit Control 控件,为各个Edit Control 控件添加一个变量,用于保存Edit Control 控件编辑框中的数据。在弹出的对话框中
类别:选择为 “值”:
名称:此处取 input 是输入编辑框的变量名,output 是输出编辑框的变量名;
变量类型:作为输入的编辑框选择 double 类型,作为输出的编辑框最好选择 CString 类型;
//获取界面中所有 Edit 编辑框内的值
UpdateData(TRUE);
//根据程序目的,自定义数据处理程序
CString str;
str.Format(_T("%.4f"),input/2); //input 是输入编辑框添加的变量名;结果保留4位小数;
output=str; //output 是输出编辑框添加的变量名;
//更新界面中所有 Edit 编辑框内的值(即在界面显示重新赋值后的output值)
UpdateData(FALSE);
10.按钮弹出消息框
右击资源视图的Dialog文件—>添加资源—>新建,然后在生成的对话框中(资源视图中的Dialog下查看)右键—>添加类并命名(如:CMyNewDlg )。
添加 CMyNewDlg 类后,双击执行弹出消息框操作的按钮,在其事件响应函数中添加如下程序:
void CMFCApplication1Dlg::OnBnClickedOk()
{
CMyNewDlg Dlg;
Dlg.DoModal();
}
注意,在按钮事件响应函数所在的cpp文件程序前面添加: #include "CMyNewDlg.h "文章来源:https://www.toymoban.com/news/detail-736347.html
文章来源地址https://www.toymoban.com/news/detail-736347.html
到了这里,关于VS + MFC + Teechart 离线安装及输出三维曲线的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!