vs 2005/2008中ActiveX控件的使用
来源:互联网 发布:嵌入式linux如何移植 编辑:程序博客网 时间:2024/06/06 09:42
转载自:一片云雾(博客园)
2004年以前,自己曾经大量使用过ActiveX控件。由于当时使用的VC6对ActiveX的支持很好,使用起来很方便,而且ActiveX控件本身就是一个MFC的窗口,有自己的消息循环。而当年自己的技术水平还不够成熟,不知道有回调函数的存在。因此能够对外触发事件通知的ActiveX控件一度是我的最爱。而后来,随着自己水平的提升,对功能的分解不再依赖于动态库、ActiveX控件等客观因素,而是通过主动的功能接口规划来进行。而且为了追求产品的部署简易性,一度爱不释手的ActiveX被我打入冷宫多年。
直到有一天,我的一个产品需要改造为在Web中能够使用,我于是又想起尘封已久的ActiveX,而多年过去手中的编译环境已经是进化到了VS2005了(而今更是用上了VS2008、VS2010)。一番尝试之下,发现在VS2005之后,ActiveX的使用方法已经和VC6很不一样了。由于过程还不是那么简单,于是我整理了一份文档,记录下一些使用方法。昨天新开了blog,我想起把这篇文章放到blog上来,比放在电脑上某个角落,然后需要的时候再翻箱倒柜地寻找要强。我写这篇文档时,用的是VS2005,刚才我特意测试了一下VS2008,操作过程基本一样。
无论ActiveX控件有多少缺点或不便,而要在web网页中随意使用MFC来做自己的事情,ActiveX控件依旧是唯一的选择。
不说废话了,VS2005中ActiveX的使用基本使用过程如下:
1 建立ActiveX工程
使用MFC的工程建立向导,建立一个ActiveX工程,此处我建立的工程名为“testX”。如果需要,可以自己修改向导过程中的一些属性。工程建立后,类视图如下。
2 为控件添加接口函数
如上图所示,可以通过右键点击“_DtestX”来添加对ActiveX控制的函数。ActiveX控件的使用者可以通过这些函数来控制和访问ActiveX控件。
(如果把ActiveX控件当作一个黑盒子,通过这些接口函数,你可以向其发消息。)
3 为控件添加触发事件
如上图所示,可以通过右键点击“_DtestXEvents”来添加ActiveX事件。ActiveX控件可以通过这些事件,向使用者反馈信息。
(黑盒子通过这个接口,来对外反馈消息。)
这儿我添加一个ActiveX事件,函数形如“LONG TestEvent(LONG nValue, BSTR strValue);”。
4 在ActiveX控件中触发事件
可以通过以下形式在ActiveX控件中触发事件:
(下面讲的是在控件类如何通过接口对外反馈消息。)
FireEvent(dispidTestEvent, EVENT_PARAM(VTS_I4 VTS_BSTR), nValue, strValue);
上面的EVENT_PARAM的参数,可以参考“DISP_FUNCTION_ID(CtestXCtrl, "TestEvent", dispidTestEvent, TestEvent, VT_I4, VTS_I4 VTS_BSTR)”的最后一个参数,这句代码是向导自动生成的。
5 ActiveX使用者添加更新控件类
在一个普通工程中,可以通过在工程中添加类的方式,弹出如下对话框:
然后添加类到工程,如下:
如果在使用过程中,ActiveX控件接口发生了变化,可以通过删除该类的文件,然后重新添加该类以便达到目的。
6 ActiveX使用者使用ActiveX控件
在VS2005里面,对ActiveX控件的使用就和普通控件一样了,添加变量和添加事件都是一样。这些操作同VC6.0中也是类似的。
- vs 2005/2008中ActiveX控件的使用
- MFC中ActiveX控件的使用
- VS 2005 中SerialPort控件的使用
- VS.2003 中如何创建ActiveX控件
- 【VS开发】VS2010中导入ActiveX控件
- vs 2005/2008/2010 ATL ActiveX控件显示XP风格
- 在ActiveX控件中使用Mscom控件
- activex 控件的使用经验
- 使用ActiveX控件的问题
- 在.net中如何使用别人的ActiveX控件?
- ActiveX控件中使用多线程导致的问题
- 在嵌入式系统中使用ActiveX控件的疑问
- VS2008 中无法使用ACTIVEX控件的解决
- activex 控件使用过程中出现 “无效的参数数目”
- 【VS开发】在VS2010中开发ActiveX控件设置测试容器的方式
- VS开发 打开窗体文件 提示需要许可才能使用ActiveX控件的解决办法
- Infragistics控件在VS.net 2005中使用的注意事项
- 在VC++2005中使用Windows Media Play ActiveX控件
- 如何将当前布局用代码保存在png图像文件中?
- sony.vegas.pro.12.0.(build.394).64-bit.patch-MPT
- 如何让你的SQL运行得更快
- 一个InnoDB 加锁的案例
- FastStone.Image.Viewer.4.keygen-REPT
- vs 2005/2008中ActiveX控件的使用
- FastStone.MaxView.2.keygen-REPT
- 关于数组的几道面试题
- 使用数组实现栈和循环队列(JAVA语言)
- MSSQL断电的处理方法
- cocos2dx 内存机制
- 最近写c++程序的心得
- 两升序数组合并成一个升序数组
- VC++2010下编译STLport,Boost