热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

VC++OCX注册方法总结

ActiveX控件是一个动态链接库,是作为基于COM服务器进行操作的,并且可以嵌入在包容器宿主应用程序中,ActiveX控件的前身就是OL

ActiveX 控件是一个动态链接库,是作为基于COM 服务器进行操作的,并且可以嵌入在包容器宿主应用程序中,ActiveX 控件的前身就是OLE 控件。由于ActiveX 控件与开发平台无关,因此,在一种编程语言上开发的ActiveX 控件可以无须作任何修改,即可在另一种编程语言中使用,其效果如同使用Windows 通用控件一样。如:在VC ++中开发的ActiveX 控件,不作任何修改即可应用于VB 中。由此可见,通过使用ActiveX 控件即可实现快速小型的组件重用、代码共享,从而提高编程效率。

  从Internet 下载的ActiveX 控件,或从其他途径得到的ActiveX 控件,用户应该怎样做才能正确使用呢?一般来说,一个外来ActiveX 控件要在Windows 中被正确使用,首先必须将控件文件.OCX) 复制到硬盘中,然后将其在Windows 中注册,未在Windows 中注册过的ActiveX 控件是不能使用的。注册ActiveX 控件一般来说有三种途径,适用范围不同,各有各的优点,下面分别讨论。

一、使用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 控件。方法如下:
启动InstallShield,使用Project Wizard 建立一个新的项目;
新建一个“File Group",将需要注册的ActiveX 控件文件放入此“File Group"中;
将上述“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 控件,步骤如下:
  a、单击VC ++6.0 左边窗口的“ResoureView",双击MENU 项目下的IDR_MAINFRAME 以打开菜单编辑器;
  b、在菜单编辑器中,加入一个主菜单注册,在注册主菜单下加入两个菜单项:注册ActiveX 控件注销ActiveX 控件
  3、给新建的菜单项注册ActiveX 控件注销ActiveX 控件增加响应函数:
  b、在资源编辑器中,双击MENU 中的IDR_MAINFRAME 打开菜单编辑器,单击注册ActiveX 控件”, Ctrl 打开MFC Class Wizard; 
  c、双击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);
}

  c"注销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 不能运行。

 

 

来源:http://www.cctry.com/thread-2418-1-1.html


推荐阅读
  • 本文深入探讨了Java多线程环境下的同步机制及其应用,重点介绍了`synchronized`关键字的使用方法和原理。`synchronized`关键字主要用于确保多个线程在访问共享资源时的互斥性和原子性。通过具体示例,如在一个类中使用`synchronized`修饰方法,展示了如何实现线程安全的代码块。此外,文章还讨论了`ReentrantLock`等其他同步工具的优缺点,并提供了实际应用场景中的最佳实践。 ... [详细]
  • 在 Linux 环境下,多线程编程是实现高效并发处理的重要技术。本文通过具体的实战案例,详细分析了多线程编程的关键技术和常见问题。文章首先介绍了多线程的基本概念和创建方法,然后通过实例代码展示了如何使用 pthreads 库进行线程同步和通信。此外,还探讨了多线程程序中的性能优化技巧和调试方法,为开发者提供了宝贵的实践经验。 ... [详细]
  • 数字图书馆近期展出了一批精选的Linux经典著作,这些书籍虽然部分较为陈旧,但依然具有重要的参考价值。如需转载相关内容,请务必注明来源:小文论坛(http://www.xiaowenbbs.com)。 ... [详细]
  • 本文深入解析了Java面向对象编程的核心概念及其应用,重点探讨了面向对象的三大特性:封装、继承和多态。封装确保了数据的安全性和代码的可维护性;继承支持代码的重用和扩展;多态则增强了程序的灵活性和可扩展性。通过具体示例,文章详细阐述了这些特性在实际开发中的应用和优势。 ... [详细]
  • ButterKnife 是一款用于 Android 开发的注解库,主要用于简化视图和事件绑定。本文详细介绍了 ButterKnife 的基础用法,包括如何通过注解实现字段和方法的绑定,以及在实际项目中的应用示例。此外,文章还提到了截至 2016 年 4 月 29 日,ButterKnife 的最新版本为 8.0.1,为开发者提供了最新的功能和性能优化。 ... [详细]
  • 在Android开发中,实现多点触控功能需要使用`OnTouchListener`监听器来捕获触摸事件,并在`onTouch`方法中进行详细的事件处理。为了优化多点触控的交互体验,开发者可以通过识别不同的触摸手势(如缩放、旋转等)并进行相应的逻辑处理。此外,还可以结合`MotionEvent`类提供的方法,如`getPointerCount()`和`getPointerId()`,来精确控制每个触点的行为,从而提升用户操作的流畅性和响应性。 ... [详细]
  • 深入解析:Android应用生命周期管理与时序调整策略 ... [详细]
  • 并发编程入门:初探多任务处理技术
    并发编程入门:探索多任务处理技术并发编程是指在单个处理器上高效地管理多个任务的执行过程。其核心在于通过合理分配和协调任务,提高系统的整体性能。主要应用场景包括:1) 将复杂任务分解为多个子任务,并分配给不同的线程,实现并行处理;2) 通过同步机制确保线程间协调一致,避免资源竞争和数据不一致问题。此外,理解并发编程还涉及锁机制、线程池和异步编程等关键技术。 ... [详细]
  • 在Java Web服务开发中,Apache CXF 和 Axis2 是两个广泛使用的框架。CXF 由于其与 Spring 框架的无缝集成能力,以及更简便的部署方式,成为了许多开发者的首选。本文将详细介绍如何使用 CXF 框架进行 Web 服务的开发,包括环境搭建、服务发布和客户端调用等关键步骤,为开发者提供一个全面的实践指南。 ... [详细]
  • 经过两天的努力,终于成功解决了半平面交模板题POJ3335的问题。原来是在`OnLeft`函数中漏掉了关键的等于号。通过这次训练,不仅加深了对半平面交算法的理解,还提升了调试和代码实现的能力。未来将继续深入研究计算几何的其他核心问题,进一步巩固和拓展相关知识。 ... [详细]
  • NOIP2000的单词接龙问题与常见的成语接龙游戏有异曲同工之妙。题目要求在给定的一组单词中,从指定的起始字母开始,构建最长的“单词链”。每个单词在链中最多可出现两次。本文将详细解析该题目的解法,并分享学习过程中的心得体会。 ... [详细]
  • 开发日志:201521044091 《Java编程基础》第11周学习心得与总结
    开发日志:201521044091 《Java编程基础》第11周学习心得与总结 ... [详细]
  • Python全局解释器锁(GIL)机制详解
    在Python中,线程是操作系统级别的原生线程。为了确保多线程环境下的内存安全,Python虚拟机引入了全局解释器锁(Global Interpreter Lock,简称GIL)。GIL是一种互斥锁,用于保护对解释器状态的访问,防止多个线程同时执行字节码。尽管GIL有助于简化内存管理,但它也限制了多核处理器上多线程程序的并行性能。本文将深入探讨GIL的工作原理及其对Python多线程编程的影响。 ... [详细]
  • 在开发过程中,我最初也依赖于功能全面但操作繁琐的集成开发环境(IDE),如Borland Delphi 和 Microsoft Visual Studio。然而,随着对高效开发的追求,我逐渐转向了更加轻量级和灵活的工具组合。通过 CLIfe,我构建了一个高度定制化的开发环境,不仅提高了代码编写效率,还简化了项目管理流程。这一配置结合了多种强大的命令行工具和插件,使我在日常开发中能够更加得心应手。 ... [详细]
  • Squaretest:自动生成功能测试代码的高效插件
    本文将介绍一款名为Squaretest的高效插件,该工具能够自动生成功能测试代码。使用这款插件的主要原因是公司近期加强了代码质量的管控,对各项目进行了严格的单元测试评估。Squaretest不仅提高了测试代码的生成效率,还显著提升了代码的质量和可靠性。 ... [详细]
author-avatar
白大姐
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有