`
lifaming15
  • 浏览: 64728 次
  • 来自: ...
文章分类
社区版块
存档分类

第一章 什么是ActiveX控件?

 
阅读更多

什么是ActiveX控件?

ActiveX控件是提供了许多能够被其他应用如IE和其他如由Visual Basic和Visual C++开发工具创建的应用程序重用的一些泛函数的可编程基础.ActiveX控件是存储在动态链接库(DLL)文件和拥有.ocx或.dll后缀文件中的COM对象.

NOTE
When the client application needs to use the ActiveX control, DLL files are loaded into the client application's address space. Because the DLL file is loaded into the same process as the client's, ActiveX controls are typically referred to as In Process (InProc for short) COM objects.

Activex控件和将在第2章讨论的固有控件很相似:他们代表性的提供了一个图形接口,比如按扭或文本框,通过他们,用户可以让这些控件相互作用.和固有控件相似的,ActiveX可以拥有方法,属性和集合,它们能触发事件.然而,考虑到控件,一个对象不需要有图形用户接口或公共的方法,属性,事件和集合.如果一个控件没有这些特点中的一个-----比如,没有用户接口,方法-----这个控件相当糟糕,根本没用.因此本章的每一个控件例子包含了一个用户接口和许多方法,属性和事件.

没有用户接口,但是至少有一个公共方法,属性,事件或集合(有时候都有)的对象被认为是COM对象.尽管没有用户接口,COM对象仍然很有用.COM对象总是被创建成提供许多不需要用户接口或是用户接口与它无关的公共方法-----比如,你不需要在网页中拥有从数据库读取数据和插入数据的系统.ActiveX控件能够被客户端重用,同样的COM对象能够被客户端应用程序重用.在本章,我们将集中创建ActiveX控件,但是任将介绍简单的COM对象(不相似)来创建ActiveX控件.

插入ActiveX控件到web页面中

在学习怎样创建ActiveX控件之前,你需要知道怎样在web页面上插入将被装载进IE的控件.我们将在本章中使用IE来测试我们创建的所有控件.在web页面中插入ActiveX控件是很简单的.你只需使用HTML<object>标签.这个标签就象<H1>,<p>或其他任何我们将在第2章讲述的HTML标签一样.因为在DHTML对象模型中,所有的HTML元素都被设计成一个对象,你可以象写其他HTML元素一样写出<OBJECT>标签.在本章稍后的"给Visual Basic控件编写脚本"和"给ATL控件编写脚本"节中,你将知道怎样为ActiveX控件编写脚本.

<OBJECT>标签拥有和其他任何HTML标签一样的属性.CLASSID是所有属性中最重要的.它告诉IE装载哪一个控件到页面中.CLASSID属性指向了ActiveX控件的class Id(缩写CLSID).CLSID是标识ActiveX控件或许多其他COM对象类型的128位全局唯一标识符(GUID).

GUID保证时间,空间跨越的唯一性.比如,如果某人在南极洲(可能出现)创建了一个CLSID,在同一个准确时间,你在美国也创建了一个,CLSID将会不同.(如果某人在某处老家创建一个GUID,GUID将照样唯一!)用来创建GUID或CLDID的算法是很复杂的,所以本书将不会介绍.相信我-----它没问题.

你可能想知道为什么不能只给ActiveX控件取一个有关系的名字,象"Bob"来代替GUID,这样将很难阅读.想象比如你给你的ActiveX控件取名为"Bob",有人在津巴布韦取了相同的名字.如果用户在她机器上安装了你的控件,然后安装津巴布韦的控件,客户端应用程序想用"Bob"控件,将总是使用的津巴布韦的控件.为什么?安装来自津巴布韦的"Bob"控件将使你的控件不可用,因为都用了相同的名字.

在很多项目中,这种情况将会导致版本问题,因为客户端应用程序可能已经被创建成访问在你的控件的存在的方法和属性但是在来自津巴布韦的控件不存在.如果你使用GUID来标识你的控件,客户端应用通过控件的CLSID来引用将保证能够访问到你的控件而不是来自津巴布韦的控件.

CLSID被存储在以下的注册表键中:

HKEY_CLASSES_ROOT/CLSID

在注册表的这个键下可能有成百上千的CLSID来标识你系统中的ActiveX控件和其他的COM对象.图5-1显示了注册表中的Calendar控件的CLSID:

{8E27C92B-1264-101C-8A2F-040224009C02}
如果你仔细查看注册表编辑器的右框,你会找到这个键值.这个键值里面列出了与"Calendar Control 8.0"相关
的名字.所有的CLSID都有相同的格式:他们都是一个128位的数字标识.
Click to view at full size.
图5-1 注册表中日历控件的CLSID.
现在关于CLSID你已经知道一点了,我们再来看看CLASSID的属性.CLASSID属性告诉IE你想装入页面的ActiveX
控件的CLSID,当给<Object>标签指定CLASSID时,你必须首先在CLSID值加一个"clsid"前缀,不要包含你在注
册表中直接看到的CLSID.例如,要把日历控件嵌入页面,你要把下面的HTML代码加入到页面中.代码运行结果如图5-2.
<OBJECT CLASSID="clsid:8E27C92B-1264-101C-8A2F-040224009C02"></OBJECT>
IE查找到<Object>标签以后立即查找CLASSID属性.然后IE读取CLASSID属性的值,即你想插入到页面的ActiveX控
件的CLSID,然后在注册表中查找该CLSID.如果IE在注册表中查找到CLSID,它就读取名为InprocServer32的
子键,它是指定页面显示IE应该载入到页面的名为DLL(.ocx或.dll文件)的名称和路径.图5-3显示了日历控件的
InprocServer32键.
Click to view at full size.
图5-2 日历控件插入到页面
当你看到图5-3注册表编辑器右框内InprocServer32键,你看到两个值,第一个值是默认值,它指定为ActiveX控件

载入DLL的路径和名称.对于日历主件,(Default)值指定了文件mscal.ocx的路径C:/WinNT/System32.第二个值

是ThreadingModel.

NOTE
I won't cover the advanced COM topic of threading models in this book. Just note that the threading model we're talking about is the Apartment model. Only controls that support at least the Apartment-threading model can safely be used on a Web page in Internet Explorer. I'll show you how to mark controls as Apartment threaded when we create ActiveX controls.

Click to view at full size.

图5-3 日历主件的InprocServer32值

除了CLASSID,你可能想为<OBJECT>标签指定一些其他重要的属性.要为ActiveX控件编写脚本,你需要包含ID属性和
给它指定任意的名称,就象你想为其他HTML标签写脚本一样.有时候为<OBJECT>标签指定HEIGHT和WIDTH属性也很重
要.如果不这样,控件可能不会正常显示因为IE不是自动调整.我们将在"创建Visual Basic ActiveX控件"这章研究.


  


  
分享到:
评论

相关推荐

    ActiveX控件的使用与开发

    ActiveX控件是微软在90年代推出的一种技术,它...本资料的第18章很可能涵盖了上述知识点,并通过具体的例子和代码帮助初学者理解ActiveX控件的开发过程。建议仔细阅读每个章节,动手实践每一个示例,以加深理解和掌握。

    学用Visual.C.6.0开发Active.X控件

    第一章 COM入门 第二章 ATL入门 第三章 MFC入门 第四章 在ATL中创建Internet Explorer(Lite)ActiveX控件 第五章 在ATL中创建Full ActiveX控件 第六章 ATL对ActiveX控件的属性页面的支持 第七章 ATL中对ActiveX控件...

    闻怡洋VC专题教程ActiveX控件开发 进程/线程控制 文件操作 内存管理

    +-- 第一章 Internet相关开发 |------ 1.1 如何编写CGI程序 |------ 1.2 一种更亲切的CGI开发系统WinCGI |------ 1.3 利用ISAPI开发CGI程序 |------ 1.4 利用WinInet开发Internet程序 +-- 第二章 ActiveX控件开发 ...

    基于通信协议的led屏activex控件设计--电气工程及其自动化.doc

    **第一章 绪论** 1.1 选题的目的和意义 设计这样的控件旨在提高LED屏幕的编程便利性,简化与硬件设备的交互,使软件开发人员能够更容易地集成LED显示功能,同时提升系统的灵活性和可扩展性。 1.2 LED发光原理 LED...

    VB active 控件

    #### 第一章:创建工程 在开发VB ActiveX控件的过程中,首先我们要创建一个新的ActiveX控件工程,并对其进行适当的配置。为了更好地理解这一过程,我们将逐步分解整个操作步骤。 1. **启动VB6.0**:确保你安装了...

    数据库系统及应用第9章-表单与控件.ppt

    6. ActiveX控件:ActiveX控件是表单设计器中的一个重要组件,可以向表单内添加并使用ActiveX控件,ActiveX控件的基本概念是将控件封装成一个单元,以便在表单设计器中使用。 7. 表单设计的实践:在实际应用中,需要...

    ActiveX Programming with Visual C++

    - **变量类型、命名与作用域**:第四章深入探讨了在编写ActiveX控件时,如何处理变量类型、命名规则以及作用域问题。这些问题对于确保代码质量和可维护性至关重要。 - **程序流与控制结构**:第五章重点讨论了如何...

    ActiveX开发人员指南.pdf

    第5章讨论了ActiveX控件,这些控件是独立的、可重复使用的软件组件,可用于构建网页和应用程序。第6章则介绍了ICP(Internet Content Provider)以及与之相关的主流Internet协议。 第7章和第8章分别讨论了SAPI...

    VB程序设计第5章VB常用控件

    VB提供了丰富的控件库,包括内部控件和ActiveX控件,以满足各种编程需求。 **1. 命令按钮控件(CommandButton)** 命令按钮是最常见的控件之一,用于接收用户的点击操作。它的主要属性包括: - `Caption`:设置按钮...

    第16章 OCX控件.rar

    1. **创建新工程**:打开VB6.0,选择“工程”-&gt;“部件”-&gt;“ActiveX控件”,创建一个新的ActiveX工程。 2. **设计控件外观**:在设计视图中,我们可以像设计普通窗体一样,添加控件并调整布局。 3. **编程实现控件...

    VB6.0中文版控件大全1

    第一章:公用属性 在这一章节中,详细探讨了VB6.0控件的一些共用属性,如LinkItem属性、LinkMode属性、LinkTimeout属性等。这些属性用于控制控件在某些操作或状态下表现出来的特性。例如,Caption属性用来设置控件的...

    VC++范例大全光盘源码(第4章 高级控件的开发使用)

    在本资源中,“VC++范例大全光盘源码(第4章 高级控件的开发使用)”主要涵盖了Microsoft Visual C++(简称VC++)编程中的一个重要领域——高级控件的开发与应用。这一章节的内容旨在帮助开发者深入理解和实践在...

    VB常用控件的方法详解.pdf

    第一章、标准控件的方法: 1. 窗体(Form)方法 Form 是 Visual Basic 中最基本的控件之一,提供了一个基本的窗口来显示信息和接受用户输入。 2. 文本框控件(Text)的方法 Text 控件用于显示和输入文本信息,是最常用...

    VB6.0中文版控件大全2

    共有5章 第一章 公用属性 第二章 公用方法 第三章 公用事件 第四章 常用控件 第五章 扩展(Activex)控件 做了详细的书签

    IE浏览器控件安装与设置(ActiveX插件).docx

    总结来说,IE浏览器中的ActiveX控件安装和管理涉及一系列步骤,包括配置浏览器设置、安装和删除控件。尽管现代浏览器倾向于使用更安全的技术,但了解这些传统方法对于维护旧系统或特定应用仍然是必要的。

    21天学会VB编程pp教程

    第一章概述 第二章语言基础 第三章程序控制结构 第四章数组 第五章过程和函数 第六章应用程序用户界面 第七章通用标准控件 第八章扩展控件 第九章菜单、工具栏和状态栏 第十章文件系统 第十一章图形与图像 第十二章...

    浏览器控件安装与设置

    ActiveX控件是微软在Internet Explorer中使用的一种技术,允许网页嵌入各种功能,但同时也可能带来安全风险。因此,正确设置和管理ActiveX控件至关重要。 在【部分内容】中,详细介绍了Windows 7操作系统下IE8...

    Microsoft visual c++ 6.0 programmer's Guide 程序员指南

    例1:什么都不做的ActiveX控件 例2:Tower ActiveX控件 向ActiveX控件项目添加属性页 第10章 用ATL编写ActiveX控件 ATL和包容器应用程序 ATL和ActiveX控件 示例1:Pulse ActiveX控件 例子2:TowerATL ActiveX控件 ...

    第六章--Visual-Basic常用标准控件ppt课件(全).ppt

    第六章主要讲解的是Visual Basic中的常用标准控件,这些控件是构建用户界面的基本元素,对于编写具有实用价值的应用程序至关重要。Visual Basic的控件分为三类:标准控件(内部控件)、ActiveX控件(外部控件)以及...

    atl internals 第一章程序和测试html

    4. 第一章程序与测试: 第一章可能涵盖了基本的ATL项目设置、创建第一个ATL工程、理解ATL的宏和模板以及如何编写简单的COM对象。测试部分则会讲解如何为ATL组件建立单元测试,包括使用Microsoft的测试框架(如...

Global site tag (gtag.js) - Google Analytics