vc6开发ActiveX并发布全攻略(一)(转)

摘要:
C#开发的ActiveX因需要装FrameWork等原因,用起来很不方便。所以想学下用VC++开发ActiveX控件。先说下我的开发环境:开发工具:vc6.0操作系统:win2003IE版本:IE7.0做开发之前,在网上查了下vc开发activeX的资料,得知vc开发ActiveX可选两种框架,一种是ATLCOM结构,还有一种是MFC结构。直接点击F7,控制台显示编译成功,并生成MyActiveX.ocx文件。我的这个工程目录是在E:\MyPro下,那生成的MyActiveX.ocx就在E:\MyPro\MyActiveX\Debug下:恩,就是那个万花丛中一行红的那个。那现在再打开vc的工具-˃ActiveXControlTestContainer菜单。
C#开发的ActiveX因需要装FrameWork等原因,用起来很不方便。所以想学下用VC++开发ActiveX控件。通过多天的Baidu&Google,终于找到一篇一个简单的ActiveX,并能通过IE让用户下载安装。

先说下我的开发环境:

开发工具:vc6.0

操作系统:win2003

IE版本:IE7.0

做开发之前,在网上查了下vc开发activeX的资料,得知vc开发ActiveX可选两种框架,一种是ATL COM结构,还有一种是MFC结构。经过筛选,还是选择了MFC结构,因为这种方式开发比较普遍。那开发之前我们得先知道MFC到底是什么,这里我就不多讲了,去Baidu下,如果你看完以后没有理解,那很正常,因为我也没看懂,呵呵。

理论没看懂不要紧,但起码你得知道MFC程序是怎么开发的啊,经过Baidu找到一个MFC的例子,很经典,是内地一女程序员写的,写的比较经典,也很详细,照着她写的例子在VC6.0上写了一遍,收获不小。由于是女的写的,语句也比较女性化,所以我也不方便转载,这里贴出她的blog地址,强烈建议你去照着做一遍,因为我这篇文章不会讲MFC是什么,怎么实现(其实我到现在也没理解,呵呵):

http://sakura006.blog.hexun.com/31435400_d.html

那下面我们就开始VC开发ActiveX的旅程,不足之处还望高人指点,也请读者海涵:

一.打开vc6.0,新建一个MFC ActiveXControlWizard项目:

vc6开发ActiveX并发布全攻略(一)(转)第1张

工程名称随便起,比如我的叫MyActiveX。点击确定,一路默认下一步,完成后生成的文件目录如下:

vc6开发ActiveX并发布全攻略(一)(转)第2张

生成的文件包括源文件夹,头文件夹和资源文件夹。还是那句话,想知道这些文件具体都是做什么的,去问下百度,我这里只讲步骤。

二.其实这个工程本身生成的就是一个ActiveX控件,它的功能是在页面上画个圆。那我们现在先查看下效果。直接点击F7,控制台显示编译成功,并生成MyActiveX.ocx文件。

vc6开发ActiveX并发布全攻略(一)(转)第3张

我的这个工程目录是在E:\MyPro下,那生成的MyActiveX.ocx就在E:\MyPro\MyActiveX\Debug下:

vc6开发ActiveX并发布全攻略(一)(转)第4张

恩,就是那个万花丛中一行红的那个。

那我们看看运行效果。

点开vc的工具->ActiveX Control Test Container菜单,如果你的VC看不到这个选项,那你可能是安装了精简版:

vc6开发ActiveX并发布全攻略(一)(转)第5张

弹出下面这个对话框:

vc6开发ActiveX并发布全攻略(一)(转)第6张

然后选择edit->Insert New Control选项弹出下面这个窗口:

vc6开发ActiveX并发布全攻略(一)(转)第7张

然后选择edit->Insert New Control选项弹出下面这个窗口:

vc6开发ActiveX并发布全攻略(一)(转)第8张

在列表中我们可以看到MyActiveX这个我们刚刚生成的控件。选择OK,看看效果,一个圆:

vc6开发ActiveX并发布全攻略(一)(转)第9张

这个工具很好用,我们在activeX中的自定义方法在这个测试容器里测试:

选择Control->InvokeMethods选项:

vc6开发ActiveX并发布全攻略(一)(转)第10张

弹出下面的对话框:

vc6开发ActiveX并发布全攻略(一)(转)第11张

选择方法名,通过parmeter列表还可以设置方法的参数,设置好以后,点击Invoke就可以看到我们自定义方法的效果。如果只返回参数,那返回的结果就显示在Return文本框里。如果是弹出对话框,那将弹出你设计的对话框。现在方法中只有一个系统默认的弹出软件相关的一个对话框。看看:

vc6开发ActiveX并发布全攻略(一)(转)第12张

三.下面我们就在activex中添加自定义方法。

这个自定义方法很简单,就是增加一个test(short a,short b)方法,返回a+b的值。也许某些高手看到这里会笑,这么简单的方法还好意思写啊。呵呵。没关系,毕竟这篇文章只是菜鸟之作,给入门者看的。

选择左边工程目录的ClassView选择项(下图中红色方框里的),也就是显示类图:.下面我们就在activex中添加自定义方法。

这个自定义方法很简单,就是增加一个test(short a,short b)方法,返回a+b的值。也许某些高手看到这里会笑,这么简单的方法还好意思写啊。呵呵。没关系,毕竟这篇文章只是菜鸟之作,给入门者看的。

选择左边工程目录的ClassView选择项(下图中红色方框里的),也就是显示类图:

vc6开发ActiveX并发布全攻略(一)(转)第13张

然后选择菜单查看->建立类向导,弹出对话框:

vc6开发ActiveX并发布全攻略(一)(转)第14张

vc6开发ActiveX并发布全攻略(一)(转)第15张

选择上图中automation(自定义)标签页,ClassName选择CMyActivexCtr类,因为我们自定义的方法一般都是在Ctrl这个类文件中实现的。选择Add Method按钮,弹出对话框:

vc6开发ActiveX并发布全攻略(一)(转)第16张

在External name填入我们的方法名。比如我的这个方法叫做test,有两个参数a和b,如下图:

vc6开发ActiveX并发布全攻略(一)(转)第17张

点击确定:

vc6开发ActiveX并发布全攻略(一)(转)第18张

继续确定,看看工程类列表有什么变化:

vc6开发ActiveX并发布全攻略(一)(转)第19张

恩,多了两项:一个test的接口和一个test的实现类。

双击test实现类,也就是上面图中的第二个红框类,找到

short CMyActiveXCtrl::test(short a, short b)

{

// TODO: Add your dispatch handler code here

return 0;

}

方法,将它改为

short CMyActiveXCtrl::test(short a, short b)

{

// TODO: Add your dispatch handler code here

return a+b;

}

呵呵,只是将return 0该成了return a+b;

直接F7,

vc6开发ActiveX并发布全攻略(一)(转)第20张

显示编译成功。

那现在再打开vc的工具->ActiveX Control Test Container菜单(参照前面的图)。选择MyActivex控件,然后再选择Control->InvokeMethods选项:

看看,在MethodName中多了一个test方法,而且有两个参数a,b

vc6开发ActiveX并发布全攻略(一)(转)第21张

通过SetValue给a与b赋值。点击invoke在Return中就会显示结果,2+4=6:

vc6开发ActiveX并发布全攻略(一)(转)第22张

那我们这个Activex就算做好了,在E:\MyPro\MyActiveX\Debug目录下的MyActiveX.ocx就是我们的成品。下面就进行发布工作。

转自:http://flashaway.blog.163.com/blog/static/95624576200942211853685/

免责声明:文章转载自《vc6开发ActiveX并发布全攻略(一)(转)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇一步一步实战扩展 ASP.NET Route,实现小写 URL、个性化 URL解决正则表达式中用中文匹配的方法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

ORACLE 错误案例—ORA-27102: out of memory

SQL> startupORA-27102: out of memoryLinux-x86_64 Error: 28: No space left on deviceAdditional information: 2097152 [oracle@kingdee-test ~]$ cat /etc/redhat-release CentOS relea...

pytest文档69-Hook函数之参数化生成测试用例pytest_generate_tests

前言 pytest 实现参数化有三种方式 pytest.fixture() 使用 fixture 传 params 参数实现参数化 @ pytest.mark.parametrize 允许在测试函数或类中定义多组参数,在用例中实现参数化 pytest_generate_tests 允许定义自定义参数化方案或扩展。 pytest_generate_tes...

NTKO OFFICE文档控件

目录 前言 什么是ntko 准备工作 实战演练 总结 一、前言 Web开发中经常需要用到在线处理office文档的功能,现在市面上有一些常用的Web页面调用显示Office的控件技术,用起来很方便。 有一些第三方ActiveX浏览器控件:比如科瀚的SOAOffice中间件、卓正软件的pageoffice控件、WebOffice控件还有我这篇文 章所要说...

ORACLE中能否找到未提交事务的SQL语句

  在Oracle数据库中,我们能否找到未提交事务(uncommit transactin)的SQL语句或其他相关信息呢?  关于这个问题,我们先来看看实验测试吧。实践出真知。   首先,我们在会话1(SID=63)中构造一个未提交的事务,如下所:   SQL> create table test   2  as   3  select * fro...

服务器性能自动化测试脚本

1.自动化测试脚本unixbench yum install -y wgetwget --no-check-certificate https://github.com/teddysun/across/raw/master/unixbench.shchmod +x unixbench.sh./unixbench.sh 115.231.102.80: Dou...

oracle创建简单的包

--规范 create or replace package test_pkg is --test_pkg为包名 procedure showMessage; --声明一个过程 function myAdd(x in number,y in number) return number; --声明函数 end test_pkg; --主体 creat...