Welcome 微信登录

首页 / 软件开发 / VC.NET

COM组件设计与应用(一)起源及复合文件

COM组件设计与应用(一)起源及复合文件

COM组件设计与应用(一)起源及复合文件2009-12-24杨老师一、前言公元一九九五年某个夜黑风高的晚上,我的一位老师跟我说:“小杨呀,以后写程序就和搭积木一样啦。你赶快学习一些OLE的技术吧......”,当时我心里就寻思 :“开什么玩笑?搭积木方式写程序?再过100年吧......”,但作为一名听话的好学生,我开始在书店里“踅摸”(注1)有关OLE的书籍(注2)。功夫不负有心人,...
COM组件设计与应用(二)——GUID和接口

COM组件设计与应用(二)——GUID和接口

COM组件设计与应用(二)——GUID和接口2009-12-24杨老师一、前言书接上回,话说在 doc(Word) 复合文件中,已经解决了保存 xls(Excel) 数据的问题了。那么,接下来又要解决另一个问题:当 WORD 程序读取复合文件,遇到了 xls 数据的时候,它该如何启动 Excel 呢?启动后,又如何让 Excel 自己去读入、解析、显示 xls 数据呢?二、CLSID 概念有一个非常简单的解决方案,那就是在对象数据的前面,保存有处理这个数据...
COM组件设计与应用(三)——数据类型

COM组件设计与应用(三)——数据类型

COM组件设计与应用(三)——数据类型2009-12-24杨老师一、前言上回书介绍了GUID、CLSID、IID和接口的概念。本回的重点是介绍 COM 中的数据类型。咋还不介绍组件程序的设计步骤呀?咳......别着急,别着急!孔子曰:“饭要一口一口地吃”;老子语:“心急吃不了热豆腐”,孙子云:“走一步看一步吧” ...... 先掌握必要的知识,将来写起程序来才会得心应手也:-)走入正...
COM组件设计与应用(四)——简单调用组件

COM组件设计与应用(四)——简单调用组件

COM组件设计与应用(四)——简单调用组件2009-12-24杨老师二、组件的启动和释放在第三回中,大家用“小本本”记录了一个原则:COM 组件是运行在分布式环境中的 。于是,如何启动组件立刻就遇到了严重的问题,大家看这段代码:p = new 对象;p->对象函数();delete p;这样的代码再熟悉不过了,在本地进程中运行是不会有问题的。但是你想想,如果这个对象是在“地球另一边”的计算机上,结果会如...
COM组件设计与应用(五)——用ATL写第一个组件

COM组件设计与应用(五)——用ATL写第一个组件

COM组件设计与应用(五)——用ATL写第一个组件2009-12-24杨老师一、前言1、如果你在使用 vc5.0 及以前的版本,请你升级为 vc6.0 或 vc.net 2003;2、如果你在使用 vc6.0 (ATL 3.0)请阅读本回内容;3、如果你在使用 vc.net(ATL 7.0)请阅读下回内容;(当然读读本文内容也不错)4、这第一个组件,除了所有 COM 组件必须的 IUnknown 接口外,我们再实现一个自己定义的接口 IFun,它有两个函数...
COM组件设计与应用(六)——用ATL写第一个组件(vc.net)

COM组件设计与应用(六)——用ATL写第一个组件(vc.net)

COM组件设计与应用(六)——用ATL写第一个组件(vc.net)2009-12-24杨老师一、前言1、与 《COM 组件设计与应用(五)》的内容基本一致。但本回讲解的是在 vc.net 2003 下的使用方法,即使你不再使用vc6.0,也请和上一回的内容,参照比对。2、这第一个组件,除了所有 COM 组件必须的 IUnknown 接口外,我们再实现一个自己定义的接口 IFun,它有两个函数: Add()完成两个数值的加法,Cat()完成两个字符串的连接。...
COM组件设计与应用(七)——编译、注册、调用

COM组件设计与应用(七)——编译、注册、调用

COM组件设计与应用(七)——编译、注册、调用2009-12-24杨老师一、前言上两回中,咱们用 ATL 写了第一个 COM 组件程序,这回中,主要介绍编译、注册和调用方法。示例程序你已经下载了吗?如果还没有下载,vc6.0 的用户点这里,vc.net 的用户点这里。二、关于编译2-1 最小依赖“最小依赖”,表示编译器会把 ATL 中必须使用的一些函数静态连接到目标程序中。这样目标文件尺寸会稍大,但独立性更强,安装方便;反之系统执行...
COM组件设计与应用(八)——实现多接口

COM组件设计与应用(八)——实现多接口

COM组件设计与应用(八)——实现多接口2009-12-24杨老师一、前言从第五回开始到第七回,咱们用 ATL 写了一个简单的 COM 组件,之所以说简单,是因为在组件中,只实现了一个自定义(custom)的接口 IFun。当然如果想偷懒的话,我们可以把 200 个函数都加到这一个接口中, 果真如此的话,恐怕就没有人喜欢使用我们这个组件了。一个组件既然可以提供多个接口,那么我们在设计的时候,就应该按照函数的功能进行分类,把不同功能分类的函数用多个接口表现出...
COM组件设计与应用(九)——IDispatch接口for VC6.0

COM组件设计与应用(九)——IDispatch接口for VC6.0

COM组件设计与应用(九)——IDispatch接口for VC6.02009-12-24杨老师一、前言终于写到了第九回,我也一直期盼着写这回的内容耶,为啥呢?因为自动化(automation)是非常常用、非常有用、非常精彩的一个 COM 功能。由于 WORD、EXCEL 等 OFFICE 软件提供了“宏”的功能,就连我们使用的VC开发环境也提供了“宏”功能,更由于 HTML、ASP、JSP 等都要依靠脚本(...
COM组件设计与应用(十)——IDispatch接口for VC.NET

COM组件设计与应用(十)——IDispatch接口for VC.NET

COM组件设计与应用(十)——IDispatch接口for VC.NET2009-12-24杨老师一、前言终于写到了第十回,我也一直期盼着写这回的内容耶,为啥呢?因为自动化(automation)是非常常用、非常有用、非常精彩的一个 COM 功能。由于 WORD、EXCEL 等 OFFICE 软件提供了“宏”的功能,就连我们使用的VC开发环境也提供了“宏”功能,更由于 HTML、ASP、JSP 等都要依靠脚本...
COM组件设计与应用(十一)——IDispatch及双接口的调用

COM组件设计与应用(十一)——IDispatch及双接口的调用

COM组件设计与应用(十一)——IDispatch及双接口的调用2009-12-25杨老师一、前言前段时间,由于工作比较忙,没有能及时地写作。其间收到了很多网友的来信询问和鼓励,在此一并表示感谢。咳......我也需要工作来养家糊口呀......上回书介绍了两种方法来写自动化(IDispatch)接口的组件程序,一是用 MFC 方式编写“纯粹”的 IDispatch 接口;二是用 ATL 方式编写“双接口”的...
COM组件设计与应用(十二)——错误与异常处理

COM组件设计与应用(十二)——错误与异常处理

COM组件设计与应用(十二)——错误与异常处理2009-12-25杨老师一、前言程序设计中,错误处理必不可少,而且通常要占用很大的篇幅。本回书着落在 COM 中的错误(异常)的处理方法。在组件程序中,如果遇到错误,一般有两个方式进行处理。二、简单返回对于比较简单的错误,直接返回表示错误原因的 HRESULT。比如下面几个就是常见的错误值:E_INVALIDARG0x80070057参数错误E_OUTOFMEMORY0x8007000E内存错误E_NOTIM...
COM组件设计与应用(十三)——事件和通知(VC6.0)

COM组件设计与应用(十三)——事件和通知(VC6.0)

COM组件设计与应用(十三)——事件和通知(VC6.0)2009-12-25杨老师一、前言我的 COM 组件运行时产生一个窗口,当用户双击该窗口的时候,我需要通知调用者;我的 COM 组件用线程方式下载网络上的一个文件,当我完成任务后,需要通知调用者;我的 COM 组件完成一个钟表的功能,当预定时间到达的时候,我需要通知调用者;... ... ... ...本回书开始话说 COM 的事件、通知、连接点......这些内容比较多,我分两次(共四回)来介绍。二...
COM组件设计与应用(十四)——事件和通知(vc.net)

COM组件设计与应用(十四)——事件和通知(vc.net)

COM组件设计与应用(十四)——事件和通知(vc.net)2009-12-25杨老师一、前言我的 COM 组件运行时产生一个窗口,当用户双击该窗口的时候,我需要通知调用者;我的 COM 组件用线程方式下载网络上的一个文件,当我完成任务后,需要通知调用者;我的 COM 组件完成一个钟表的功能,当预定时间到达的时候,我需要通知调用者;... ... ... ...本回书开始话说 COM 的事件、通知、连接点......这些内容比较多,我分两次(共四回)来介绍。...
COM组件设计与应用(十五)——连接点(vc6.0)

COM组件设计与应用(十五)——连接点(vc6.0)

COM组件设计与应用(十五)——连接点(vc6.0)2009-12-25杨老师一、前言上回书介绍了回调接口,在此基础上,我们理解连接点就容易多了。二、原理图一、连接点组件原理图。左侧为客户端,右侧为服务端(组件对象)看着好复杂呀......呵呵,其实简单的紧:(注1)1、一个 COM 组件,允许有多个连接点对象(IConnectionPoint)。也就是说可以有多个发生“事件”的源头。上图就有3个连接点;2、管理这些连接点的接口叫&...
COM组件设计与应用(十六)——连接点(vc.net)

COM组件设计与应用(十六)——连接点(vc.net)

COM组件设计与应用(十六)——连接点(vc.net)2009-12-25杨老师一、前言上回书介绍了回调接口,在此基础上,我们理解连接点就容易多了。二、原理图一、连接点组件原理图。左侧为客户端,右侧为服务端(组件对象)看着好复杂呀......呵呵,其实简单的紧:(注1)1、一个 COM 组件,允许有多个连接点对象(IConnectionPoint)。也就是说可以有多个发生“事件”的源头。上图就有3个连接点;2、管理这些连接点的接口叫...
COM组件设计与应用(十七)——持续性

COM组件设计与应用(十七)——持续性

COM组件设计与应用(十七)——持续性2009-12-25 vckbase 杨老师一、前言我们写程序,经常需要实现这样的需求:例一、程序运行产生一个窗口,用户关闭的时候需要记录窗口的位置,以便下次运行时保持位置不变;例二、由于程序运行时间很长,今天执行一部分,明天继续执行。那么在下次运行前要恢复前次的状态;... ... ... ...智慧的老师:以上这些需求,如何实现呢?懵懂的学生:这个简单,只要在程序退出前提取必要的信息保存到文件中,下次运行时再从文件...
COM组件设计与应用(十八)——属性包

COM组件设计与应用(十八)——属性包

COM组件设计与应用(十八)——属性包2009-12-25杨老师一、前言书接上回,本回着落在介绍属性包 IPersistPropertyBag 接口的实现方法和调用方式。属性包,是以“名称 - 值”的方式提供组件持续性的支持,而“名称 - 值”恰恰又适合于用文本方式来表现。下面的片段是在 HTML 中插入 Microsoft MonthView Control ActiveX 控件后的样式:<objec...
GDI+编程基础(一)GDI+ Vs GDI

GDI+编程基础(一)GDI+ Vs GDI

GDI+编程基础(一)GDI+ Vs GDI2009-12-25李昊一、GDIGDI是位于应用程序与不同硬件之间的中间层,这种结构让程序员从直接处理不同硬件的工作中解放出来,把硬件间的差异交给了GDI处理。GDI通过将应用程序与不同输出设备特性相隔离,使Windows应用程序能够毫无障碍地在Windows支持的任何图形输出设备上运行。例如,我们可以在不改变程序的前提下,让能在Epson点式打印机上工作的程序也能在激光打印机上工作。它把windows系统中的...
<< 1 2 3 4 5 6 7 8 9 10 >>