• VC2005开发MFC ActiveX控件


    一.       创建MFC ActiveX项目

    1.      打开VS2005新建MFC项目。这里我们取名为“ActiveXDemo”。

    2.      输入项目名称为“ActiveXDemo”和项目位置。点击“确定”按钮,打开向导对话框。

                                  

    3.      选择“控件设置”选项卡,具体设置可参考上图。其它选项卡为默认设置。最后点击“完成”按钮保存设置。

    二.       添加控件方法

    VC2005会为我们自动创建好MFC ActiveX程序框架,我们只要给该ActiveX控件添加方法即可。现在我们给控件添加一个“AddFun”方法,这个方法是将两个数相加并返回结果。

    1.      点击“视图”,打开“类视图”窗口。

    2.      展开“ActiveXDemoLib”项,选中“_DActiveXDemo”项。点击鼠标右键,选择“添加”下的“添加方法”。

    3.      打开添加方法向导窗口。因为我们是添加一个加法方法,所以我们设置的返回类型为LONG型,方法名设为AddFun,添加两个LONG类型参数Add1Add2

    4.      其它为默认设置,点击“完成”按钮完成添加方法。接下来我们打开“解决方案资源管理器”打开“ActiveXDemoCtrl.cpp”文件。

    5.      打开代码视图,我们会发现VC2005已经为我们添加了一个“AddFun”方法,我们在方法内添加“return Add1 + Add2;”语句。

    6.      最后生成项目。

    三.       测试ActiveX控件

    经过上面操作我们已经生成了OCX控件文件。接下来的步骤就是要将这个OCX控件嵌入在Html页面中,通过Javascript来调用控件方法来测试我们的OCX控件是否能正常运行。

    1.      我们用“EditPlus”新建一个Html文件,具体内容如下:

    <!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=utf-8" />

    <title>ActiveX测试</title>

    <script language = 'javascript'>

             function AddFun()

             {

                       var iResult = MYAvtiveX.AddFun(12, 11);//调用ActiveX控件的AddFun方法。

                       alert(iResult);

             }

    </script>

    </head>

    <body>

    <object id="MYAvtiveX" classid="clsid: F0E7128D-E311-42F1-A0BA-88397960732E"> </object>

    <fieldset>

    <legend>MyActiveX测试</legend>

        <table width="100%" border="1">

          <tr>

            <td width="20%"><input type='button' onclick='AddFun()' value='AddFun'> </td>

          </tr>   

        </table>

    </fieldset>

    </body>

    </html>

    上面的“classid”我们可以打开“ActiveXDemo.idl”文件获得:

    2.      最终的Html页面显示效果如下,点击“AddFun”按钮,弹出计算结果提示框。




    1、  运行时许可证默认不勾选: 如果勾上,生成时会多出一个文件.lic , 只有拥有许可的用户才可以调用ocx插件

    2、工程生成好之后,右键工程属性,对其进行配置:(注意点 已在途中勾出)

    3、 在 链接器—常规—注册输入选“是”, 如果编译的时候出现,该错误提醒,有2个可能。 第一种: 你运行的VS2010 ,在Win7下,不是管理员级别。所以会出现权限不够的问题。 第二种: 缺少对应的dll, 此时你可以使用 C++ 的工具 dependency ,对ocx 进行分析。查看到底缺少了那些dll 。然后下载到对应的 dll 将其 放入system32 目录下,重新用工具再次分析。

    4、 出现无法打开 ocx的编译错误: 这个是由于你上次运行的 IE 浏览器没有关闭,ocx被占用导致。

    最后附上 一段 批处理的代码,稍微可以方便点。。。

    Java代码  收藏代码
    1. %SystemRoot%\system32\regsvr32.exe  safeIpos2.ocx  
    2. copy   safeIpos2.ocx   %SystemRoot%\system32  

     将其保存成 .bat 文件,运行。


    VS2010下测试ActiveX控件:

    第一步:
          我的vs2010安装在F盘,打开F:\Program Files\Microsoft Visual Studio 10.0\Samples\2052,可以看到一个VC2010Samples.zip的压缩包,解压之,里面有个C++的文件夹,继续打开其下的MFC\ole\TstCon,在里面有个TstCon.sln,打开之,里面有2个工程TCProps和TstCon,据网上说法,先编译TCProps,再编译TstCon,完成后,你应该在Debug目录下看到TstCon.exe,它正是我们需要的ActiveX测试工具.
    第二步:
          打开VS2010,点 “工具”-->“外部工具”,再点击“添加”按钮,再在下面的“标题”栏里,修改为TstCon(名称随便取),再在 “命令”栏里,选择第一步里编译好的TstCon.exe,再点“应用”,“确定”按钮即可。然后就可以在VC2010里点 “工具”-->“TstCon”,就可以象VC6那样测试ActiveX控件了。

    下面再说说在html页面里测试这个ActiveX控件.最方便的是使用微软的ActiveX Control Pad,下载安装后,打开之,如下图,

     

    它自动为你生成了HTML标记,在<BODY>标签内,右键选择选择“Insert ActiveX Control”,选择刚刚生成的ActiveX控件就行了.保存后,即可打开html页面查看效果.




    在VS2010中开发ActiveX控件设置测试容器的方式

    在VS2010中开发MFC ActiveX控件,开发完后,通常使用VS自带的容器ActiveX Control Test Container来运行ActiveX控件。此容器在VS安装后的文件中是找不到的,需要自己手动获取。如下所述:

    (1)按照你的VS所安装的路径,找到VC2010Samples.zip这个压缩文件,其在Samples下的名为2052文件夹中,如在我的电脑上,其所在路径为:C:\Program Files\Microsoft Visual Studio 10.0\Samples\2052\VC2010Samples.zip。

    (2)找到这个压缩文件后,将其减压到当前文件夹中。

    (3)按照如下路径C:\Program Files\Microsoft Visual Studio 10.0\Samples\2052\VC2010Samples\C++\MFC\ole找到TstCon这个文件夹。打开这个文件夹,可发现有两个资源解决方案TCProps和TstCon。

    (4)在VS2010中打开这两个解决方案。

    (5)将Tcprops设为启动项,方法:在解决方案Tcprops上右击,选择“设为启动项目”;然后对它进行编译F7。同样地,再将TstCon设为启动项,对它进行编译F7。

    (6)编译完后,就可在TstCon文件夹下的Debug文件夹中看到TstCon32.exe文件。在首次运行MFC ActiveX控件时,需要设置调试器命令及调试器工作目录。项目—属性—配置属性—调试,设置命令及工作目录即可。


  • 相关阅读:
    【小程序】onLaunch异步,首页onLoad先执行
    【Dart】生成固定长度随机数
    从单片机到系统之--uboot启动arm linux
    (四)添加yaffs2文件系统支持
    (三)修改内核大小,适配目标板Nand flash分区配置
    (二)linux内核准备及编译
    (一)arm交叉编译工具链准备
    socket 接收和发送缓冲区
    多线程及多进程部分概念汇总
    嵌入式开发环境搭建(一) 虚拟机实现桥接Ethernet网口 并且通过WIFI进行NAT联网
  • 原文地址:https://www.cnblogs.com/yefengmeander/p/2887962.html
Copyright © 2020-2023  润新知