社区
资源
帖子详情
ActiveX控件怎么在Vc里面用?
dodont
2003-05-24 09:30:16
好像要注册.........怎么注册?
...全文
89
2
打赏
收藏
ActiveX控件怎么在Vc里面用?
好像要注册.........怎么注册?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
u2m
2003-05-24
打赏
举报
回复
一般来说,一个外来ActiveX控件要在Windows中被正确使用,首先必须将控件
文件(*.OCX)复制到硬盘中,然后将其在Windows中注册,未在Windows中注册过的ActiveX控件是不能使用的。
注册ActiveX控件一般来说有三种途径:
---- 1. 使用Regsvr32.exe程序对ActiveX控件进行注册;
---- 2. 使用安装程序制作软件:InstallShield;
---- 3. 在应用程序中加入注册代码。
---- 上述方法适用范围不同,各有各的优点,下面分别讨论。
---- 一、 使用Regsvr32.exe程序对ActiveX控件进行注册
---- 对于未注册过的ActiveX控件可使用此软件对其进行注册,外来ActiveX控件要应用到自己的程序中也必须进
行注册。该文件位于Windows目录的system子目录下。使用方法如下:点击“开始”→“运行”;在运行对话框中
输入以下命令:
regsvr32 < 文件名 > 注册一个ActiveX控件
regsvr32 /u < 文件名 > 解除某ActiveX控件的注册
---- 我们使用一些带ActiveX控件的应用程序时,有时会出现不能运行的情况,这有可能是其自带ActiveX控件
未注册所至,这时不妨使用上述命令一试。另外,VC++使用者若对regsvr32.exe的编码感兴趣的话,可在VC++的
联机帮助中找到其源代码。若使用VC++ 6.0,则在MSDN光盘的\sample\VC98\MFC\controls\regsvr中。
---- 二、 使用安装程序制作软件:InstallShield
---- 使用regsvr32.exe来注册ActiveX控件虽然简单,但需要用户手工注册,在不用时还得手工解除注册,因此,
这对一个应用程序来说并非好的解决方案。大型应用软件一般都有一个安装程序,在安装程序中解决ActiveX控件
注册是较为理想的一种方案。使用InstallShield可以制作出专业级的Setup,还可注册其中的ActiveX控件;而且,
在以后携载软件时,自动注销掉以前注册的ActiveX控件。方法如下:
---- 1. 启动InstallShield,使用Project Wizard建立一个新的项目;
---- 2. 新建一个“File Group”,将需要注册的ActiveX控件文件放入此“File Group”中;
---- 3. 将上述“File Group”的“Self-Registered”属性设置成“Yes”。
---- 上述步骤仅为制作Setup中设置自动注册ActiveX控件几步,至于使用InstallShield怎样制作一个完整的
Setup不在本文讨论范围之中,请读者自己参看有关书籍。
---- 三、 在应用程序中加入注册代码
---- 对于小型程序不宜采取第二种方法,较好的方法是在程序中嵌入注册代码,实现应用程序自注册。其编程
方法是:
---- 1. 使用Windows API函数LoadLibrary载入ActiveX控件;
---- 2. 使用GetProcAddress函数获取ActiveX控件中注册函数DllRegisterServer
(注销函数为DllUnregisterServer)指针;
---- 3. 调用注册函数DllRegisterServer(或注销函数DllUnregisterServer)。
---- 下面以VC++ 6.0编写的RegActivex程序为例,介绍怎样在程序中自动注册(注销)ActiveX控件。RegActivex
的主体框架由VC++ 6.0的AppWizard自动产生,在其基础上增加两个菜单项:“注册ActiveX控件”、“注销
ActiveX控件”。当选择“注册ActiveX控件”菜单时,将对控件toweratl.ocx(一个汉诺游戏)进行注册;当选择
“注销ActiveX控件”菜单时,将解除控件toweratl.ocx的注册。
---- 1. 使用VC++ 6.0建立一个单文档的应用程序RegActivex,其他项目接受默认设置;
---- 2. 给应用程序增加两个菜单项:“注册ActiveX控件”、“注销ActiveX控件”,步骤如下:
---- ① 单击VC++ 6.0左边窗口的“ResoureView”,双击MENU项目下的IDR_MAINFRAME以打开菜单编辑器;
---- ② 在菜单编辑器中,加入一个主菜单“注册”,在“注册”主菜单下加入两个菜单项:“注册ActiveX
控件”、“注销ActiveX控件”;
---- 3. 给新建的菜单项 “注册ActiveX控件” 和“注销ActiveX控件”增加响应函数:
---- ① 在资源编辑其中,双击MENU中的IDR_MAINFRAME打开菜单编辑器,单击“注册ActiveX控件”,
按Ctrl+W打开MFC Class Wizard;
---- ② 双击Messages框中的COMMAND,给“注册ActiveX控件”菜单项增加响应函数OnRegisterReg(),单击右边
“Edit”按钮给OnRegisterReg()函数增加如下代码:
void CMainFrame::OnRegisterReg()
{
//ActiveX控件的路径及文件名
LPCTSTR pszDllName="toweratl.ocx";
//装载ActiveX控件
HINSTANCE hLib = LoadLibrary(pszDllName);
if (hLib < (HINSTANCE)HINSTANCE_ERROR)
{
MessageBox("不能载入Dll文件!","结果",MB_OK);
return;
}
//获取注册函数DllRegisterServer地址
FARPROC lpDllEntryPoint;
lpDllEntryPoint = GetProcAddress(hLib,_T("DllRegisterServer"));
//调用注册函数DllRegisterServer
if(lpDllEntryPoint!=NULL)
{
if(FAILED((*lpDllEntryPoint)()))
{
MessageBox("调用DllRegisterServer 失败!","结果",MB_OK);
FreeLibrary(hLib);
return;
}
MessageBox("注册成功","结果",MB_OK);
}
else
MessageBox("调用DllRegisterServer失败!","结果",MB_OK);
}
---- ③ “注销ActiveX控件”菜单项响应函数的编写方法同上,代码也相似,只是将
“lpDllEntryPoint=GetProcAddress(hLib,_T("DllRegisterServer"));”改成:
lpDllEntryPoint = GetProcAddress(hLib,_T("DllUnregisterServer"))。
---- 4. 编译联接上述程序,即可得一个可执行文件。另需注意的是:应将ActiveX控件文件toweratl.ocx复制到
Windows的system目录下。控件文件toweratl.ocx在微软出版的《Visual C++ 6.0程序员指南》所附光盘中可以找
到。
---- 5. 测试上述程序:运行《Visual C++ 6.0程序员指南》所附光盘中的game2程序,若使用RegActivex注册了
toweratl.ocx控件,则该程序可以正常运行;若使用RegActivex注销了toweratl.ocx控件,则game2不能运行。
Fansy2000
2003-05-24
打赏
举报
回复
project->Add to project->components and controls gallery
choose registed ActiveX Doc
wish you like it
VC
6.0在win7下无法加入
ActiveX
控件
的解决方案
VC
6.0在win7下无法加入
ActiveX
控件
的解决方案
VC
ActiveX
控件
的开发详细步骤说明
本文档详细说明用
VC
开发
ActiveX
插件的详细步骤,包括工程的建立,js界面的编写、
activex
插件中代码的编写、js界面和
activex
控件
之间的相互通信的方法及示例,还有详细的调试步骤。
VC
,简单的
ActiveX
控件
这个最简单的一个例子,主要是演示,成员变量,函数,事件等实现
VC
++
Activex
控件
开发
NULL 博文链接:https://becomebetter.iteye.com/blog/2201118
VC
程序内部注册
ActiveX
控件
VC
程序内部注册
ActiveX
控件
资源
2,586
社区成员
18,437
社区内容
发帖
与我相关
我的任务
资源
VC/MFC 资源
复制链接
扫一扫
分享
社区描述
VC/MFC 资源
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章