以上都是本人对Active控件的一些见解,只是我本人的见解,可能会有不正确的地方哈。进入正题吧,开始接触Active的时候,我感觉还是什么郁闷的,因为我本来是一位.NET的编程人员,一般用到的语言是C#,难免对C++的编程有点不太适应,不过还好有人知道还是比较容易上手的,下面就介绍如何开发一个简单的Active控件吧。
我用的开发环境Visual C++
6.0(中文版),首先我们来新建一个Active项目,我们选择文件中的新建(New),然后选择一个MFC Active
ControlWizard,工程名称就叫ActiveTest,如图所示。
好了,我们创建玩一个Active的工程,我们可以看到如图所示的类图

我们可以看到_DActiveTest和_DActiveTestEvents两个树形结构,这里就是显示供外部浏览器调用的接口,我们可以新建和查看,当然,要新建一些方法调用和参数事件等,相信用C++的童鞋们都会的了。我们现在就来新建一个简单的弹框函数供浏览器调用吧.
选择查看 ,建立类向导,就会弹出如何所示的框,再选择Automation的选项卡,然后按一下Add Method的按钮,在这里新建一个HelloWorld的方法供外部调用,然后OK创建完毕,我们可以见到类视图中CActiveCtrl属性模块会多出了一个我们新建HelloWorld的方法,而接口属性也有看到我们新建的方法,我们双击进去写一个弹框函数AfxMessageBox("HelloWorld");
然后我们就可以编译了,编译通过后我们生成一个Acitve控件,后缀为OCX,然后生成的控件在当前项目的Debug文件夹下,C++也会自动帮我们注册Active控件到浏览器下,至于别的用户使用我们需要一个DOS命令或者打包成CAB包,这些我迟点会写一篇文章介绍,至于Active控件的调用,我们可以新建一个txt文件写入以下内容.
- <html>
- <head>
- <title>ActiveTest</title>
- <script type="text/javascript">
- function HelloWorld(){
- try {
- var obj=document.getElementByIdx_x("DTM");
- obj.HelloWorld();
- }
- catch (e) {
- Alert( "Js error: " + e.message);
- }
- }
- </script>
- </head>
- <body>
- <OBJECT style="WIDTH: 0px; HEIGHT: 0px" id=DTM classid=clsid:55810BD6-92DD-4568-8AEF-E25E21152629>
- <PARAM NAME="_Version" VALUE="65536">
- <PARAM NAME="_ExtentX" VALUE="4365">
- <PARAM NAME="_ExtentY" VALUE="2354">
- <PARAM NAME="_StockProps" VALUE="0">
- </OBJECT>
- <div>
- <input id="method" type="button" value="调用" onClick="HelloWorld();"/>
- </div>
- </body>
- </html>
然后另存为html后缀的网页,然后直接按按钮就可以调用Active控件的方法,需要说明下的是

uuid就是当前Active控件的id
我们用IE打开网页,然后按下按钮,就可以调用Active控件的方法,如图所示
好了,我们就调用成功啦,哇咔咔。
结语:这是一篇我个人见解的文章,希望可以帮到开发Active控件的新手们,小西瓜奉上~这是一篇以前在新浪博客写的文章
欢迎分享,(联系QQ/微信:337407980)