论文部分内容阅读
富文本格式(Rich Text Format)是Microsoft公司所开发的一种规格说明,这种规格说明是一种将格式化文本和图形进行编码的方法,目的是使得在各种应用程序之间传递文本和图形变得更容易。在 Windows操作系统中(Word6.0及以后版本)所创建的富文本格式文件,具有“.rtf”的文件扩展名。富文本格式目前已经成为一种非常流行的文件结构,很多文字编辑器都支持它,VB等开发工具甚至还提供了RichTextBox控件。剪贴板是应用程序间进行静态数据交换极为有用的工具。实际上,它并不是一个独立的应用程序,而是在Windows系统中单独预留出来的一块内存,用来暂时存放在Windows应用程序之间需要交换的数据。Windows给我们提供了操纵剪贴板的API函数(应用程序编程接口函数),各种应用程序通过调用这些函数来管理应用程序与剪贴板之间所进行的数据交换。富文本格式文件与我们熟知的Word文件.doc的表达能力相同。但是,富文本格式文件更具优势。首先,对富文本格式编程更加可行。富文本格式以ASCII码的形式对文本与图形等对象进行描述,具有人工可读性,是一种ASCII码文件编码方式。其次,这些年里它已经显得稳定多了,并且我们容易对它的改变进行跟踪。最后,富文本格式还具有安全性方面的优势:它不太可能被病毒感染。在一些有丰富经验的网络管理员所管理的一些网络上,他们进行了流量限制:把.doc排除在外,而赞成使用富文本格式,以预防恶意代码。这些方面都是二进制文件编码方式.doc所不具备的和欠缺的。富文本格式具有如上所述的明显优势,目前又如此的流行,这些因素使得那些编写通用工具的程序员应该考虑在自己的软件中加入输入输出富文本格式文件的功能。作为读写富文本格式文件的一个具体实例,本文讨论了在富文本格式文件与剪贴板之间的数据转换。建立基于富文本格式的剪贴板就是架设富文本格式文件与剪贴板之间进行数据交换的桥梁。根据“架设桥梁”所利用的“地基”的不同,<WP=60>我们可以将转换途径区分为直接方法和间接方法。所谓的“直接方法”,就是直接分析富文本格式,记录下各种格式信息,然后在程序中重新构造出对象。所谓的“间接方法”,就是利用Windows已经具备的功能,通过某些软件技术,调用Windows的底层API函数建立联系。本文系统地介绍了富文本格式与剪贴板的概念,讨论了在Microsoft Visual C++开发环境下,利用微软基础类库MFC与组件对象模型COM技术在建立基于富文本格式的剪贴板中的应用。本文主要做了以下四方面的工作:1 富文本格式富文本格式的结构并不复杂,但是内容繁多。本文从总体上阐述了富文本格式的语法,使得我们对它有一个清晰的认识。通过大量地仔细地阅读关键字并理解它们各自的意义,本文将它们依照语法功能进行分类与归纳,给出了在编程中所首要注意的部分富文本格式语法的范式描述。这些工作对建造富文本格式分析与构造程序,对程序的可扩展性都具有很大的帮助。2 剪贴板为了更深层次的观察与了解剪贴板的内容,笔者编写了一个处理剪贴板上的数据的实用工具。它是一个极具吸引力的剪贴板察看程序,是富文本格式分析与构造程序的一个重要组成部分。它也可以观察拖放操作中的数据。3 富文本格式分析器与构造器的间接实现方法本文实现了四种实现富文本格式与剪贴板之间的数据交换的间接方法。第一种方法基于Visual C++MFC应用程序框架。这种方法的实质是利用Visual C++的MFC应用程序框架所提供的支持。这些支持包括:富文本格式与视图之间,视图与剪贴板之间的数据传送的支持。第二种方法基于Visual C++MFC类CRichEditView。这种方法的实质是利用视图类CRichEditView所封装的控制类CRichEditCtrl对富文本格式流进行操作。第三种方法基于Visual C++的OLE自动化客户端。这种方法的实质是利用组件对象模型COM技术,调用Windows系统下的字处理软件Word的编程接口API函数,对富文本格式文件进行操作。第四种方法基于Visual C++MFC在视图中嵌入Word。这种方法的实质是利用组件对象模型COM技术,将Windows系统的字处理软件Word嵌入到应用程序的客户区当中,使用Word所提供的所有功能对富文本格式文件进行操作。 <WP=61>4 富文本格式分析器的直接实现方法本文采用一种表驱动的方法分析富文本格式。具体来说就是把富文本格式文件的段落、颜色、字体等风格,在程序中用一些数据结构把这些信息存起来,再根据要求进行显示或转换。这种方法使得程序在扫描富文本格式的时候具备最大的灵活性,当然它同时也存在着难于检测出不正确的富文本格式的问题。本文对在开发过程中遇到的问题,例如:汉字的显示,进行了简要的论述。