设为首页 加入收藏

TOP

VC2005从开发MFC ActiveX ocx控件到发布到.net网站的全部过程(三)
2014-11-23 21:34:53 】 浏览:1754
Tags:VC2005 开发 MFC ActiveX ocx 控件 发布 .net 网站 全部 过程
ject 方式。
请注意:不能仅签名CAB文件,CAB包中所有DLL文件都要先签名后再打包,再签名CAB文件,否则IE浏览器会显示为“未验证的发行者”而影响正常使用,甚至杀毒软件会认为是毒而被删除!如下图所示的实际案例:


在Web页中加入ActiveX 控件
在修改了IE的安全设置后,依然不能调用控件的方法,需要将访问的站点设置为“受信站点”,则方能正常使用控件
在 和之间插入

则在IE窗口上方不会弹出黄色提示条 。
  在HTML页面 中使用ActiveX控件包含三个基本操作:将控件放入HTML中;将该控件下载给用户;在用户机器上安装该控件。如果只是针对IE用户,在HTML中插 入ActiveX控件就比较简单;如果同时兼顾IE和Netscape用户,则要做更多工作。大家知道,HTML文件由文本和各种标志(tags)组 成,ActiveX 控件对于IE在HTML中的标志是<OBJECT>,该标记有几个重要的参数特性,它们是:
  1.ID:为控件提供一个标识名称,为HTML代码提供一种访问该控件的方式。
   2.CLASSID:是该控件唯一的UUID,告诉IE装入哪个对象。如果使用已经开发好的控件,它的CLASSID可以通过调用Win95或NT下的应 用Regedit来查找。从开始菜单中运行该程序,展开HKEY_CLASSES_ROOT项,可以看到按字母顺序排列的注册表,找到需要使用的控件名, 例如WClnt,展开时可看到一个CLSID文件夹,里面就是该控件的CLASSID。
  如果是自己用VC开发控件,该UUID可以在ActiveX控件项目中的ODL(对象描述库)文件中找到;通过查看控件的类信息注释来定位特定控件的UUID,例如,要找到CMyControl控件的UUID,则需要找到以下代码:
  // Class information for CMyControl
  [uuid (051C4748-1262-11D2-87C1-00A024D948FB),
  licensed,
  helpstring(“CmyControl Control”), control ]
  uuid后面括号中的内容就是该控件的UUID。
  3.CODEBASE:如果在用户机器上没有控件的当前版本,该参数告诉用户浏览器在哪里可找到要下载的控件和最新版本号.当控件作了修改后,可以更改版本号强制用户重新下载。
  4.PARAM:该标记用于设置控件的初始属性值,它有两个特性:Name和Value,即属性名称和属性值。
  此外还有一些标记,如:Width表示该控件所占的宽度,Height表示高度等,总体来说,这样一个插入控件的HTML代码和插入Java Applet的HTML代码非常相似。
  下面是一个嵌有ActiveX控件的HTML代码示例:
 
ID=“CMyControl”
CLASSID=“clsid:051C4748-1262-11D2-87C1-00A024D948FB ”
CODEBASE=“http://www.mysite.com.cn/ocxdir/mycontrol.ocx#version=1,0,0,1”
WIDTH=400
HEIGHT=200
ALIGN=center
HSPACE=0
VSPACE=0

  如果希望控件还 能在Netscape中运行,除了Netscape需加装插件外,HTML也要加一些附加标记,下面的例子中EMBED段就是为Netscape加上的。 如果使用MFC开发OCX控件,则少数用户第一次访问时除了下载OCX文件外,还要下载相应的MFC DLL,下载量变大,这时可将相关文件在服务器端打包成可以在客户端自解压安装的CAB文件。经过修改后的HTML代码段如下:
<ALIGN=“CENTER” CLASSID=“clsid:
7BCA18C6-2178-11D2-87C1-00A024D948FB”
WIDTH=“1200” HEIGHT=“900” ID=“marquee”
CODEBASE=“http://218.168.188.188/scadaweb/
WClnt.cab#version=1,0,0,1”>
<EMBED ALIGN=“CENTER”CLASSID=“clsid:7BCA18C6- 2178-11D2-87C1-00A024D948FB”
WIDTH=“1200” HEIGHT=“900” ID=“marqueequot;”
CODEBASE=“http://218.168.188.188/scadaweb/
WClnt.OCX#version=1,0,0,1”
TYPE=“application/oleobject” >




实时动态页面的实现方案
  对实时动态页面的要求多产生于一些要求自动更新实时数据的应用中,如电网监控、股市监测等。具体要求是:用户只需选取希望浏览的图表,但无需介入操作,该图表就能根据实时数据不断更新,用户总能观察到最新情况。
  要实现上述功 能,结构上有两种方案:一种是设置一个中介服务器,该服务器作为控件和后台系统信息交流的中介;另一种是不设中介服务器,但在提供实时数据的后台服务器上 留出供控件通信用的数据接口,控件可以直接从后台服务器上定时获得当前实时数据。按数据提供方式分也有两种:一种是由客户端定时向服务器发出请求,指明需 要的实时数据,服务器收到请求后将满足请求的动态数据发送至相应客户;另一种是客户端只请求一次,服务器端便定时将满足请求的实时数据传到客户端,直到客 户更换要显示的图表或停止刷新。上述各方案都有其优点和局限,在应用中可考虑实际情况采用相应方案。
  工作流程为:用 户先从Web服务器上下载包含ActiveX 控件的网页,控件随即在客户机上注册运行,并通过Winsock同中介服务器或直接同提供实时信息的网,如股票信息网相连接,定时取得动态实时数据,并刷 新显示。在这个体系中,客户有两条线路获得信息,一条是和Web Server的连接,从这条线上用户访问主页;另一条就是控件和后台信息网的连接,从这条线路上用户可以访问实时数据。后一条线路用Winsock建立, 传输速度远大于前一条线路,且控制灵活、效率高,不和主页下载争资源。通过这条线路,用户甚至可以传送远程控制信息实现遥控操作。
利用MFC开发ActiveX控件
  利用VC5.0 开发的这种控件,功能可扩展性强,理论上独立的VC5.0程序具有的功能,该控件都能实现,例如控件直接绘制浏览器,可以使用OpenGL等图库,图形图 像功能强大。实时数据刷新频率理论上可达毫秒级,用户通过鼠标可以实现各类交互操作,如旋转、缩放,图2就是一幅GL图形,并有一个缩放工具条进行缩放操 作。如果是在计算机上观看,可以看到这几个三维图在不断旋转。
  应该说,较好的 开发工具可直接用API编程或使用ATL模板库,利用MFC开发ActiveX控件不是一个好的选择,因为控件运行需要MFC DLL的支持。假如客户机器上没有这些类库(这种情况很少,但确实存在),第一次下载就要花费些工夫。不过对于熟悉MFC的开发员来说,这些问题相对 MFC提供的便利来说都是可以忽略的。
  由于VC5.0 对ActiveX控件的开发提供了许多便利,所以开发一个ActiveX控件并不像许多人想象中的那么困难复杂,通过VC 5.0的AppWizard,实现控件的主类从ColeControl类派生出来,该类则是CWnd的一个子类,所以你可

首页 上一页 1 2 3 4 下一页 尾页 3/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇VS之多态虚函数的实现 下一篇随想Visual C++ “导出/导入类的..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目