ATL/MFC
文章平均质量分 80
rundll64
这个作者很懒,什么都没留下…
展开
-
COM 组件设计与应用(六)——用 ATL 写第一个组件
一、前言 1、与 《COM 组件设计与应用(五)》的内容基本一致。但本回讲解的是在 vc.net 2003 下的使用方法,即使你不再使用vc6.0,也请和上一回的内容,参照比对。2、这第一个组件,除了所有 COM 组件必须的 IUnknown 接口外,我们再实现一个自己定义的接口 IFun,它有两个函数: Add()完成两个数值的加法,Cat()完成两个字符串的连接。3、下面.....转载 2014-09-02 03:35:18 · 493 阅读 · 0 评论 -
用ATL建立轻量级的COM对象(四)
:起步篇。第三部分:实现IUnknown。实现接口 现在你已经积累了一些关于ATL线程模型方面的知识,下面我们来讨论ATL如何实现IUnknown。ATL最不直观的(同时也是最强大的)一个方面就是你要实现的类事实上都是不能被直接实例化的抽象类。实现一个从通用的IUnknown派生的C++类。但是在确定对象的运行环境之前,QueryInterface,AddRef 和 Release是不转载 2014-09-02 02:51:44 · 439 阅读 · 0 评论 -
用ATL建立轻量级的COM对象(八)
为什么使用ATL? ATL是在单层(single-tier)应用逐渐过时,分布式应用逐渐成为主流这样一个环境中诞生的, 它最初的版本是在四个C++头文件中,其中有一个还是空的。它所形成的出色的构架专门用于开发现代分布式应用所需的轻量级COM组件。作为一个模块化的标准组件,ATL不像MFC有厚重的基础结构,省时好用的库使得成百上千的程序员一次又一次轻松实现IUnknown 和IClassFact转载 2014-09-02 02:36:07 · 496 阅读 · 0 评论 -
用ATL建立轻量级的COM对象(五)
第一部分:为什么要使用ATL。第二部分:起步篇。第三部分:实现IUnknown。第四部分:实现接口。不要过分抽象ATL最不直观的一个方面是你所定义和实现的C++类仍然是抽象基类。没错,在ATL的模板类和宏上辛苦了半天,却仍然得不到一个可以实例化的类。即使你从 CComObjectRootEx 派生,其结果同从一个或更多的ATL接口实现继承一样。从技术上讲,你的对象不提供 IUn转载 2014-09-02 02:47:21 · 495 阅读 · 0 评论 -
用ATL开发复合控件
本文讲述了如何用ATL建立复合控件,以及如何响应连接点事件。考虑到代码很简单,程序中没有加注释,如有不清楚请参看MSDN,代码仓促中完成,不免有疏漏,见谅。声明:本文仅适合初级中的初级读者。步骤一:建立ATL项目,取名为AtlSample步骤二:选择默认选项,点击Finish步骤三:插入复合控件,名称为AtlComp,选择支持错误信息,支持连转载 2014-09-02 03:17:13 · 864 阅读 · 0 评论 -
COM 组件设计与应用(八)——实现多接口
一、前言 从第五回开始到第七回,咱们用 ATL 写了一个简单的 COM 组件,之所以说简单,是因为在组件中,只实现了一个自定义(custom)的接口 IFun。当然如果想偷懒的话,我们可以把 200 个函数都加到这一个接口中, 果真如此的话,恐怕就没有人喜欢使用我们这个组件了。一个组件既然可以提供多个接口,那么我们在设计的时候,就应该按照函数的功能进行分类,把不同功能分类的函数用多个接口表现出转载 2014-09-03 02:33:10 · 498 阅读 · 0 评论 -
COM 组件设计与应用(九)——IDispatch 接口 for VC6.0
一、前言终于写到了第九回,我也一直期盼着写这回的内容耶,为啥呢?因为自动化(automation)是非常常用、非常有用、非常精彩的一个 COM 功能。由于 WORD、EXCEL 等 OFFICE 软件提供了“宏”的功能,就连我们使用的VC开发环境也提供了“宏”功能,更由于 HTML、ASP、JSP 等都要依靠脚本(Script)的支持,更体现出了自动化接口的重要性。如果你使用 vc6.0转载 2014-09-03 02:35:28 · 874 阅读 · 0 评论 -
COM 组件设计与应用(十)——IDispatch 接口 for VC.NET
一、前言终于写到了第十回,我也一直期盼着写这回的内容耶,为啥呢?因为自动化(automation)是非常常用、非常有用、非常精彩的一个 COM 功能。由于 WORD、EXCEL 等 OFFICE 软件提供了“宏”的功能,就连我们使用的VC开发环境也提供了“宏”功能,更由于 HTML、ASP、JSP 等都要依靠脚本(Script)的支持,更体现出了自动化接口的重要性。如果你使用 vc6.0转载 2014-09-03 02:37:46 · 719 阅读 · 0 评论 -
COM 组件设计与应用(十一)—— IDispatch 及双接口的调用
×loading.. 首页视频教程新闻文章代码在线杂志会员登陆 注册 更多精彩VC知识,请关注微博:当前位置:首页 >文章列表 > COM 组件设计与应用(十一)—— IDi转载 2014-09-03 02:43:31 · 798 阅读 · 0 评论 -
COM 组件设计与应用(十五)——连接点(vc6.0)
一、前言上回书介绍了回调接口,在此基础上,我们理解连接点就容易多了。二、原理图一、连接点组件原理图。左侧为客户端,右侧为服务端(组件对象)看着好复杂呀......呵呵,其实简单的紧:(注1)1、一个 COM 组件,允许有多个连接点对象(IConnectionPoint)。也就是说可以有多个发生“事件”的源头。上图就有3个连接点;2、管理这些连接点的接口叫“连接点容器转载 2014-09-03 02:46:25 · 747 阅读 · 0 评论 -
COM 组件设计与应用(十七)——持续性
一、前言 我们写程序,经常需要实现这样的需求:例一、程序运行产生一个窗口,用户关闭的时候需要记录窗口的位置,以便下次运行时保持位置不变;例二、由于程序运行时间很长,今天执行一部分,明天继续执行。那么在下次运行前要恢复前次的状态;... ... ... ...智慧的老师:以上这些需求,如何实现呢?懵懂的学生:这个简单,只要在程序退出前提取必要的信息保存到文件中,下次运行时再从转载 2014-09-03 02:52:04 · 427 阅读 · 0 评论 -
COM 组件设计与应用(七)——编译、注册、调用
一、前言 上两回中,咱们用 ATL 写了第一个 COM 组件程序,这回中,主要介绍编译、册和调用方法。示例程序你已经下载了吗?如果还没有下载,vc6.0 的用户点,vc.net 的用户点这里。二、关于编译 2-1 最小依赖 “最小依赖”,表示编译器会把 ATL 中必须使用的一些函数静态连接到目标程序中。这样目标文件尺寸会稍大,但独立性更强,安装方便;反之系统执行的时候需要有 ATL转载 2014-09-03 02:30:00 · 581 阅读 · 0 评论 -
COM 组件设计与应用(三)——数据类型
一、前言 上回书介绍了GUID、CLSID、IID和接口的概念。本回的重点是介绍 COM 中的数据类型。咋还不介绍组件程序的设计步骤呀?咳......别着急,别着急!孔子曰:“饭要一口一口地吃”;老子语:“心急吃不了热豆腐”,孙子云:“走一步看一步吧” ...... 先掌握必要的知识,将来写起程序来才会得心应手也:-)走入正题之前,请大家牢牢记住一条原则:COM 组件是运行在分布式环境中的转载 2014-09-02 03:26:33 · 508 阅读 · 0 评论 -
COM 组件设计与应用(二)——GUID 和 接口
一、前言 书接上回,话说在 doc(Word) 复合文件中,已经解决了保存 xls(Excel) 数据的问题了。那么,接下来又要解决另一个问题:当 WORD 程序读取复合文件,遇到了 xls 数据的时候,它该如何启动 Excel 呢?启动后,又如何让 Excel 自己去读入、解析、显示 xls 数据呢?二、CLSID 概念 有一个非常简单的解决方案,那就是在对象数据的前面,保存有处理这转载 2014-09-02 03:23:40 · 468 阅读 · 0 评论 -
在MFC工程中添加ATL
ATL初学者,很希望和大家多交流,多谢!说明:1.新建一个基于对话框的project:(MFC_in_ATL)2.Insert/New ATL Object...,此时出现如图对话框:点击yes,如下图: 接着Next,如下图: 确定即可。注:在出现第一个图所示的对话框时,有可能出现如下图所示的情况: 按确定,不要管它,然后再Insert/New转载 2014-09-02 03:04:45 · 1168 阅读 · 0 评论 -
用ATL建立轻量级的COM对象(一)
为什么使用ATL? ATL是在单层(single-tier)应用逐渐过时,分布式应用逐渐成为主流这样一个环境中诞生的, 它最初的版本是在四个C++头文件中,其中有一个还是空的。它所形成的出色的构架专门用于开发现代分布式应用所需的轻量级COM组件。作为一个模块化的标准组件,ATL不像MFC有厚重的基础结构,省时好用的库使得成百上千的程序员一次又一次轻松实现IUnknown 和IClassFact转载 2014-09-02 03:02:52 · 441 阅读 · 0 评论 -
用 ATL 编写 Windows 服务
有时候,我们需要自己写的程序在没有用户登陆的情况下,只要Windows系统启动就运行,那我们可以把我们的程序写成一个Windows服务。服务是能够为各种用户(包括本地用户和远程用户)所用的,拥有用户授权级进行管理的能力,并且不论用户是否物理的与正在运行该应用程序的计算机相连都能正常执行。下面,我将用一个简单的例子说明如何用ATL来编写Windows服务程序。首先,我们新建一个Proje转载 2014-09-02 03:11:46 · 904 阅读 · 0 评论 -
COM 组件设计与应用(一)——起源及复合文件
一、前言 公元一九九五年某个夜黑风高的晚上,我的一位老师跟我说:“小杨呀,以后写程序就和搭积木一样啦。你赶快学习一些OLE的技术吧......”,当时我心里就寻思 :“开什么玩笑?搭积木方式写程序?再过100年吧......”,但作为一名听话的好学生,我开始在书店里“踅摸”(注1)有关OLE的书籍(注2)。功夫不负有心人,终于买到了我的第一本COM书《OLE2 高级编程技术》,这本800多页的转载 2014-09-02 03:21:39 · 517 阅读 · 0 评论 -
COM 组件设计与应用(五)——用 ATL 写第一个组件
一、前言 1、如果你在使用 vc5.0 及以前的版本,请你升级为 vc6.0 或 vc.net 2003;2、如果你在使用 vc6.0 (ATL 3.0)请阅读本回内容;3、如果你在使用 vc.net(ATL 7.0)请阅读下回内容;(当然读读本文内容也不错)4、这第一个组件,除了所有 COM 组件必须的 IUnknown 接口外,我们再实现一个自己定义的接口 IFun,它有两个函转载 2014-09-02 03:30:22 · 521 阅读 · 0 评论 -
用ATL建立轻量级的COM对象(七)
第一部分:为什么要使用ATL。第二部分:起步篇。第三部分:实现IUnknown。第四部分:实现接口。第五部分:不要过分抽象。第六部分:输出你的类。ATL和注册表 CComModule 提供了两个方法用于自注册:一个是RegisterServer,另外一个是 UnregisterServer。这两个方法使用传递到 Init 例程的对象映射来完成实际的工作。正像我前面所提到转载 2014-09-02 02:40:59 · 430 阅读 · 0 评论 -
C++ VS 2008中ATL的创建,使用。并在C++项目以及C#项目中进行调用测试
一、前言 1、本回讲解的是在 VS 2008 下的使用ATL. 并使用Win 32 ConsoleApplication进行测试以及C#项目进行测试(调用COM). 2、这第一个组件,除了所有 COM 组件必须的IUnknown 接口外,我们再实现一个自己定义的接口 IFunTest,它有一个简单的函数: Sum()完成两个数值的加法 3、ATL的介绍 ATL转载 2014-09-02 02:15:38 · 607 阅读 · 0 评论 -
使用ATL编写一个简单的COM服务器
本文的对象是COM编程初学者,其目的旨在描述如何用ATL创建COM服务器,以及如何在VC或VB编写的客户端应用程序中调用COM服务器。为了不给初学者增加负担,本文不打算深入讨论COM和IDL的细节,而是展示用ATL创建简单的COM对象所需要的步骤。希望通过这篇文章能刺激你学习COM编程的欲望。第一步:运行ATL COM向导(参见图一)你要做的第一件事情是启动VC创建一个新的工程。选择“AT转载 2014-09-02 02:21:37 · 569 阅读 · 0 评论 -
用ATL建立轻量级的COM对象(六)
第一部分:为什么要使用ATL。第二部分:起步篇。第三部分:实现IUnknown。第四部分:实现接口。第五部分:不要过分抽象。输出你的类 实现了 CComObject ,你就有足够的条件用 C++ new 操作符创建 COM 对象。不过这样做没有什么实用价值,因为毕竟外部客户端使用 CoCreateInstance 或 CoGetClassObject 创建类实例。也就是说,转载 2014-09-02 02:45:16 · 668 阅读 · 0 评论 -
用ATL建立轻量级的COM对象(三)
第一部分:为什么要使用ATL。第二部分:起步篇。实现IUnknown 用纯粹的C++实现IUnknown相对来说比较简单。IUnknown实现之间的主要差别重点在于QueryInterface中将给出哪些接口。请看下列接口定义:01.interface IMessageSource : IUnknown {02.HRESULTGetNextMessage([out]转载 2014-09-02 02:56:15 · 461 阅读 · 0 评论 -
用ATL建立轻量级的COM对象(二)
起步篇在本文的第一部分,我们简要介绍了ATL的一些背景知识以及ATL所面向的开发技术和环境。在这一部分 将开始走进ATL,讲述ATL编程的基本方法、原则和必须要注意的问题。理解ATL最容易的方法是考察它对客户端编程的支持。对于COM编程新手而言,一个棘手的主要问题之一是正确管理接口指针的引用计数。COM的引用计数法则是没有运行时强制 性的,也就是说每一个客户端必须保证对对象的承诺。有经转载 2014-09-02 02:59:29 · 529 阅读 · 0 评论 -
COM 组件设计与应用(四)——简单调用组件
一、前言同志们、朋友们、各位领导,大家好。 VCKBASE 不得了, 网友众多文章好。 组件设计怎么学? 知识库里闷头找! 摘自---杨老师打油集录在 VCKBASE 的顶力支持下,在各位网友回帖的鼓励下,我才能顺利完成系列论文的前三回。书到本回,我们终于转载 2014-09-02 03:30:08 · 444 阅读 · 0 评论 -
[转载]VS2008下ATL应用实例
目前MFC和ATL代表了两种框架,分别面向不同类型的基于Windows的开发。 MFC代表了创建独立的Windows应用的一种简单、一致的方法;ATL提供了一种框架来实现创建COM客户机和服务器所必须的样板文件代码。 ATL(Active TemplateLibrary,活动模板库),是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。通过活动模板转载 2014-09-02 02:11:58 · 574 阅读 · 0 评论 -
COM 组件设计与应用(十六)——连接点(vc.net)
一、前言 上回书介绍了回调接口,在此基础上,我们理解连接点就容易多了。二、原理 图一、连接点组件原理图。左侧为客户端,右侧为服务端(组件对象)看着好复杂呀......呵呵,其实简单的紧:(注1)1、一个 COM 组件,允许有多个连接点对象(IConnectionPoint)。也就是说可以有多个发生“事件”的源头。上图就有3个连接点;2、管理这些连接点的接口叫“连转载 2014-09-03 02:47:46 · 668 阅读 · 0 评论