ActiveX控件的开发及其工控界面设计
- 格式:pdf
- 大小:394.90 KB
- 文档页数:2
文章编号:1006-1576(2005)03-0105-02
ActiveX控件的开发及其工控界面设计
范艳军,孙力
(华南理工大学自动化科学与工程学院,广东广州 510640)
摘要:ActiveX控件的开发及其工控界面设计,采用VC框架和类向导开发,以MFC ActiveX ControlWizardk自动生成空OCX文件,并将设备作成OCX文件。设备控件外观可通过PHOTOSHOP画出或将设备照片作为资源文件载入控件得到。通过控件的事件,方法和属性以实现控件与工控软件内核的沟通。
关键词:ActiveX控件;工控界面;VC;OCX文件
中图分类号:TP391.9 文献标识码:A
Development of ActiveX Control and Design of Industrial Control Interface
FAN Yan-jun, SUN Li
(College of Automation Science & Engineering, South China University of Technology, Guangzhou 510640, china) Abstract: The ActiveX control is developed and interface of industrial control is designed with the VC frame and guide of class. An empty OCX file was created automatically with MFC ActiveX Controlwizard, and the control of equipment was made into the field OCX. The facade of equipment control was drawn with PHOTOSHOP or the photo of equipment used as VC resource file was loaded control. The communication between control and the kernel of industrial control software is realized through control event, method and attribute.
Keywords: ActiveX; Industrial control interface; VC; OCX file
1 引言
为形象的表现控制现场,最好的办法就是让用户界面上的设备具有和真实仪器相似的外观。VC 以其强大、灵活的特点成为主流开发平台。利用其图形图像处理功能可方便开发出与真实设备外观相似的控件,添加必要的事件、方法和属性之后即可通过该控件与控制现场进行交流,以表现控制现场和进行有效控制。作好与现场设备有相似外观的单个控件后,通过基于对象的编程开发工具调用控件,将所作单个设备控件连接,调整各自工作状态,就能反映整个控制现场。
2 ActiveX控件的开发
ActiveX技术是基于COM(组件对象模型)建立起来的编码和API协议,是与平台无关的技术。即在一种编程语言下开发的控件无需修改,就可在另一种编程语言中使用。这与使用Windows通用控件类似。利用VISUAL C++提供的框架向导和类向导可开发OCX文件。使用MFC ActiveX ControlWizardk可自动生成空的OCX文件,每个OCX文件可以含有多个控件。但OCX文件过大不利于容器程序的调用,所以将一类设备制作成一个OCX文件。利用PHOTOSHOP画出工控设备外观,或将实际的工控设备拍照作为资源文件载入控件,作为设备控件外观。然后在OCX文件的ONDRAW 函数里填写代码,其编程方法如下:
int w_CBitmap,h_Cbitmap;
//定义两个整型变量存储位图的宽和高
Cbitmap Bitmap; //定义位图类
BITMAP BM; //定义BITMAP结构,以获取位图的参数CDC Pdcl; // 定义一个CDC类
Bitmap.Loadmap(IDC_BITMAP);
//将位图装载,该位图即是设备外观
Bitmap.GetObject(sizeof(BM)); //得到位图结构
w_CBitmap=BM.bmWidth;
w_Cbitmap=BM.bmHeight;
Pdcl.CreateCompatibleDC(Pdc);
//创建于显示设备场景兼容的CDC对象
Pdcl.SelectObject(&Bitmap); //将位图送入场景
PdcÆStretchBlt
(rcBounds.left,rcBounds.top,rcBounds.Width(),
rcBounds.Height(), &Pdcl , 0 , 0 ,w_Cbitmap,
h_Cbitmap, SRCCOPY);
//将位图显示在(0,0)为上端点,宽为rcBounds.Width()
//高为rcBounds.Height()的区域内,
//其中Pdc,rcBounds为ONDRAW函数的参数Bitmap.DelectObject( );
其中rcBounds.left为控件左顶点的横坐标,rcBounds.top为控件左顶点的纵坐标,rcBounds.Width(),rcBounds.Height() 为控件的宽与高。通过这段代码将资源号为IDB_BITMAP1位图作为设备外观来显示,工控界面上的设备与现场设备就具有近似的外观,可模拟工作现场。
制作了具有设备外观的静态控件后,还须在工控软件中表现设备的动态工作状态。为此通过MFC ClassWizard添加一个WM_TIMER消息的处理函数
收稿日期:2004-11-08;修回日期:2005-02-24
作者简介:范艳军(1978-),男,山西人,2001年毕业于中北大学,现华南理工大学在读硕士,从事智能控制理论与应用研究。
·105·