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' οnclick='AddFun()' value='AddFun'> </td>

      </tr>   

    </table>

</fieldset>

</body>

</html>

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

 

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


有一点需要注意的就是,有些浏览器默认禁止ActiveX,导致点击按钮AddFun 无效果,可以用IE,会提示是否允许ActiveX控件使用。


接下来调试:

可以用vs自带的工具调试:

第一步: VS2008的 需要编译\ProgramFiles\VS2008\Samples\2052\AllVCLanguageSamples\C++\MFC\ole\TstCon和TstCon\TCProps 这两个项目,改成win32 Debug,生成TstCon32.exe 。

第二部:在ActiveX工程中 属性,命令中填入TstCon32.exe目录路径。

第三部:F5调试运行Activex工程,显示TstCon32.exe界面后,右键点击空白处,选择Insert new control,添加ActiveX生成的ocx控件。

第四部:点击红色的按钮Invoke Methods,选择调用的函数,设置参数,再点击Invoke 按钮就可以进入选择的函数进行调试了。


也可以用html进行调试:

IE调试ocx:

一、设置

1.安全设置,包括本地和可信任站点的安全设置

2 IE安全设置

2.设置成可调试状态,去掉如下图所示的两个禁用调试的勾选(好像在IE8中,无论是否勾选都可以调试)

 

启用调试

二、

IE8调用VC6编写的DLL,断点无法进入。找了很长时间,仍然无法进入

解决方案: 关闭IE的保护模式,避免IE用多进程方式打开网页,否则调试器启动的IE进程跟网页所在的IE进程不同,就不能中断。

通过修改注册表改为多进程工作的时候,启动的IE进程和加载要调试的ocx的IE进程不是一个进程,所以不能调试

1. 点击【开始】->【运行】 命令:regedit.
2. 定位到HKEY_LOCALMACHINE -> SOFTWARE -> Microsoft -> Internet Explorer -> Main
3. 在【右边区域】【右键】新建一个名称为TabProcGrowth的DWORD值, 数值数据设置为0.

三、设置IE8为单进程模式。

运行gpedit.msc组策略管理器。在“计算机配置—》管理模板—》windows组件—》Internet Explore”中打开“选项卡进程增长”,设置为已启用,选项卡进程增长为0。应用之后IE8就进入单进程模式。点击Internet Explore后出现许多项,很难找到“选项卡进程增长”,可以随便点击一个,然后点击弹出框的“下一设置按钮”,直到找到“选项卡进程增长”,

四、设置工程:

在工程属性命令中填入ie路径 :C:\Program Files\Internet Explorer\iexplore.exe

在命令参数中填入html路径:G:\XXX\xxx.html,调用*.ocx控件的html;

现在F5调试,就能在断点中停下了。。。

 

注: 控件调试时,控件的生成目录要与控件注册时的目录保持一致。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值