`
ileson
  • 浏览: 214870 次
  • 性别: Icon_minigender_1
  • 来自: 河南省
社区版块
存档分类
最新评论

VC 制作ActiveX 控件(OCX)

阅读更多
1、vc6下建立一下activeX工程
   详见【http://hi.baidu.com/mailrabbit/blog/item/0624a608bde798346b60fbb6.html
2、在页面中调用
   2.1:注册ocx到系统(也可以这样
 regsvr32 E:\ocx\test.ocx

   2.2找到classid
      有几种方法:
       ①、VC--》菜单栏中的“工具”--》OEL/COM Object viewer--》Object Classes--》All Objects --》找到对应的OCX名称,找到例如 如下值:clsid={96E5CC6E-18BD-43DA-B564-2EAB9F282C76}=XNPOS Control
      ②、在注册表里找,其实上面的工具,也是从注册表里提取的。。。
  cmd->regedit->  ctrl+f  输入你的ocx名称
       ③、其实在工程文件里,有个odl文件。。最后一行的clsid 就是。。。

   2.3页面
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
<script type="text/javascript" language="javascript">
/**
 *测试OCX
 */
function testOCX(){
	alert("进入");
	var ocx=document.getElementById("pos");
	alert(ocx);
	var t=ocx.test(1,2);
	alert(t);
}
</script>
</head>

<body>
<!--clsid : 如果控件成功注册到本机后,这个值在本机注册表中可以找到,js获取控件对象就是通过这个来找的。-->
<OBJECT name="xn_pos" ID="pos" WIDTH="0" HEIGHT="0" CLASSID="CLSID:96E5CC6E-18BD-43DA-B564-2EAB9F282C76" codebase="xnpos.ocx"></OBJECT>

<input type="button" value="测试OCX" onclick="testOCX();" />
</body>
</html>

3、过程中遇到的一些问题  
   3.1、xxx.odl 中支持boolean;  .cpp和.h中不支持boolean只能用BOOL;
        xxx.odl 中不支持int 支持long .参数写成int时 ctrl+w就不管用了,报
           “Parsing   error:   "int"   is   not   a   valid   OLE   parameter   type。”
   3.2、接口函数都写在 xxxCtl.cpp中
    3.3、VC设置编译时活动的工程
          3.3.1>menu---Project---Settings(具体的项目,无参考价值,请读者忽略!)

          3.3.2>menu---Build---Set Active Configuration

   3.4、用regsvr32 注册不到系统里报“找不到指定模块”错误。
分析:有可能控件有依赖的其它DLL文件没有在系统System32下。
解决办法:用工具depends查看一下ocx 控件的依赖关系,其中有黄色标记的dll 就是该控件所需要的。将其放到system32下就可以了。(这个方法百试不爽同样可以解决浏览器有些可以加载有些加载不上去的问题

   今天发现:LoadLibrary("xxx.dll"); 返回NULL 也是这个问题。。。
   3.5、解决ActiveX 工程无法用vc 调试的问题(更正:是有办法的各种调试
        方法一:笨办法 AfxMessageBox();(在适当的时候用,这个太费劲了,特别是大项目时)
        方法二:曲线救国 ;
                       ·在一个工作空间中分别建ActiveX工程 和Dialog工程,用dialog      工程来管理ActiveX工程。具体办法 就是用dialog 工程来加载ActiveX工程下你自己写的程序文件,然后编译调试就OK
                       ·在这期间遇到dialog中无法编译源程序,提示找不到头文件。解决方法如下: 1、Project -->Settings-->如下图:

3.6、很多时候,在本机编写ocx时,本机上的浏览器加载不到这个控件,今天终于发现如何解决了。
其实不是找不到,是因为浏览器通过clsid 已经找到本机有自己制作的控件了,所以它就默认不再加载控件到浏览器控件的目录了。如果这时候,你把vc工程清理一下,再通过浏览器访问你的页面时,就会加载你的控件。害我迷糊了好长时间,甚至要测试我还要换一台机器。希望新手可以解惑!!!!


3.7、页面刷新,重复加载ocx对象几次后,会将浏览器卡死。。。(还未找到解决办法,哪位有解决思路,QQ:278952725)
   经过大量的实验,发现比较接近的可能是:
3.7.1、资源占用未及时释放。(如调用了第三方的dll,这个dll用调用了i/o 操作,何时释放不受控制,so 出现崩溃)如操作外设,i/o资源没有及时释放(我遇到的一个例子是:我写了两个控件(功能是一样的,调用同样的硬件资源)分别加载到两个页面中,当点A页面后,再点B页面就会造成浏览器崩溃,甚至关闭!)。程序中一定要注意释放i/o资源,及其它耗时的操作!
3.7.2、程序问题。多线程造成的死锁。

3.8、因为现在有好多机器装的是64位的操作系统(win7,win8),这时候老的32位动态库,放到system32 下就不能被调用了。。
     解决办法:windows下有个 sysWOW  目录。。。把32位的dll 放到这里在。。。{我发现打成cab压缩包后,在浏览器端 自动解压时,也会自动解压到 sysWOW64中!所以还是打包方便}



  • 大小: 23.9 KB
  • 大小: 17 KB
  • DEPENDS.rar (134 KB)
  • 描述: vc Tools depends
  • 下载次数: 110
  • 大小: 33.4 KB
  • 大小: 24 KB
  • 大小: 22.9 KB
分享到:
评论

相关推荐

    vc开发activex,ocx控件的很好的教程.rar

    本教程“vc开发activex,ocx控件的很好的教程.rar”显然是一份专注于使用Microsoft Visual C++(简称VC)开发ActiveX控件的资源包。它可能包含了一系列步骤、示例代码和指导,帮助开发者掌握如何利用MFC(Microsoft ...

    VC MFC日历控件ocx activex

    "VC MFC日历控件OCX ActiveX"是Microsoft Visual C++(简称VC)MFC(Microsoft Foundation Classes)框架下的一种控件,用于创建具有日历功能的应用程序。这种控件基于ActiveX技术,也称为OCX(OLE Control ...

    visual c++ vc制作ActiveX OCX控件.zip

    在"vc制作ActiveX OCX控件.zip"这个压缩包中,包含了三个关键文件或项目: 1. **ClockTest**:这可能是一个示例应用程序,用于测试或展示创建的ActiveX控件。通常,这种测试应用会包含一个宿主窗口,可以加载并显示...

    VC编写ActiveX OCX控件--Timer

    OCX(旧称Ole Control)是ActiveX控件的一种形式,它们是用户界面元素,可以嵌入到其他应用程序中,提供诸如按钮、编辑框等交互功能。 创建ActiveX OCX控件的第一步是设置一个新的工程。在Visual C++中,选择“文件...

    vc编写ATL ActiveX OCX控件

    ATL(Active Template Library)是由Microsoft开发的一种C++库,主要用于简化COM(Component Object Model)组件,特别是ActiveX控件的开发。ActiveX OCX控件是基于COM技术的,用于在Windows环境中创建可重用的UI元素...

    VC,简单的ActiveX控件

    ActiveX控件是VC中一个关键的概念,它是一种基于组件的技术,允许开发者创建可重用的软件部件,这些部件可以在各种应用程序中嵌入并交互。在本篇文章中,我们将深入探讨“VC,简单的ActiveX控件”的相关知识点。 1....

    VC程序内部注册ActiveX 控件

    ActiveX控件通常是DLL或OCX文件,可以在网页、桌面应用或其他支持ActiveX的环境中使用。 二、为什么要程序内部注册 通常,ActiveX控件需要在操作系统层面进行注册,这样系统才能识别并加载它们。然而,程序内部注册...

    VC2005从开发MFC ActiveX ocx控件到发布到.net网站的全部过程

    在Visual Studio 2005 (VC2005)中开发MFC ActiveX控件是一个常见且实用的任务,这使得开发人员能够创建可以在Web环境中使用的自定义组件。ActiveX控件是微软提供的一种技术,允许开发者创建能够在多种应用程序和...

    VC++ Activex控件开发

    VC++ ActiveX控件开发是Windows应用程序开发中的一个重要部分,主要涉及的是利用Microsoft Visual C++这一集成开发环境(IDE)创建能够嵌入到其他应用程序、网页或者Active Desktop中的控件。ActiveX技术允许开发者...

    ActiveX控件注册的几种方法

    `Regsvr32.exe`是Windows操作系统提供的一个命令行工具,用于注册或注销动态链接库(DLL)和ActiveX控件(OCX)。这是一种非常简单且常用的方法。 ##### 注册操作: - 打开命令提示符窗口。 - 输入以下命令并回车...

    在VC6.0下创建一个简单的ActiveXocx

    在VC6.0下创建一个简单的ActiveXocx.zip在VC6.0下创建一个简单的ActiveXocx.zip在VC6.0下创建一个简单的ActiveXocx.zip在VC6.0下创建一个简单的ActiveXocx.zip

    VC2005开发MFC_ActiveX控件基础教程

    在本文中,我们将探讨如何使用Visual C++ 2005(简称VC2005)开发MFC(Microsoft Foundation Classes)ActiveX控件,并进行基础的测试。ActiveX是一种软件技术,允许开发者创建可以在多种应用程序和网页中使用的组件...

    VC调用VC制作的OCX

    随着ActiveX技术的发展,OCX逐渐被ActiveX控件所取代,但两者在概念上相似。 **制作OCX控件:** 制作OCX控件通常涉及以下步骤: 1. **创建项目**:在VC++中,选择“新建项目”,然后在MFC(Microsoft Foundation ...

    用FastReport制作的动态报表OCX控件

    这是一个用用FastReport制作的动态报表OCX控件,可用于VB,vc等各种开始软件中进行快速设计打印报表.并且在运行时用户随时可以对报表进行修改.方便至极! 带有使用说明及VB示例.欢迎下载使用.

    VC2005从开发MFC_ActiveX_ocx控件到发布到net网站的全部过程

    VC2005从开发MFC_ActiveX_ocx控件到发布到.net网站的全部过程

    VC MFC编写OCX ActiveX控件--闹钟控件(定时响铃)。并提供一个exe调用测试程序.zip

    在本文中,我们将深入探讨如何使用Visual C++的MFC(Microsoft Foundation Classes)库来创建一个OCX(OLE Control eXtension)ActiveX控件,以实现一个具有定时响铃功能的“闹钟控件”。同时,我们将讨论提供的测试...

Global site tag (gtag.js) - Google Analytics