发布网友 发布时间:2022-04-29 13:25
共1个回答
热心网友 时间:2023-05-17 17:14
进行程序设计时,选用一个合适的ActiveX控件,有时可大大减少编程工作量。ActiveX 控件(又称OCX)基于COM技术,作为独立的软件模块,它可以在任何程序设计语言中插入使用。本文仅以VC++为例说明Chart控件的使用。 Chart控件指Mschart.ocx(5.0版)或Mschrt20.ocx(6.0 版),是Visual Studio自带的ActiveX控件之一,其属性、事件很多,功能非常强大,可实现柱状直方图、曲线走势图、饼状比例图等,甚至可以是混合图表,可以是二维或三维图表,可以带或不带坐标系,可以自由配置各条目的颜色、字体等等。 一 安装和使用Chart控件 在用到Chart控件的项目中安装该控件:从Project->Add to Project->Components And Controls->Registered Active Xcontrols,选择Chart控件,则 ClassWizard会生成相应的C++类,其中类CMSChart是由CWnd派生来的,它是Chart 控件的主要类,其他的类全部是由COleDispatchDriver派生来,控制控件中的相应对象,完成各部分相关功能,如CvcAxis类是实现坐标轴相关功能的源代码。同时在项目的控件工具箱上会出现代表Chart控件的按钮,使用时把Chart控件按钮从工具箱拖到对话框中,调整大小即可。 Chart控件至少有45个属性、9个方法、49个事件,在这里就不一一列举了。 在设计中,我们可以在主要属性页里修改各属性的属性值:右击对话框窗口中的Chart控件,选择“Properties”菜单项,就会弹出主要属性页对话框,对其中各属性值进行设置。有些属性在主要属性页里没有列出,只能编程修改。另外要动态绘制图表,必须掌握对控件的编程控制。 首先在对话框类中定义控件变量,以便编程时操纵控件。如对话框类定义如下: class CAbcDlg : public CDialog{public: CAbcDlg(CWnd* pParent = NULL);//{{AFX_DATA(CAbcDlg) enum { IDD = IDD_ABC_DIALOG }; CMSChartm_Chart; //}}AFX_DATA }; ActiveX控件的属性和方法在控件内部对应唯一一个整数索引值,编程时可以通过索引来设置或获取控件的属性值,也可以通过调用控件的C++类(在这里就是CMSChart)的成员函数设置或获取控件的属性值及调用控件的方法。例如: 在CMSChart类实现中有如下代码: 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);}void CMSChart::Refresh(){InvokeHelper(DISPID_REFRESH, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);}