一个简单问题,怎样在C++Builder里使用OCX控件求答案

 我来答
GodHlpMe
2015-05-18 · TA获得超过8456个赞
知道大有可为答主
回答量:4600
采纳率:46%
帮助的人:1002万
展开全部
怎样在C++BUILDER6下使用 .ocx

本说明亦适合C++BUILDER的姐妹可视化工具Delphi.
首先要在windows下手工注册此.ocx,
regsvr32 usbVein.ocx
如果要从windows注销此.ocx ,加参数 /u
Regsvr32 usbVein.ocx /u
如果此 ocx 有版权Licensed, 还要在注册表下 导入注册项或写入标志,否则无法在IDE设计态使用此控件。

一、设法将OCX安装到 C++BUUILDER6 IDE下,先当成第三方控件一样使用。
1. 在BCB6 IDE下,先关闭工程,导入类型库:
IDE: Project --- Import Type Library
找到 usbVein.ocx 对应的 usbVein Library[Version 1.0] 出现 TFingerVein就是类名
注意下面的Unit目录名 C:\Program Files\Borland\CBuilder6\Imports\
点 Install , 注意产生的工程名 c:\program files\borland\cbuilder6\Lib\dclusr.bpk
如果要再次卸掉此OCX控件,就得打开此dclusr.bpk工程,删除三个OCX相关文件。
安装此OCX控件后,在控件组 ActiveX 下,出现 FingerVein控件,就是此OCX安装后的新控件。
2. 点下保存,以保存此控件的工程 dclusr.bpk,关闭工程,结束。
安装OCX产生的四个文件usbVein_OCX.CPP,usbVein_OCX.h
usbVein_TLB.cpp,usbVein_TLB.h 称为此OCX的类型库
4. 从BCB6卸掉不用的OCX控件步骤:
从IDE打开工程c:\program files\borland\cbuilder6\Lib\dclusr.bpk
用Remove 钮删除三个文件 usbVein_OCX.cpp usbVein_OCX.dcr, usbVein_TLB.cpp
点保存,点build dclusr.bpk 运行,提示OCX控件被删除,从控制组ActiveX中消失。

二、OCX不安装成IDE控件的使用方法
客户源直接使用OCX,必须要有类型库四文件 usbVein_OCX.cpp,usbVein_OCX.h
usbVein_TLB.cpp,usbVein_TLB.h
前面两个要在源程序分别用include嵌入,.cpp中嵌入.cpp,.h中嵌入.h,它们会自动调用后两个,后两个要放到 C:\Program Files\Borland\CBuilder6\Imports\中。
这种方法在程序设计态就不能在窗体直接使用OCX控件,只能用 new 的动态方式使用。
产生ocx类型库的方法:跟上面安装控件类似,但不要点install,而要点 Create Unit.,将产生四个文件。
程序中就可创建对象了。
# include “usbVein_OCX.cpp”

TFingVein *FingerVein1;
FingerVein1=new TFingerVein(this);
FingerVein1->openUSB( );
FingerVein1->closeUSB();
delete FingerVein1;

三、OCX的自注册
OCX对象有两种使用方法:
如果安装成直接控件的方式,设计时就可直接在窗体上放成控件,但这种方式,程序运行前,就必须先要在系统中已注册OCX,否则,会出现“类未注册”的错误。所以建议改用动态创建对象的方式,即new创建.
如果不在程序窗体内放OCX控件,就可用 new 动态创建对象,好处是 OCX控件不会在主界面上显示(你也可以设置成显示),运行时,OCX还可以在自已的程序中自注册,源码子程序如下:
// RegOcx.cpp ,可以用include 嵌入到自已的源程序中
include <Registry.hpp> // .OCX自注册子程序
bool RegisterOCX(String ocxf) // .OCX的全文件名
{
bool success=false;
DWORD (__stdcall * DllRegisterServer)();
DllRegisterServer=NULL;
HINSTANCE hOCX=NULL;
hOCX=LoadLibrary(ocxf.c_str());
if (hOCX)
{
(void * &)DllRegisterServer=
(void *)GetProcAddress(hOCX,"DllRegisterServer");
if (DllRegisterServer)
{
success=DllRegisterServer()==S_OK;
FreeLibrary(hOCX);
}
}
return(success); // Success:1 Fail:0
} // DLL和OCX 自注册子程序
温柔攻y9
推荐于2016-09-14 · 超过48用户采纳过TA的回答
知道答主
回答量:169
采纳率:0%
帮助的人:52.1万
展开全部
在Component菜单项下选择"Import Activex Control..."进入一个对话框,点击"Add"按钮弹出打开文件对话框,选择一个.OCX问件(比如:MSCOMM32.OCX),然后点"打开"按钮,选择"Install..."命令按钮,弹出一个"Install"对话框,点击OK按钮后系统询问是否重建"dclusr50.bmp"包,选择"Yes"按钮,系统开始注册控件,完成之后,你就可以在C++BUILDER的"ActiveX"控件组中看到已经多了一个控件,其用法就与CB本身自带的一样.
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式