.net 中使用ActiveX控件的自动创建的包装器的问题(自动生成的Interop.Ax*Lib.dll)

.net 中使用ActiveX控件的自动创建的包装器的问题(自动生成的Interop.Ax*Lib.dll)

用别人写的一个OCX控件的SDK开发一个接口。

SDK升级了,里面多了一个事件。

我使用regsvr  卸载控件后,重新使用regsvr安装控件。

在VS的工具栏重新加载控件,并绘制到窗口,。

可惜,自动生成的包装器文件,没有包装新加的那个事件,但是OCX源文件确实已经包含了那个事件(使用ole-object viewer查看)直接给予此文件包装的.netdll文件也有。

(OCX在绘入.net窗口后会自动生成两个.dll文件并加入项目的引用,一个是Interop.开通的,还有一个直接Ax开通的。后者是直接给予OCX文件的包装,前者是给予AxHost类的包装)

后来查阅资料,.net有工具直接生成包装器,即aximp(windows forms activex control importer)工具,使用它直接生成上文所说的.net包装过的两个文件。重新导入项目引用,OK了!

 

不知道通过窗口直接绘制OCX控件,怎么就不能正确生成新的包装过的文件,总算旧文件,不知道是不是VS2005的一个BUG

 

原文:

http://www.cnblogs.com/edzjx/archive/2011/03/08/1977254.html 

 

ActiveX 控件导入程序将 ActiveX 控件的 COM 类型库中的类型定义转换为 Windows 窗体控件。

Windows 窗体只能承载 Windows 窗体控件,即从 Control 派生的类。 Aximp.exe 生成可承载于 Windows 窗体上的 ActiveX 控件的包装类。 这使您得以使用可应用于其他 Windows 窗体控件的同一设计时支持和编程方法论。

若要承载 ActiveX 控件,必须生成从 AxHost 派生的包装控件。 此包装控件包含基础 ActiveX 控件的一个实例。 它知道如何与 ActiveX 控件通信,但它显示为 Windows 窗体控件。 这个生成的控件承载 ActiveX 控件并将其属性、方法和事件公开为生成控件的属性、方法和事件。

http://msdn.microsoft.com/zh-cn/library/8ccdh774.aspx

 

你可能感兴趣的:(ActiveX)