社区
ATL
帖子详情
ACTIVEX控件怎样添加到工具箱中
Torch009
2010-06-07 08:51:32
在VS2005下直接把文件拖拽过去就可以显示在工具箱中,但是我把工程关闭以后再次打开该控件就没有了,怎么能像系统的控件如Button等那样,打开以后还在工具箱中呀?
...全文
213
5
打赏
收藏
ACTIVEX控件怎样添加到工具箱中
在VS2005下直接把文件拖拽过去就可以显示在工具箱中,但是我把工程关闭以后再次打开该控件就没有了,怎么能像系统的控件如Button等那样,打开以后还在工具箱中呀?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wshcdr
2010-06-07
打赏
举报
回复
你的IDE是不是有问题,我这里加一次,就一直都有
Torch009
2010-06-07
打赏
举报
回复
一样的,重新打开后,都不在工具箱上了。
tingsking18
2010-06-07
打赏
举报
回复
工具菜单下面有个选择工具箱项,从这里做。
Torch009
2010-06-07
打赏
举报
回复
1楼的,这样加是可以的。但是我关闭工程以后再重新打开,工具箱里这个控件就没了。我想重新打开工程后,控件还在工具箱里
wshcdr
2010-06-07
打赏
举报
回复
在 VS2005的 工具箱 上右键 然后点击 选择项, 然后选择 COM 页面,找到你的控件,然后就显示在工具栏上了
ActiveX
控件
导入程序
不用
工具箱
的话,自己手工
添加
,需要注意一个问题,就是要用Aximp.exe来包装一下ocx
控件
的类,然后再程序
中
引用生成的dll就可以了。 aximp [options]{file.dll | file.ocx} The following command generates MediaPlayer.dll and AxMediaPlayer.dll for the Media Player control msdxm.ocx. aximp c:\systemroot\system32\msdxm.ocx 将
ActiveX
控件
的 COM 类型库
中
的类型定义转换为 Windows 窗体
控件
。 Windows 窗体只能承载 Windows 窗体
控件
,即从 Control 派生的类。Aximp.exe 生成可承载于 Windows 窗体上的
ActiveX
控件
的包装类。这使您得以使用可应用于其他 Windows 窗体
控件
的同一设计时支持和编程方法论。若要承载
ActiveX
控件
,必须生成从 AxHost 派生的包装
控件
。此包装
控件
包含基础
ActiveX
控件
的一个实例。它知道如何与
ActiveX
控件
通信,但它显示为 Windows 窗体
控件
。这个生成的
控件
承载
ActiveX
控件
并将其属性、方法和事件公开为生成
控件
的属性、方法和事件。 如果不包装一下直接用,会出现 灾难性 错误。上面已经说明了原因。 在项目
中
引用生成的ax开头的dll,在窗体代码
中
增加: 声明一个公有的
控件
对象: public AxISPICRECLib.AxISPICREC AxISPICREC; 在InitializeComponent()方法内初始化
控件
: AxISPICREC = new AxISPICRECLib.AxISPICREC();//必须new对象,否则窗体设计器出问题 ((System.ComponentModel.ISupportInitialize)(this.AxISPICREC)).BeginInit();//初始化开始 this.Controls.Add(this.AxISPICREC);//
添加
控件
((System.ComponentModel.ISupportInitialize)(this.AxISPICREC)).EndInit(); this.AxISPICREC.OcxState = ((System.Windows.Forms.AxHost.State)(resources.GetObject("AxISPICREC.OcxState")));//设计
控件
状态 如果遇到“正试图在 os 加载程序锁内执行托管代码”这个错误,请设置“调试”--“异常” "----"Managed Debugging Assistants"
中
勾掉"LoaderLock" 就可以了。
VB6.0动态加载
ActiveX
控件
漫谈
VB6.0动态加载
ActiveX
控件
漫谈 深圳 罗汉军 罗德昌 熟悉VB的朋友对使用
ActiveX
控件
一定不会陌生,众多
控件
极大地方便了编程, 但唯一的缺陷是不能动态加载
控件
,必须在设计时通过引用,将
控件
放置在窗体上。 VB6.0已能够解决该问题,只是帮助
中
没有明确说明,并且没有描述到一些关键功 能,由于以前的版本
中
可以动态创建进程外服务:如果对象是外部可创建的,可在 Set 语句
中
用 New 关键字、CreateObject 或 GetObject 从部件外面将对象引用赋予变 量。 如果对象是从属对象,则需使用高层对象的方法,在 Set 语句
中
指定一个对象引 用: Dim xlApp1 As Excel.Application Set xlApp1 = New Excel.Application 或 Dim xlApp As Object '定义存放引用对象的变量。 Set xlApp = CreateObject("excel.application") xlApp.Visible = True ---- 这些语法很容易造成误导,以为动态加载
ActiveX
控件
也是此方法,可能有朋 友也象我一样利用CreateObject尝试了无数次,却无功而返,不知微软公司是出于何种 考虑,动态加载
ActiveX
控件
是扩展
控件
集合的方式实现,通过实际摸索,终于就如 何实现动态
ActiveX
控件
找出了一条切实可行的方法,下面以一个具体的实例来详细说 明。 一、
ActiveX
控件
----
ActiveX
控件
是 Visual Basic
工具箱
的扩充部分。使用
ActiveX
控件
的方 法与使用其它标准内装的
控件
,如 CheckBox
控件
,完全一样。在程序
中
加入
ActiveX
控件
后,它将成为开发和运行环境的一部分,并为应用程序提供新的功能。 ----
ActiveX
部件通过客户端/服务器关系与应用程序— 及与部件相互之间— 交 互作用。客户端是使用部件功能的应用程序代码或部件。服务器是部件及其关联的对象。 例如,假设应用程序使用
ActiveX
控件
来提供一个标准的雇员窗体,供公司的多种 应用程序使用。提供雇员窗体的
ActiveX
控件
就是服务器,使用这个
控件
的应用程序 就是服务器的客户端。 二、加载方法 ---- VB6.0
中
对Controls 集合进行了扩展,以前版本
中
Controls 集合在窗体上列 举出已加载的
控件
,这在迭代过程
中
是很有用的。Controls 集合标识一个叫做 Controls的内在窗体级变量。如果忽略可选的 object 所在处的整数,则关键字 Controls 必须包括在内。我们通常在窗口
中
使用如下代码: Text1.Text="Hello, world" 其实也可以使用如下代码达到同一目的: Controls(1).Text="Hello, world" ---- 在VB6.0
中
除了原来的Clear、Remove 方法外(很奇怪,为什么微软在VB5.0
中
只提供这两种方法,而没有提供Add方法,因为没有Add,这两种方法也就没什么用处), 增加了Add方法,该方法就是用于动态加载
控件
的: Controls.Add(progid as String, Name as String); progid:
ActiveX
部件的ProgID,如:"VB.CheckBox"; Name:
ActiveX
部件加载后的名称,如: "MyCheckBox"; 若要在窗体上
添加
一个名为MyButton的按钮,可以使用: dim oControl as Object '窗体级变量 注意:这里声明为Object对象类型 Private Sub LoadControl() Set oControl = Controls.Add ("VB.CommandButton", "MyButton") oControl.Left = 10 oControl.Top = 10 oControl.Visible = True '使
控件
可见 End Sub ---- 这是VB6.0的标准语法,它在例程
中
也是如此演示的,不过该方法虽然现实了
控件
的动态加载,按钮显示在窗体上,可以象普通按钮一样按下去,但加载的
控件
不能 预先设计响应事件代码,如:事件Sub MyButton_Click()将是非法的,当然,可以将要 响应的事件封装在
控件
内部。就编程的观点来看该方法没什么大的用处,开发
ActiveX
控件
的目的是为了资源共享,为了被其他开发人员利用,所以要提供必要的事件接口, 显然利用该方法不行,通过分析VBControls等相关对象,找出VBControlExtender对象 与EventInfo相结合能提供事件陷井捕捉,VBControlExtender对象对动态
添加
控件
特 别有用,它提供了一套通用的属性、方法、事件给开发人员,它的一个突出特点是能编 程设计
控件
的事件,熟习类编程的朋友对带事件的对象声明一定不会陌生: ---- Dim WithEvents objElemt as CElemtVBControlExtender也不例外,声明的 语法一样,只不过它有个特殊的事件ObjectEvent(Info As EventInfo),它能捕捉到对 象使用RaiseEvent产生的所有事件,EventInfo数据结构映射了事件的名称、参数个数 和参数的值。VBControlExtender和 EventInfo相结合,采用Select Case 就可以预先 将不同类对象的事件放置一起,各自独立运作。将上面的代码改写一下就能提供Click 事件了: ---- Dim WithEvents oControl As VBControlExtender '带事件声明声明之后您 就可以在代码窗口的左上角的对象下拉框
中
发现该对象出现了,也就是说,该对象有了 事件或方法了,它的事件有DragDrop,DragOver ,LostFocus ,GotFocus , ObjectEvent和Validate,其
中
ObjectEvent是通用的事件捕捉。 Private Sub LoadControl() Set oControl = Controls.Add ("VB. CommandButton", "MyButton") oControl.Visible = True End Sub Private Sub oControl_ObjectEvent(Info As EventInfo) Select Case Info.Name Case "Click" 'Click事件 '您可以
添加
处理Click事件代码 MsgBox "您按了MyButton!" Case Else ' 其他事件 ' Handle unknown events here. End Select End Sub ---- 当然对微软提供的标准
控件
能采用该方法
添加
,大家都不会怀疑,但自己开 发的
控件
也能吗?答案是肯定的,我们可以用一个实际的例子进行说明。 三、实例描述 ---- 假设一个本地网络的监控系统,需要在原理图与实物示意图间切换,原理图 包括组网结构、传输资源、监控主机等,而实物示意图包括路由器、设备、采集器等, 当然两种图的事件要一致,如双击某个设备图形将显示给设备的实时数据等,为了简化 维护,将原理图与实物示意图封装成
ActiveX
控件
,由于每种图需要加载许多图形控 件,消耗资源较大,不能同时加载,需要将其分解为两个
控件
,在切换时首先卸载一个
控件
,然后加载另一个
控件
,所以要实现动态加载
ActiveX
控件
。 ---- 原理图
控件
为--Theory.ocx ,对应工程为CTheory; ---- 实物图
控件
为---Fact.ocx ,对应工程为CFact; ---- 注意:为了简化,在设计
控件
时不设置许可证关键字。 ---- 实物图
控件
上的图形对象可以被拖动,拖动后的位置信息通过事件 ChangePosition来通知拥有该
控件
的窗体,以便下次加载能显示在最后位置,实物 图和原理图
控件
都有双击事件完成的工作相同,其他事件此处忽略。 ---- 四、具体示例 ---- 1、准备工作 ---- 对
控件
Theory.ocx 、Fact.ocx 进行注册(利用Regsvr32.exe注册); ---- 建立窗体frmTest.frm ,在窗体上放置按钮cmdLoadOcx—“原理图” ---- 2、声明窗体级变量与加载函数LoadControl Dim WithEvents oControl As VBControlExtender '地图仿真
控件
对象 Dim mblnTheory As Boolean '是否显示原理图 Private Function LoadControl(intType As Integer) If Not oControl Is Nothing Then '首先判断对象是否存在,若存在则卸载 Controls.Remove("MapView") '卸载
控件
,此操作非常重要 End If If intType = 0 Then Set oControl = Controls.Add ("CTheory. Theory", "MapView") Else Set oControl = Controls.Add ("CFact.Fact", "MapView") End If oControl.Height = 3500 oControl.Width = 6500 oControl.Top = 100 oControl.Visible = True End Function Private Sub Form_Load() mblnTheory = True End Sub ---- 3、为按钮cmdLoadOcx编写代码 Private Sub cmdLoadOCX_Click() If mblnTheory Then Call LoadControl(0) mblnTheory = False cmdLoadOCX.Caption = "实物图" Else Call LoadControl(1) mblnTheory = True cmdLoadOCX.Caption = "原理图" End If End Sub ---- 4、为事件ChangePosition编写代码 Private Sub oControl_ObjectEvent (Info As EventInfo) Select Case Info.Name Case "ChangePosition" MsgBox CStr(Info.EventParamters.Item( 1).Value) + ":" + _ CStr(Info.EventParamters.Item(2).Value) Case "DbClick" '双击处理代码 Case Else ' End Select End Sub ---- 注意: EventInfo的参数EventParamters集合
中
是以1开始的,一般来说,微 软新的集合一般是以1开始的,而旧的是以0开始的,如RdoErrors.Item(0)。 ---- 5、关闭窗口前卸载
控件
Private Sub Form_Unload(Cancel As Integer) Controls.Remove("MapView") Set oControl = Nothing End Sub ---- 6、特别注意 ---- 通过Controls.Add方法
添加
的
ActiveX
控件
一定不能在该工程
中
有该
控件
的任 何引用,否则系统将出错。 四、小结 ---- 通过使用动态加载
ActiveX
控件
使用庞大的应用程序变得很小,将不同的
ActiveX
控件
进行各种组合,使应用程序更加灵活多变,如您的应用系统要处理三十种门禁, 而某个具体的用户可能只有一种或两种门禁,根本没必要首先将所有门禁包含到应用
中
,可将各个门禁独立封装,只安装注册需要的组件,就象Windows的自定义安装一样。 微软的未来技术基础是分布式的组件技术(DCOM),将会把代码的重用发挥得淋漓尽致。 您不妨试一试动态加载,也许会产生令您惊喜的效果! ---- 本代码在Win98、VB6.0(英文版)上编译、运行。
ActiveX
控件
中
的DataGrid或ADO Data
控件
在VS版本
中
的使用
ActiveX
控件
中
的DataGrid或ADO Data
控件
在VS版本
中
的使用
[第10讲]
ActiveX
控件
.ppt
[第10讲]
ActiveX
控件
ppt,Visual Basic的
控件
被分为两大类,分别是标准
控件
和
ActiveX
控件
。默认情况下,在Visual Basic
工具箱
内的
控件
都是标准
控件
。而后来通过“部件”对话框
添加
进来的
控件
则都属于
ActiveX
控件
,例如前面所学到的工具栏
控件
、状态栏
控件
、RichTextBox
控件
等等。本章主要介绍关于
ActiveX
控件
的相关知识。
Framework EDI
ActiveX
控件
Framework EDI
ActiveX
控件
是一个EDI软件开发
工具箱
,包括对EDI解决方案有用的
ActiveX
/COM和工具。使用FREDI,在几天之内就能创建EDI系统,能实现构建,转换,验证和传输EDI文件等功能。
Framework EDI
ActiveX
控件
工具箱
具有EDI的功能和命令,开发者可以写较少的代码就能快速构建功能完善的符合公司要求的EDI方案。
Framework EDI
ActiveX
控件
V5.1的特色: EDI生成器:自动创建输出(outbound) EDI文档; EDI文件转换器:EDI剖析器读取输入(inbound) EDI消息; EDI分析器:使EDI文件生效并且自动产生Functional Acknowledgments (997) 或 Syntax Messages (CONTRL)。 传输EDI文件:支持FTP, SMTP, HTTP, HTTPS和AS2,传输文件和接收文件; 保护EDI文件:支持X12.58安全结构和AS2; 支持X12 和 UN/EDIFACT标准:使用SEF文件支持EDI X12 和 EDI UN/EDIFACT的所有版本。 Framework EDI
ActiveX
控件
V5.1包括以下工具: eFilemanager:用于浏览小的EDI文件; eAnalyzer:用于检测和修改EDI消息里的错误; SEF管理器:用于浏览和编辑SEF文件里的向导行; SourceCodeMaker SM-Plug-In(仅限企业版):产生转换和生成EDI文件的原代码; SEF Reader:以更易阅读的方式浏览SEF文件,这是个免费软件。 使用FREDI的10个原因: FREDI
ActiveX
/ COM是一个功能强大的EDI组件,容易使用和运行; FREDI功能让EDI文件使用更简单和更容易理解; 这是一个创新的技术,专门解决EDI文件相关的问题; FREDI能加密和压缩EDI消息,因此在Internet上传输更快更安全; FREDI使文档有效,因此所创建和读取的文件符合EDI标准; FREDI自动产生Functional Acknowledgments (997) 或 Syntax Messages (CONTRL); 在很短时间内,以很少的成本构建一个EDI方案,符合EDI标准; 已有500多使用者(包括财富杂志500强企业和美国政府机构)把FREDI作为EDI方案; FREDI非常划算,只需要955美元,而且有EDI专家支持,不需要年费; 最重要的原因是:FREDI使得EDI工作乐在其
中
! Framework EDI
ActiveX
控件
V5.1的系统最低要求: Windows 98/2000/NT4.0/XP; 256 MB内存; Pentium III 1GHz; 1GB磁盘空间。
ATL
3,245
社区成员
48,537
社区内容
发帖
与我相关
我的任务
ATL
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
复制链接
扫一扫
分享
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章