关于ocx控件的跨语言使用

拿到OCX控件后,大概的流程就是对OCX控件进行系统注册,也就是将OCX控件写入到注册表中。前段时间有个项目要求提供c#版本的进度条控件。而控件组仅仅有ocx版本控件。所以,根据客户需求将ocx版本的时间进度条控件转换成c#自定义控件。

首先,要拿到ocx控件,之后将ocx控件注册到系统中,可以采用命令行的形式进行。

首先切换到ocx控件相应目录,然后执行regsvr2进行注册。Win7系统下需要管理员身份运行。如果卸载注册,执行regsvr2 /u +控件名称即可。当然也可以采用编写批处理文件的方式注册控件。注册成功后,可以在注册表中搜索到相应控件

系统注册步骤较简单,之后就是对ocx控件的加载。首先打开vs2008,新建自定义控件工程,之后在工具栏右键选择“选择项”弹出如下对话框,点击com组件选项卡,点击浏览

找到ocx控件的路径,并加载控件,此时在c#工具箱中即可看到相应的ocx控件。

此时只需将控件拖入到界面中即可。此时,会在bin目录生成两个文件

对于ocx控件和c#自定义控件的区别在于ocx控件需要系统注册,而c#自定义控件对于C#开发者来说,只需要将控件拖入界面即可。C#开发人员不会关心其是否需要注册。所以一般建议在封装c#自定义控件时将ocx控件加载函数中,调用ocx控件提供的注册函数进行动态注册,关闭时销毁。注册和取消注册时所用的接口函数为

当然在注册前一般要判断此ocx是否已经注册过了,采用如下函数进行

其中的classid,对于我来说是通过ocx的源代码中获取到的,在没有ocx源代码的情况下可以在注册表中搜索ocx控件,即可找到相应classid,通过代码可以判断是否已经注册。

你可能感兴趣的:(关于ocx控件的跨语言使用)