ActiveX控件的开发及其工控界面设计
- 格式:pdf
- 大小:394.90 KB
- 文档页数:2
作者: 中国电波传播研究所青岛分所郎锐时间: 2004-03-09出处: yesky一、前言二、建立工程框架三、属性、方法以及事件的添加四、实现属性表五、在包容程序中使用ActiveX控件六、小结前言ActiveX控件是一种实现了一系列特定接口而使其在使用和外观上更象一个控件的COM组件。
ActiveX控件这种技术涉及到了几乎所有的COM和OLE的技术精华,如可链接对象、统一数据传输、OLE文档、属性页、永久存储以及OLE 自动化等。
ActiveX控件作为基本的界面单元,必须拥有自己的属性和方法以适合不同特点的程序和向包容器程序提供功能服务,其属性和方法均由自动化服务的IDispatch接口来支持。
除了属性和方法外,ActiveX控件还具有区别于自动化服务的一种特性--事件。
事件指的是从控件发送给其包容程序的一种通知。
与窗口控件通过发送消息通知其拥有者类似,ActiveX控件是通过触发事件来通知其包容器的。
事件的触发通常是通过控件包容器提供的 IDispatch接口来调用自动化对象的方法来实现的。
在设计ActiveX控件时就应当考虑控件可能会发生哪些事件以及包容器程序将会对其中的哪些事件感兴趣并将这些事件包含进来。
与自动化服务不同,ActiveX控件的方法、属性和事件均有自定义(custom)和库存(stock)两种不同的类型。
自定义的方法和属性也就是是普通的自动化方法和属性,自定义事件则是自己选取名字和Dispatch ID的事件。
而所谓的库存方法、属性和事件则是使用了ActiveX控件规定了名字和Dispatch ID的"标准"方法、属性和事件。
ActiveX控件可以使COM组件从外观和使用上能与普通的窗口控件一样,而且还提供了类似于设置Windows标准控件属性的属性页,使其能够在包容器程序的设计阶段对ActiveX控件的属性进行可视化设置。
ActiveX控件提供的这些功能使得对其的使用将是非常方便的。
-- 作者:luofeng4213-- 发布时间:2010-11-4 16:57:48-- C++Builder中开发Activex1.创建自己的ActiveX控件C++Buider开发ActiveX的功能非常强,但是这方面的资料却比较少,本人经过摸索终于搞定了创建Web方式Activex的基本方法⑴打开BCB6,新建一个Activex工程,选择时注意选择ActiveX标签页的Active Form⑵在弹出的对话框中设置ActiveX Name为ActFrm,后面的实现单元和工程名都会自动更改⑶勾选Make Control Licensed和Include Version Information,确定之后会出现一个和标准Form类似的⑷在C++Builder自动创建的窗体上面添加一个按钮,随便实现一些功能,如Sh owMessage("点击了按钮");⑸设置Package相关参数。
你肯定希望自己创建的ocx文件不依赖本机的开发环境,因此必须对编译器作适当的设置ⅠProject->Option->Packages去掉Build With Runtime Packages前面的勾ⅡProject->Option->Linker 去掉动态RTL前面的勾,这样你产生的ocx文件就不会依赖BCB的开发环境了好了做完上面的步骤,一个简单的Activex就创建完成了,可以选择Run菜单下的Register ActiveX Server进行注册,你就可以看到你的开发成果了,如果需要发布到互联网上,通过浏览器进行注册的话,那就需要做下面的设置⑹设置Web Deployment Options点击Web Deployment Options菜单,出现Web Deployment 选项设置窗口,有三个属性页ⅠProject主要用于设置Activex文件的位置信息①Target dir(Full path of the deployed OCX) 设置OCX目录,也就是在选择Project->WebDeploy之后ocx文件将要拷贝到的目录,我们可以在当前工程下建立一个punlished目录作为发布目录e.g:当前工程目录为f:\\projscts\\firstocx 发布目录为f:\\projscts\\firsto cx\\published(也就是Target dir)②Target URL( Virtual path of the deployed OCX)如果客户端没有安装我们制作的activex控件,浏览器会自动到指定的网址进行寻找e.g:本机IP192.168.0.228 端口8080 虚拟目录myapp(使用的Web服务器是Tomcat,myapp也就是D:\\Tomcat\\webapps下的目录) 此处输入http://192.168.0.228:8080/myapp/③HTML dir(Full path of the deployed HTML file)和Activex文件配套的html文件的存放位置,这里可以把它设置成f:\\proj scts\\firstocx\\published,主要是为了方便管理在General Options下勾选一下四项e CAB file compressionb.Deploy required packagesc.Include file version numberd.Deploy additional filesⅡPackages 这个页面用于发布控件中用到的额外的包,因为我们在第(5)步中已经去掉了额外的包,所以这一页为空ⅢAdditonal Files,这一页用于发布其它文件,至于ocx文件有没有用到其它的文件我们可以使用vc++带的工具Dependency Walker来进行查看,根据De pendency Walker的显示结果我们知道ocx使用到的dll文件在windows的目录下已经存在,没有必要随我们的ocx文件一起发布但是由于我们制作控件的时候选择了Make Control Licensed,所以随包一起发布的应该还有一个lic文件,这个文件在工程目录下,我们在Additonal Fil es页中点击Add将lic文件包含进来就可以了这个lic文件让我做控件走了不少弯路,开发出来的控件在本地可以运行良好(也就是在c++builder的run菜单里面使用register Activex server注册),但是一旦移到其它位置总是不能成功,而且最开始的时候也不知道使用vc++带的ActiveX Control Test Container工具来测试已经生成的ocx控件恩,点击WebDeploy菜单就大功告成了么?没有。
基于MFC的ActiveX控件开发ActiveX 控件是基于组件对象模型(COM) 的可重用软件组件,广泛应用于桌面及Web应用中。
在VC下ActiveX控件的开发可以分为三种,一种是直接用COM的API来开发,这样做显然非常的麻烦,对程序员要求也非常高,因此一般是不予考虑的;一种是基于传统的MFC,采用面向对象的方式将COM的基本功能封装在若干MFC的C++类中,开发者通过继承这些类得到COM支持功能。
MFC为广大VC程序员所熟悉,易于上手学习,但缺点是MFC封装的东西比较多,因此用MFC开发出来的控件相对会比较大,因此比较适于开发桌面ActivexX控件,尤其是有GUI界面的控件。
第三种就是基于ATL的,ATL可以说是专门面向COM开发的一套框架,使用了C++的模板技术,在运行时不需要依赖于类似MFC程序所需要的庞大的代码模块,更适合于Web应用开发。
本文介绍的是采用第二种方式,即应用MFC进行桌面可视控件开发的方法步骤,开发环境则是基于VC2005。
1.创建控件项目打开VC2005后,我们要先创建一个项目,在新建项目页的左侧选择Visual C++-MFC,在右侧选择MFC ActiveX控件,填上解决方案和项目名称,比如在这里我的项目名称是activexdemo1,解决方案名称是activexdemo。
然后进入控件向导页,在向导的第二页有个运行时许可证,选中这个的话会在生成控件的同时生成一个许可证文件,其他用户在使用这个控件的时候必须同时附有这个许可证,在此我们保持默认状态,不选。
下一页是关于项目中各部分的命名问题,可以根据需要自定义,这里就按默认的情况不做修改了。
下一页是选择控件基于哪种控件的扩展以及控件的一些基本特性。
如果新建的控件是基于某种特定控件的话,就在创建的控件基于下选择所要继承的控件名,否则就保持none。
下方的附加功能根据实际需要进行选择,并且可以将鼠标放置于选项上方,功能的说明会自动显示在动态出现的小提示信息窗口中。
visualstdio开发ActiveX控件基本教程⽐较少⼈会专门开发控件,但是有时候⼯作需要,需要开发简单的控件,控件技术因为要和浏览器交互,所以有些需要注意的点,此⽂为需要开发简单控件准备,基本满⾜基本的功能要求。
包含必要的⼯程设置,⽅法的创建和调⽤,属性的添加和使⽤,事件的添加,以及事件的使⽤,和JS的交互⽰例。
希望对你有⽤。
1. 以管理员权限打开Visual Stadio并创建MFC ACTIVEX ⼯程。
以管理员权限打开是因为编译调试时,会在系统注册这个控件,需要管理员权限2. 设置调试环境。
以免⽆法进⾏调试。
3. 设置静态库使⽤MFC4. 在类视图中,添加⽅法5. 在类视图中添加属性,如上图选择属性。
属性的⽤法,1. 属性可以在初始化的时候设置。
如下图JS。
2. 这样设置的属性,需要在代码中持久化3. 属性更改后。
控件中会得到通知。
响应函数中在值改变时,会得到通知。
6 . 为了⽅便调试,可以增加控制台界⾯,将调试信息输出到控制台⾸先,在App类中,添加如下代码。
就可以调⽤ printf 输出信息到控制台,调试⾮常⽅便。
7. 添加事件,和JS交互,有些事件处理事件⽐较长,可以通过事件通知的形式,通知JS更新状态。
还是在类视图,这次选择CTRL类,右击菜单,如下:事件函数名称可以⾃定义,也可以⽤已有的⼏个事件。
在完成添加后,会⾃动添加如下代码。
也可能是在类的定义⾥,在添加完事件后,在JS中,可以添加事件处理,如下8. 因为是Unicode编码⽅式,所以需要⽤到wide转mutil字符的函数,如下,9. 因为JS和ActiveX交互,地址空间是不⼀样的,如果ActiveX中申请的内存需要返回到JS中,需要⽤Sys接⼝申请内存,如下:10. 对于mutil和wide char 的转换,还有⼀种⽅式就是使⽤CString 构造。
CString 有传muti char的构造函数。
实现⾃动转化,你就说⽜不⽜逼,意不意外。
用MFC开发ActiveX控件用MFC开发ActiveX控件一、 ActiveX控件简介1.1、概述ActiveX 控件是基于组件对象模型 (COM) 的可重用软件组件,广泛应用于桌面应用及Web应用中。
更通俗的讲:ActiveX控件是一种实现了一系列特定接口而使其在使用和外观上更象一个普通控件的COM组件。
不同的是ActiveX控件基于COM组件实现而了统一的接口。
因此,ActiveX控件可以跨进程,跨平台甚至跨语言使用。
ActiveX控件涉及到了几乎所有的COM和OLE的技术精华,如可链接对象、统一数据传输、OLE文档、属性页、永久存储以及OLE自动化等。
ActiveX 控件一般作为进程内服务器(通常是一个小型对象)实现,这决定了ActiveX 控件不能独立运行,必须嵌入到某个容器应用程序中与其一起运行。
1.2、ActiveX控件的基本特性一个典型的ActiveX控件一般具有方法、属性和事件这三种特性。
下面是这三种特性的简单描述:ActiveX控件必须对外公开自己的属性和方法,以适合不同特点的容器应用程序提供功能服务,其属性和方法均由OLE自动化服务的IDispatch接口来支持。
这就使我们在容器中使用ActiveX控件时,可以直接通过激活ActiveX控件提供(如的IDispatch接口中的方法和属性来调用ActiveX控件中实现的属性和方法。
在MFC中可以直接调用CWnd:: InvokeHelper、CWnd:: SetProperty、CWnd:: GetProperty在容器应用程序中来激活ActiveX控件提供的IDispatch接口中的方法和属性)。
ActiveX控件除了属性和方法外,ActiveX控件还具有区别于OLE自动化服务的一种特性——事件。
事件指的是从控件发送给其容器应用程序的一种通知,由容器应用程序来响应该通知。
与普通窗口控件通过发送消息通知其拥有者类似,ActiveX控件是通过触发事件来通知其容器应用程序的。
1. 问题场景在C/S架构的系统中,客户端要实现某些业务功能,可以通过安装相关的应用程序集来方便的实现。
同样的需求,在B/S架构的系统里实现起来却比较困难。
因为所有的程序都放在服务器端,客户端只是采用浏览器,通过HTTP协议来访问服务器端。
比较成熟的解决办法是开发ActiveX控件安装到客户端,这样客户端的浏览器就可以访问本地的ActiveX控件来执行相关的本地操作。
通常开发ActiveX使用C,C++或VB开发,本文将要谈论的,就是使用C#开发一个ActiveX控件。
3. 注意的地方,C#开发的ActiveX控件只可在装有Framework的系统上才能用。
2. 开发工具Visual Studio 2010.NET版本:2.0开发语言:C#3. ActiveX控件项目创建(1),新建一个【Windows窗体控件库项目】,项目名为ActiveXDemo选择.NET Framwork2.0版本,因为.Net2.0安装文件只有20多M,客户端容易接受,而且如今多数家用电脑都装了.Net2.0(2),需要更改两个地方的设置,选中刚创建的ActiveXDemo项目:1).右键选择“属性 >> 应用程序 >> 程序集信息”设置,勾选“使程序集 COM 可见”:2). 右键选择“属性 >> 应用程序 >> 生成”设置,勾选“为COM 互操作注册”(注意,此处如果是在debug 状态下修改的,那么在调到release状态下还需要再设置一次):4. ActiveX控件功能添加(1),添加一个用户控件(2),为了使该用户控件作为一个ActiveX控件进行使用,还需要做以下修改:首先,为控件类MiugoX.cs添加GUID,这个编号将用于B/S系统的客户端调用时使用(可以使用工具-创建GUID 菜单创建一个GUID):[Guid("DF0769A5-99D3-4BE0-90B8-91C65A92118C"), ProgId("ActiveXDemo.MiugoX"), ComVisible(true)] public partial class MiugoX : UserControl, IObjectSafety{……// DF0769A5-99D3-4BE0-90B8-91C65A92118C就¨ª是º?刚?刚?创ä¡ä建¡§的Ì?Guid(3),为了让ActiveX控件获得客户端的信任,控件类还需要实现一个名为“IObjectSafety”的接口。
ActiveX控件可以看作是一个极小的服务器应用程序,它不能独立运行,必须嵌入到某个容器程序中,与该容器一起运行。
这个容器包括WEB网页,应用程序窗体等。
ActiveX控件的后缀名是OCX或者DLL。
一般是以OCX和动态库共存的形式打包成cab或者exe的文件放在服务器上,客户端下载后运行安装cab或exe解压成OCX和动态库共存的文件,然后注册ocx文件。
ActiveX控件是基于COM标准,使得软件部件在网络环境中进行交互的技术集。
它与具体的编程语言无关。
作为针对Internet应用开发的技术,ActiveX被广泛应用于WEB 服务器以及客户端的各个方面。
同时,ActiveX技术也被用于方便地创建普通的桌面应用程序,此外ActiveX一般具有界面。
2.三个概念:ActiveX、OLE和COM从时间的角度讲,OLE是最早出现的,然后是COM和ActiveX;从体系结构角度讲,OLE和ActiveX是建立在COM之上的,所以COM是基础;单从名称角度讲,OLE、ActiveX 是两个商标名称,而COM则是一个纯技术名词,这也是大家更多的听说ActiveX和OLE 的原因。
COM是应OLE的需求而诞生的,所以虽然COM是OLE的基础,但OLE的产生却在COM之前。
COM的基本出发点是,让某个软件通过一个通用的机构为另一个软件提供服务。
ActiveX最核心的技术还是COM。
ActiveX和OLE的最大不同在于,OLE针对的是桌面上应用软件和文件之间的集成,而ActiveX则以提供进一步的网络应用与用户交互为主。
COM对象可以用C++、Java和VB等任意一种语言编写,并可以用DLL或作为不同过程工作的执行文件的形式来实现。
使用COM对象的浏览器,无需关心对象是用什么语言写的,也无须关心它是以DLL还是以另外的过程来执行的。
从浏览器端看,无任何区别。
这样一个通用的处理技巧非常有用。
3.ActiveX控件工程的创建使用VS2013有两种方式可以创建ActiveX工程:第一种:创建“MFC ActiveX Control”工程;第二种:创建“ATL 项目”。
C#开发ActiveX控件,.NET开发OCX控件案例讲下什么是ActiveX控件,到底有什么作用?在网页中又如何使用OCX控件,如QQ邮箱的大文件上传应该就是使用OCX控件的,下面开始吧。
0. 前言ActiveX控件以前也叫做OLE控件或OCX控件,它是一些软件组件或对象,可以将其插入到WEB网页或其它应用程序中。
使用ActiveX插件,可以轻松方便的在Web页中插入多媒体效果、交互式对象以及复杂程序等等。
通常使用C++或VB开发ActiveX控件,本文探讨一下在Visual Studio 2005环境中使用C#开发ActiveX控件的技术实现。
1. 问题场景在C/S架构的系统中,客户端要实现某些业务功能,可以通过安装相关的应用程序集来方便的实现。
同样的需求,在B/S架构的系统里实现起来却比较困难。
因为所有的程序都放在服务器端,客户端只是采用浏览器,通过HTTP协议来访问服务器端。
比较成熟的解决办法是开发ActiveX控件安装到客户端,这样客户端的浏览器就可以访问本地的ActiveX控件来执行相关的本地操作。
本文将要谈论的,就是使用C#开发一个ActiveX控件实现读取并显示客户端的系统时间。
2. 开发环境Windows XPVisual Studio 2005.NET Framework 2.0(C#)3. 实现过程3.1.ActiveX控件开发在Visual Studio 2005开发环境中,可以使用Windows控件库项目实现ActiveX控件的开发,但是需要对项目做一些必要的设置。
下面就来看看如何使用Windows控件库项目开发一个ActiveX控件。
首先创建一个应用程序解决方案,并添加一个Windows控件库项目:更改“项目属性-应用程序-程序集信息”设置,勾选“使程序集COM 可见”:更改“项目属性-生成”设置,勾选“为COM Interop 注册”(注意,此处如果实在debug 状态下修改的,那在调到release状态下还需要再设置一次):修改AssemblyInfo.cs文件,添加[assembly: AllowPartiallyTrustedCallers()]项(需要引用System.Security名称空间):using System.Reflection;using pilerServices;using System.Runtime.InteropServices;using System.Security;[assembly: AssemblyTitle("Yilin.Preresearch.CSharpActiveX")][assembly: AssemblyDescription("")][assembly: AssemblyConfiguration("")][assembly: AssemblyCompany("10BAR")][assembly: AssemblyProduct("Yilin.Preresearch.CSharpActiveX")][assembly: AssemblyCopyright("Copyright © 10BAR 2009")][assembly: AssemblyTrademark("")][assembly: AssemblyCulture("")][assembly: AllowPartiallyTrustedCallers()][assembly: ComVisible(true)][assembly: Guid("114d1f0c-43b8-40ac-ae7c-5adccc19aef3")][assembly: AssemblyVersion("1.0.0.0")][assembly: AssemblyFileVersion("1.0.0.0")]添加一个Windows用户控件:按照开发Windows用户控件一样的思路完成该控件的开发,本例中主要实现了两个业务功能,一个是提供一个公共方法,用于读取USBKey中保存的签名证书,保存到本地C 盘根目录下,并返回操作信息;另一个业务功能提供UI界面,包括一个Button控件和一个Label控件,Button控件的Click事件调用前面提供的那个方法,并将返回信息显示到Label 控件上。
使用MFC开发ActiveX控件全过程Visual C++是开发ActiveX控件的强大工具,它的特点是开发周期短、便于使用,因此它已经成为开发ActiveX控件的主要工具之一。
Visual C++集成开发环境,使用了微软自己的类库MFC,MFC对开发Ac tiveX控件提供了全面的支持,本文讲述的过程均在Visual C++ 6.0(以下简称VC)中实现。
1、创建工程:对于使用过VC的人,可以很容易地创建一个开发ActiveX控件的工程,没有使用过VC的人,按照下面的操作步骤,也可以很快创建一个同样的工程出来。
第一步:“File”—>“New”—>“(Projects)MFC ActiveX ControlWizard”,在“Project Name”中输入合适的工程名(以test为例),在“Location”中选择工程文件存放路径,然后,“OK”进入下一步;第二步:选择你想在这个工程中生成的ActiveX控件的个数(至少一个),其余选项决定是否生成一些辅助文件,通常按照默认设置即可,“Next”进入下一步;第三步:编辑你的工程中各个类和文件的名称,配置一些辅助选项,可以全部选择默认设置,“Fini sh”进入下一步;第四步:展示向导为你的工程生成的各种配置信息,“Cancel”重新设置不满意的选项,“OK”结束工程的创建。
2、绘制控件:MFC将对ActiveX控件的支持封装在COleControl类中,所有ActiveX控件均从这个类派生。
绘制控件的全部操作则集中在一个虚函数中—OnDraw(),其默认实现如下:void CTestCtrl::OnDraw(CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid){// TODO: Replace the following code with your own drawing code.pdc->FillRect(rcBounds,CBrush::FromHandle((HBRUSH)GetStockObject(WHITE_BRUSH)));pdc->Ellipse(rcBounds);}可以看到,OnDraw()函数的默认实现是在矩形rcBounds中绘制一个椭圆,通过改写OnDraw()函数中的内容,就可以绘制自己想要的控件了。
兵工自动化 软件技术 O. I. Automation 2005年第24卷第3期 Software Technique 2005, Vol. 24, No. 3
·105·文章编号: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年毕业于中北大学,现华南理工大学在读硕士,从事智能控制理论与应用研究。兵工自动化 软件技术 O. I. Automation 2005年第24卷第3期 Software Technique 2005, Vol. 24, No. 3
·106· OnTimer(),使控件经过预定时间之后切换代表不同工作时段的位图资源,以表现动态效果,在OnTimer() 函数中编写如下代码: switch(n) {case 1: Bitmap.LoadBitmap(IDB_BITMAP1); //装入位图IDB_BITMAP1,工作状态1 break; //跳出switch语句 case 2: Bitmap.LoadBitmap(IDB_BITMAP2); // 装入位图IDB_BITMAP2,工作状态2 break; //跳出switch语句 case 3: Bitmap.LoadBitmap(IDB_BITMAP3); //装入位图IDB_BITMAP3,工作状态3 break; //跳出switch语句 } n%=3; //每调一次函数,换一个工作状态,循环3种状态 n++; //计数增加 通过程序使控件调用一次函数替换一张位图,产生动态效果,以表现不同工作状态。控件除了必要的外观,还需要通过控件的事件、方法与工控软件内核沟通。事件是指当应用者对控件施加操作,控件获知该操作后通知容器程序,容器程序作出处理;方法是指当容器调用该方法时,控件内部完成操作。而完成该操作的函数实体在控件内部。事件和方法都有固有的和自定义两种类型。固有的是windows系统默认的,通过MFC ClassWizard可添加事件和方法。 3 工控界面的设计 开发工控界面之前,应将所开发的控件进行注 册后方可像其他标准控件一样使用。注册方式为:打开开始菜单,执行“regsvr32”+控件的路径。注册成功后将需要用到的控件载入VB开发环境中使用。将其应用于化工厂转窑工控软件界面制作,效果如图1。该界面效果直观,形象。反映了工作现场状态,满足工控软件的应用需求。
图1 工控界面效果图 4 结语 用控件开发方式可在较短的时间内开发出画面形象,美观的工控界面。将复杂的工控软件的界面和控制内核分离,有利于编程人员分工合作和处理内核问题。同时使程序模块化,便于程序的调试。是一种有效的开发模式。
参考文献: [1] 陈建春. Visual C++高级编程技术—开发实例剖析[M]. 北京: 电子工业出版社, 1999. [2] (美)Namir Clement Shammas. 王国印, 张赤红 译. Visual C++使用指南[M]. 北京: 清华大学出版社, 1995. [3] 马安鹏. Visual C++6 程序设计导学[M]. 北京: 清华大
学出版社, 2002.
摘登编号:1006-1576(2005)03-13;收稿日期:2004-10-17
来稿摘登
安全网管异构体系的实现 钟其兵,陈波 (西南科技大学 计算机学院,四川 绵阳 621002)
摘要:安全网管异构体系将各厂家的IDS和防火墙加以整合,统一管理,构建网络安全防御系统。系统通过局域网工
作站和GUI客户端进行配置,以管理远程模块。IDS和防火墙,在第一层C/S结构中为用户表示层,第二层C/S结构中为
中间层。系统交互通过IDS代理,并产生新的入侵检测和防火墙规则,实现有效的网络安全管理。
Implementation of Different System for Secure Network Management
ZHONG Qi-bing, CHEN Bo (College of Computer, Southwest University of Science & Technology, Mianyang 621002, China)
Abstract: Different system for network security management is that different IDS and firewall products of different companies were integrated to manage them unitedly and to construct defense system of network security. The system was configured through LAN workstation and GUI client side to manage remote model. IDS and firewall is used as denotation layer of user in first layer C/S structure, and as middle layer in second layer C/S structure. The communication between the system and denotation and middle layers was implemented with IDS agent to generate new rules of inbreak detection and firewall, and network security management was realized.