- 博客(332)
- 资源 (2)
- 收藏
- 关注
转载 COM原理及应用---- 自动化(Automation)对象
1、自动化技术 自动化技术既以前提到的OLE自动化。虽然自动化技术建立在COM基础上,但自动化要比COM应用广泛得多。一方面,自动化继承了COM的很多优点,比如语言无关、进程透明等特性;另一方面,自动化简化了COM的一些底层细节,比如属性和方法的处理、一组专用于自动化的数据类型等。自动化也是OLE的基础,所以可以把自动化看作COM和OLE中间的一项技术。自动化的核心是IDispat
2007-06-13 23:01:00
1321
转载 COM原理及应用---- 分布式COM(DCOM)
1、DCOM COM的进程透明特性表现在组件对象和客户程序即可以拥有各自的进程空间,也可以共享同一个进程空间,COM负责把客户的调用正确传到组件对象中,并保证参数传递的正确性。组件对象和客户代码不必考虑调用传递的细节,只要按照一般的函数调用的方式实现即可。如果进一步拓展进程透明特性,考虑组件对象与客户程序运行在不同计算机上的情形,把进程透明性拓展为位置透明性,形成分布式组件对象模型
2007-06-13 22:54:00
1638
转载 COM原理及应用---- 统一数据传输
1、概述 COM提供了应用之间数据交换的标准方案,称为统一数据传输(UDT,uniform data transfer)。统一数据传输技术建立在结构化存储技术的基础之上,它通过一个“数据对象”来表达要传输的数据信息,因此,统一数据传输技术的核心在于数据对象的定义和实现。剪贴板和拖-放是统一数据传输的两个典型应用。 2、数据交换标准 早期的OLE1.0版本使用
2007-06-13 21:50:00
1498
转载 COM原理及应用---- 命名和绑定技术
1、COM对象的创建方法 客户程序可以通过CoCreateInstance函数创建COM,在创建之前必须知道对象的一些基本情况,比如对象的CLSID或者对象的ProgID。 另一种对象创建方法是通过名字对象(moniker)创建,就是利用对象命名和绑定技术(即名字技术)。 2、名字技术的地位 名字技术算不上COM的基本核心,但也是COM体系结
2007-06-13 21:42:00
1450
1
转载 COM原理及应用---- 结构化存储
1、结构化存储 COM的结构化存储(structured storage)机制,也称为永久存储(persistent storage)机制。结构化存储可以说是软件存储技术的一个重要进展,COM针对组件软件的需要,在文件系统的基础上,提出了结构化存储的概念。利用结构化存储,组件程序之间可很好地协同工作,一个组件程序可以与另一个组件程序共享同一个文件,就如同一个应用程序与另一个应用程序
2007-06-13 21:35:00
1365
转载 COM原理及应用---- 可连接对象
1、COM的高级特性 COM规范中有一些高级特性,如可连接对象、永久存储、一致的数据传输等,使COM规范具有更强的生命力,它们也是OLE的基础,但它们的应用又不仅仅局限于OLE,这些高级特性已经广泛应用于Windows操作系统上。 2、入接口、出接口与接收器 入接口(incoming interface)是组件暴露给客户,被动地监听并为客户请求作出反应的接口
2007-06-13 21:23:00
1341
转载 COM原理及应用---- 用Visual C++开发COM应用
1、MFC和ATL 对于COM应用的开发来说,建立一套标准的、有能够不断发展的类库是非常有意义的,这样可以实现程序的重用性。Microsoft Visual C++提供了两套满足这样需要的类库:MFC库和ATL模板库。MFC不仅可用于建立COM应用,它更是一套Windows平台上各种应用开发的基本类库,而ATL则主要侧重于COM应用的开发,利用ATL可建立一些小巧、快捷的COM组件。
2007-06-11 23:52:00
2691
1
转载 COM原理及应用---- COM特性
1、面向对象系统的三个最基本的特性 封装性、多态性、重用性。 2、COM特性的概述COM对象的封装特性是很彻底的,所有的对象状态信息必须通过接口才能访问;而COM的多态性完全通过接口体现出来,而且,COM分别在三个层次上体现了多态性:接口成员函数、单个接口、一组接口(对象类别即implemented category)。而COM的重用性相对复杂。 3、重用性
2007-06-11 23:04:00
1265
转载 COM原理与应用----COM的实现
1、COM的实现与操作系统平台密切相关因为COM最初源于Microsoft Windows平台,所以COM实现部分(即COM库)很多地方直接用到了Windows系统的一些特性,比如系统注册表、动态连接库等等,但实际上COM是一个与平台无关的组件软件模型。Windows上使用的COM标准只是COM的一个具体实现。2、COM的实现方法进程内组件(DLL ,in-process compon
2007-06-11 00:12:00
1820
转载 COM原理及应用---- COM对象和接口
1、COM对象的理解 COM对象类似于C++语言中类的概念,类的每个实例代表一个COM对象,它也包括属性(即状态)和方法(即操作),状态反映对象的存在,方法就是接口。 2、COM对象的标识-CLSID GUID是一个128位的随机数,重复概率极低。它的值来源于两部分:空间值(网卡地址或随机数)和时间值。 获得GUID值可以使用VC++提供的工具:GUIDGen.e
2007-06-10 12:18:00
2401
1
转载 COM原理及应用----概述
1、组件设计的原始目的跨平台、跨网络、积木式搭建程序 2、组件的两个规范:CORBA 和COMOMC(Object Management Group,对象管理组织)的CORBA(Common Object Request Breaker Arehitecture ,公共对象请求中介体系结构)。Microsoft的COM(Component Objedt Model,组件对
2007-06-10 11:53:00
1511
转载 COM原理
⊙ 第一章 概述=============================================================================== COM 是什么-------------------------------------------------------------------------------COM 是由 Microsoft 提出的组件标准
2007-06-10 11:04:00
3600
1
转载 通过反汇编理解 C++语言实质探讨
1 前言和传统的程序设计方法相比较,面向对象的程序设计方法的最显著的特点是它更接近于人们通常的思维规律,因而设计出的软件系统能够更直接地、自然地反映客观现实中的问题。面向对象的程序设计方法起源于信息隐藏和抽象数据类型概念。它的基本思想是将要构造的软件系统表现为对象集,其中每个对象是将一组数据和使用它的一组基本操作或过程封装在一起而组成的实体,对象之间的联系主要是通过消息的传递实现的。然而正是面向对
2007-06-09 22:49:00
1003
原创 一种界面需求分析方法
1、引言软件界面是人与计算机之间的媒介。用户通过软件界面来与计算机进行信息交换。因此,软件界面的质量,直接关系到应用系统的性能能否充分发挥,能否使用户准确、高效、轻松、愉快地工作,所以软件的友好性、易用性对于软件系统至关重要。目前国内软件开发者在设计过程中很注重软件的开发技术及其具有的业务功能,而忽略了用户对软件界面的需求,影响软件的易用性、友好性;对界面设计的研究也集中在界面设计技术、设计手段上
2007-06-09 11:52:00
938
转载 尽量使用“引用常量”传参,而不是传值
默认情况下, C++ 为函数传入和传出对象是采用传值方式的(这是由 C 语言继承而来的特征)。除非明确使用其他方法,函数的形式参数总会通过复制实在参数的副本来创建,并且,函数的调用者得到的也是函数返回值得一个副本。这些副本是由对象的拷贝构造函数创建的。这使得“传值”成为一项代价十分昂贵的操作。观察下边的示例中类的层次结构: class Person {public: Person
2007-06-02 02:37:00
1044
转载 要让接口易于正确使用,而不易被误用
C++中到处充满了接口。函数接口、类接口、模板接口,等等。每个接口都是实现客户端程序员与我们的代码相交互的一种手段。假设客户通情达理,他们的项目也十分优秀,他们便会十分看重我们的接口是否易于正确使用。这是千真万确的,如果他们误用了这些的接口中的任一个,那么我们也难推其咎。在理想状态下,如果客户端程序员尝试使用一个接口,但是没有达到预期的效果,那么代码则不应通过编译。反之,如果代码通过了编译,
2007-05-26 08:58:00
858
原创 OpneOffice--C++ 语言绑定
UNO 语言绑定是将 UNO 映射到各种编程语言或组件模型。此语言绑定有时称为 UNO 运行时环境 (URE)。 C++ 语言绑定程序库概述所有UNO程序库的基础是sal程序库.sal程序库包含系统抽象层(sal)和附加的运行时库功能,但不包含任何UNO特有的信息.可以通过C++内联包装类访问sal程序库中的常用C函数.这样就可以从任何其他编程语言调用函数,因为多数编程语
2007-05-25 17:08:00
825
原创 C++局部类和嵌套类的区别
局部类 在一个函数体内定义的类称为局部类。局部类中只能使用它的外围作用域中的对象和函数进行联系,因为外围作用域中的变量与该局部类的对象无关。局部类不能被外部所继承。在定义局部类时需要注意:局部类中不能说明静态成员函数,并且所有成员函数都必须定义在类体内。在实践中,局部类是很少使用的。下面是一个局部类的例子。 int a; void fun() { static int s; c
2007-05-25 14:04:00
885
转载 互相联系的 new 和 delete 要使用同样的形式
请观察下面的代码有什么不妥之处: std::string *stringArray = new std::string[100];...delete stringArray;一切似乎都按部就班, new 语句与 delete 相匹配。然而,这却是十分错误的。这段程序将出现无法预知的行为。最起码的是,由于该 stringArray所指向的 100 个 string对象中的99个
2007-05-22 13:41:00
677
转载 留心资源管理类中的复制行为
“资源获取即初始化”( Resource Acquisition Is Initialization ,简称 RAII )是资源管理的主要内容。使用 auto_ptr和tr1::shared_ptr描述了如何管理堆上的资源的。然而并不是所有的资源都分配于堆上,对于不分配于堆上的资源,类似于auto_ptr和tr1::shared_ptr这一类的智能指针并不适合于处理它们。这是千真万确的,必
2007-05-21 20:52:00
697
转载 使用对象来管理资源
资源是这样一种东西:一旦借助它们所做的事情完成了,必须要将其返回给系统。如果没有这样做,那么不好的事情就会发生。在 C++ 程序中,最常用的资源是动态分配的内存(如果分配了内存但是却忘记了释放它们,程序就会遇到一次内存泄漏),但是内存只是所需要管理的众多资源中的一种。其它常见的资源包括文件主字码、互斥锁、以及图形用户界面( GUI )中的字体和画笔、数据库联接、网络套结字。无论是何种资源
2007-05-20 18:42:00
721
转载 要复制整个对象,不要遗漏任一部分
在一个设计良好的面向对象系统中,对象的所有内在部分都会被封装起来,只有两个函数是用来复制对象的:即所谓的拷贝构造函数和拷贝赋值运算符。我们将称这些函数为拷贝函数。 当我们自己声明复制函数时,向编译器表明,默认实现方式中有一些内容是我们所不喜欢的。编译器会把这种做法视为对它的冒犯,它会一个很有趣的方式来报复你:当你的实现几乎一定要出现错误时,它就是不告诉你。 下面示例中是一个表示顾客的类,其
2007-05-20 15:25:00
699
原创 确保对象在使用前得到初始化
C++ 在对象初始值问题上显得变化多端。比如说,如下的代码: int x; 在许多情况下, x 会确保得到初始化(为零),但是另一些情况下则不会,如果这样编写: class Point { int x, y; }; ... Point p; p 的数据成员在一些情况下会确保得到初始化(为零),但是另一些情况就不会了。如果以前学习的语言没有对象初始化的概念,那么请
2007-05-20 10:02:00
781
转载 尽可能使用 const
const令人赞叹之处就是:我们可以通过它来指定一个语义上的约束(一个特定的不能够更改的对象)这一约束由编译器来保证。通过一个const,可以告诉编译器和其他程序员,程序中有一个数值需要保持恒定不变。不管何时,当需要这样一个数时,都应该这样做,这样便可以让编译器来协助我们确保这一约束不被破坏。const 关键字的用途十分广泛。在类的外部,可以定义全局的或者名字空间域的常量,也可以通过添加
2007-05-20 08:53:00
714
转载 尽量使用const、enum、inline,避免使用#define
尽量把工作交给编译器而不是预编译器,因为 #define 的内容不属于语言自身的范畴。这是 #define 的众多问题之一,请看下面的代码: #define ASPECT_RATIO 1.653 编译器也许根本就接触不到这个符号名 ASPECT_RATIO ,它在编译器对源代码进行编译以前也许就被预处理器替换掉了。于是,ASPECT_RATIO 这一名字很可能不会列在符号表中。如果在
2007-05-19 16:54:00
1055
转载 将C++ 看作多种语言的联合体
起初, C++ 仅仅是增补了面向对象特性的 C 语言。甚至 C++ 原始的名称都叫做“使用类的C 语言” ,这可以很明显地反映出这一继承关系。 随着 C++ 逐渐成熟,它变得更加丰富多彩,更加大胆前卫,它开始采纳一些与 “ 使用类的 C 语言”不同的编程策略。在构建函数时为达到不同目标, C++ 的发明者为其添加了异常处理机制;模板为设计思想注入了新的活力;同时, STL 使 C++ 达到
2007-05-19 12:42:00
983
转载 OpenOffice---服务管理器与组件上下文
根对象(与 StarSuite以及与任何 UNO 应用程序连接的根对象 – 服务管理器)用作每个 UNO 应用程序的入口点,并在实例化过程中被传送到每个 UNO 组件。 服务管理器com.sun.star.lang.ServiceManager 是每个 UNO 应用程序中的主要工厂。它按服务名称实例化服务,以枚举某项具体服务的所有实现,并在运行时添加或删除某项具体服务的工厂。实例化时,
2007-05-19 11:44:00
1487
转载 UNo-API的数据类型
UNO(通用网络对象)的目标是为跨编程语言和跨平台边界的网络对象提供环境。UNO 对象可在任何地方运行和通信。UNO 通过提供以下基础框架达到此目标:• UNO 对象在一种称为 UNOIDL(UNO 接口定义语言)的抽象元语言中指定,这种语言与CORBA IDL 或 MIDL 类似。利用 UNOIDL 规范,可以生成与语言有关的头文件和程序库,用于在目标语言中实现 UNO 对象。在 UN
2007-05-19 10:15:00
1578
原创 C++内存对象
一.基本概念 C++将内存划分为三个逻辑区域:堆、栈和静态存储区。 栈,一般用于存放局部变量或对象,如函数定义中用类似下面语句声明的对象: Type stack_object ; stack_object便是一个栈对象,它
2007-05-18 23:58:00
878
原创 C++的垃圾回收机制
许多 C /C++ 程序员认为垃圾回收肯定比自己来管理动态内存要低效,而且在回收时会让程序停顿在那里,而如果自己控制内存管理的话,分配和释放时间都是稳定的,不会导致程序停顿。 其实垃圾回收机制并不慢,甚至比动态内存分配更高效。因为我们可以只分配不释放,那么分配内存时只需要从堆上一直的获得新的内存,移动堆顶的指针就够了;而释放的过程被省略了,自然也加快了速度。现代的垃圾回收算法已经发展了很多,
2007-05-18 22:39:00
2422
原创 UNO--对象、接口和服务
对象在 UNO 中,对象是一个软件工件,具有我们可调用的方法和可获取并设置的属性。严格说来,对象提供的方法和属性由其支持的接口集指定。 接口接口指定共同定义对象的一个方面的属性集和方法集。例如,接口com.sun.star.resource.XResourceBundlemodule com { module sun { module star { module re
2007-05-18 17:40:00
985
原创 OpenOffice.org 2.0 User Interface Controller Internals
The user interface elements are using controllers for each of their elements to bind them to the dynamic state of the application module. Its the responsibility of every user interface controller to
2007-05-18 00:02:00
800
原创 编译器
编译器,是将便于我们编写,阅读,维护的高级计算机语言翻译为计算机能识别,运行的低级机器语言的程序。编译器将源程序(Source program)作为输入,翻译产生使用目标语言(Target language)的等价程序。源程序一般为高级语言(High-level language),如Pascal,C++等,而目标语言则是汇编语言或目标机器的目标代码(Object code),有时也称作机器
2007-05-17 19:52:00
1032
原创 openoffice--Slot Processing
In former (Pre-UNO) time the slots where not only used for command dispatching but also for the implementation of our Basic API (up to StarOffice 5.2), so the slot arrays where "real" interfaces. T
2007-05-17 16:58:00
682
原创 IDL Files and Cpp
Services and Interfaces Introduction See tutorial (in pdf) chapter 2 In OpenOffice API, a "service" is an abstract concept providing certain interfaces and properties/attributes. As Developers Gu
2007-05-16 19:20:00
1199
转载 OpenOffice.org Code Snippets--Get and modify the current selection in calc (in C++)
Below, an example to manage the selection in calc, whatever it is (simple cell, simple range or multiple ranges). Code: Reference
2007-05-15 23:51:00
701
转载 OpenOffice.org Code Snippets--Accessing document properties
Recently, I had the task to access document properties before converting a .xls Excel document to a .pdf document. Because , I couldnt find any code-snippets, Im posting the code here, might be usef
2007-05-15 23:49:00
712
转载 OpenOffice.org Code Snippets--Working with a Presentation Document in C++
Here is some code for a Presentation Document, notice that I didnt get the time yet to fully clean it up. So there are some small tests in it, that are not necessary and often I use the longer way th
2007-05-15 23:47:00
1575
转载 The UNO C++ Language
The aim of this chapter is to explain peculiarities of the C++ language in the UNO environment and not to provide skills on traditional C++. To put it differently, I want to give here the UNO/C++ back
2007-05-15 22:29:00
1514
原创 CORBA概论
CORBA(Common Object Request Broker Architecture,公共对象请求代理架构):它是和微软com,com+齐名的同类软件技术规范,由OMT提出。用于在不同进程(程序)之间,甚至是不同物理机器上的进程(程序)之间通讯。底层技术依靠RPC[远程过程调用]实现。 面向对象的软件,以数据为中心设计,对象类既具有模块的封装性和类属等特性,还具有继承特性,极大
2007-05-13 22:57:00
667
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅