当前位置:编程学习 > VC++ >>

VC写ACtivex控件的起步----创建和调试

最近一直想学ACtivex控件的开发,起步的工作要先做好。查了一堆关于ACtivex控件的原理,发现它和DLL动态库颇为类似。

   下面直接进入主题,首先是创建一个工程,编写ACtivex控件有两种途径,一是MFC ACtivex , 二是ATL  ACtivex。这两者有什么区别呢,MFC做的控件附带了一系列MFC的运行库,虽然也是基于COM接口的,但相对来说就要比ATL大的多。而ATL做的控件则是完全基于COM技术的产品,所产生的OCX控件更小也更灵活(更灵活的代价是你需要多API函数很熟悉,对消息很了解才可以,因为没有经过MFC的封装所有的都要自己完成)。

  下面以一个MFC的ACtivex控件为例,创建一个新的项目:文件->新建->项目

  #001#

 

 

 

 

 

 

 

 

 

 

  接下来几步都采用默认设置知道进入控件设置:

#002#


#002#

 

 

 

 

 

 

 

 

 

 

 

 

  选中"可见时激活"和"无闪烁激活",取消"有“关于”对话框",点击->完成.

    至此,一个基于MFC的ACtivex的项目已经建立完成了。我们来为这个项目添加一个方法,先切换到类视图:

   #003##003#

 

 

 

 

 

 

 

 

 

   选择_DMFC_Activex右键添加方法,选择返回类型和参数类型,本例的返回类型为LONG,参数类型也为LONG ,添加一个名为AddFun的函数。

  #004##004#

    添加完之后会在Ctrl中自动添加上一段代码:

LONG CMFC_ActivexCtrl::AddFun(LONG add1, LONG add2)
{
 AFX_MANAGE_STATE(AfxGetStaticModuleState());

 // TODO: 在此添加调度处理程序代码

 return add1+add2;      // 自己添加的返回数据add1+add2
}

   接下来就是建立一个可以调试的环境,因为ACtivex控件不可以直接运行,它需要借助第三方的手段来使其运行。在VC6.0之中有个工具可以用来测试ACtivex,但VC2008中却没有这个工具,所以要建立一个HTML的网页调用这个控件,这也是测试ACtivex控件运行最理想的环境,因为它是在真实环境下的测试。

 在现有的项目中添加一个新建项->HTML页。之后输入下面的代码:

<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 8.0">
<TITLE>DialogControl</TITLE>           // 标题
<meta http-equiv="Content-Type" content="text/html; charset=gb2312"/>
 <script language="javascript">
    function AddFun()                          // 调用控件的方法
    {
        var  object = MFC_Activex.AddFun(11,12);
        alert(object);    
    }
    </script>
</HEAD>
<BODY>
<center>
  <OBJECT ID="MFC_Activex"  CLASSID="clsid:C9D6CF40-B5EC-436E-B3DA-D61B73DD28C2" HEIGHT=600 WIDTH=400 cadebase="Debug\textMFC_Activex.ocx">

     // 这里是关键,MFC_Activex是项目名称,CLASSID的填写需要注意,要加上clsid否则网页上会弹出红叉,跟在其后面的是MFC_Activex这个项目的GUID,在.dil后缀文件的类信息那一项中。cadebase的值为所在工程文件中OCX控件的位置
   <PARAM NAME="_Version" VALUE="65536">
  <PARAM NAME="_ExtentX" VALUE="3329">
  <PARAM NAME="_ExtentY" VALUE="2164">
  <PARAM NAME="_StockProps" VALUE="64">
  </OBJECT>
  <fieldset>
<legend>测试页</legend>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
 <tr>
  <td width = "20%"><input type = "button"  onclick = "AddFun()" value = "AddFun" />    // 添加一个名为AddFun的BUTTON
  </td>
 </tr>
  </center>
</BODY>
</HTML>

最后一步就是设置了,项目->属性->调试:

在"命令"中填入:C:\Program Files\Internet Explorer\IEXPLORE.EXE            

在"命令参数"中填入:$(InputDir)+你所创建的HTML文件名,比如:$(InputDir)ATLTEXT.htm   其中InputDir是以宏插入的方式添加的。

    这些都做好了之后就可以用正常调试了,按F5就将自动弹出网页加载ACtivex控件

 

摘自 zh516846937的专栏

补充:软件开发 , Vc ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,