07 2011 档案
摘要:http://bbs.ecjtu.org/thread-24129-1-1.html咱们用 ATL 写了一个简单的 COM 组件,之所以说简单,是因为在组件中,只实现了一个自定义(custom)的接口 IFun。当然如果想偷懒的话,我们可以把 200 个函数都加到这一个接口中, 果真如此的话,恐怕就没有人喜欢使用我们这个组件了。一个组件既然可以提供多个接口,那么我们在设计的时候,就应该按照函数的功能进行分类,把不同功能分 类的函数用多个接口表现出来。这样可以有如下的一些好处: 1、一个接口中的函数个数有限、功能集中,使用者容易学习、记忆和调用。一个接口到底提供多少个函数合适那?答案是:如果你是
阅读全文
摘要:http://xjchilli.blog.163.com/blog/static/453477392009111095940304/ATL内部的类厂创建 http://www.ecjtu.org/forum/read.php?tid-24099.html用COM SDK写的第一个Com组件 http://www.ecjtu.org/forum/read.php?tid-24098.html一个很有趣的c++程序http://www.ecjtu.org/forum/read.php?tid-24094.htmlCom组件包容的简单模拟实现http://www.ecjtu.org/forum/re
阅读全文
摘要:http://bbs.ecjtu.org/thread-24247-1-1.html1、面向对象系统的三个最基本的特性 封装性、多态性、重用性。 2、COM特性的概述COM对象的封装特性是很彻底的,所有的对象状态信息必须通过接口才能访问;而COM的多态性完全通过接口体现出来,而且,COM分别在三个层次上体现了 多态性:接口成员函数、单个接口、一组接口(对象类别既implemented category)。而COM的重用性相对复杂。 3、重用性 所谓重用性是指,当一个程序单元能够对其他的程序单元提供功能服务时,尽可能地重用原先程序单元的代码,既可以在源代码一级重用,也可以在可执行代码一级重用。C
阅读全文
摘要:掌握C++对象模型底层知识的人都知道,C++利用虚函数的机制来实现运行期的多态。例如一个类申明如下:class A{public:A(){}~A(){}virtual void f1(){ printf("Founction f1 called"); virtual void f2(){ printf("Founction f2 called"); }virtual void f3(){ printf("Founction f3 called"); }private:int n;};A对
阅读全文
摘要:进程内组件的装载: 客户程序调用COM 库的 CoCreateInstance 或 CoGetClassObject 函数创建 COM 对象,在 CoGetClassObject 函数中,COM 库根据系统注册表中的信息,找到类标识符 CLSID 对应的组件程序(DLL 文件)的全路径,然后调用 LoadLibrary(实际上是 CoLoadLibrary)函数,并调用组件程序的 DllGetClassObject 引出函数。DllGetClassObject 函数创建相应的类厂对象,并返回类厂对象的 IClassFactory 接口。至此 CoGetClassObject 函数的任务完成,然
阅读全文
摘要:1、概述 COM提供了应用之间数据交换的标准方案,称为统一数据传输(UDT,uniform data transfer)。统一数据传输技术建立在结构化存储技术的基础之上,它通过一个“数据对象”来表达要传输的数据信息,因此,统一数据传输技术的核心在 于数据对象的定义和实现。剪贴板和拖-放是统一数据传输的两个典型应用。2、数据交换标准 早期的OLE1.0版本使用DDE(Dynamic Data Exchange,动态数据交换)作为数据交换标准,但DDE使用的格式比较简单,并且只能用全局内存作为传输介质,所以传输的效率和功能都受限制。 OLE2.0版本引入了COM作为其基本的结构模型,使用COM提供
阅读全文
摘要:使用范例: #include <atlconv.h> void fun() { USES_CONVERSION;// 只需要调用一次,就可以在函数中进行多次转换 LPCTSTR lp = OLE2CT( L"Hello,你好") ); ... ... ... ... // 不用显式释放 lp 的内存,因为 // 由于 ATL 转换宏使用栈作为临时空间,函数结束后会自动释放栈空间。 } 使用 ATL 转换宏,由于不用释放临时空间,所以使用起来非常方便。但是考虑到栈空间的尺寸(VC 默认2M),使用时要注意几点: 1、只适合于进行短字
阅读全文
摘要:http://www.codeguru.com/Cpp/COM-Tech/activex/tutorials/article.php/c5567/IntroductionInterfacesStep 1:Create the IDL fileStep 2:Generating the type libraryStep 3:Derive from IAddStep 4:Implement the methods of IAddStep 5:Implementing IUnkownStep 6:FactoryStep 7:Implementing the methods of IClassFact
阅读全文
摘要:http://blog.csdn.net/hotsoftg/article/details/1637333这是本小人书。原名是《using stl》,不知道是谁写的。不过我倒觉得很有趣,所以化了两个晚上把它翻译出来。我没有对翻译出来的内容校验过。如果你没法在三十分钟内觉得有所收获,那么赶紧扔了它。文中我省略了很多东西。心疼那,浪费我两个晚上。译者:karycontact:karymay@163.netSTL概述STL的一个重要特点是数据结构和算法的分离。尽管这是个简单的概念,但这种分离确实使得STL变得非常通用。例如,由于STL的sort()函数是完全通用的,你可以用它来操作几乎任何数据集合,
阅读全文
摘要:在win7 下面调用ActiveX出现如题错误。xp下测试正常。编译环境: VS2008 编程语言:CSharp 系统版本:Windows7 OCX控件:无窗口的OCX控件根据微软官方的说法,导致这个错误是由于Windows的保护机制,在编译后的exe的PE头部,有一个DEP(Data Execution Prevention)的功能。需要将这个功能关闭,就能正常运行了,试了试成功了。 数据执行保护 (DEP) 是一种Windows安全机制,从Windows版本顺序上看是从Windows XP SP2开始引入,通过监视程序以确保它们使用的系统内存是安全的,帮助防止操作系统受到病毒和其他安全威胁
阅读全文