
| 出版日期:1999-09-06 总期号:855 本年期号:65 |
|
为authorware增加标注功能
朱诗兵、何忠龙 用过adobe acrobat的用户一定对其中的notes功能非常感兴趣,当你想在显示页面的某个地方写下自己的心得体会时,只要点击notes功能,则可输入你的各种想法、构思,并自动保存。对于常常自己写程序的用户,是否想在自己的作品中实现此功能呢?下面就利用richtextbox控件,在authorware多媒体创作平台中实现强大的标注功能。 一、richtextbox控件 richtextbox控件可用于输入和编辑文本,它提供了比常规的textbox控件更高级的格式特性。richtextbox控件提供了一些属性,通过这些属性的设置,可对该控件中任何部分的文本使用不同的格式进行控制。 在richtextbox控件中是以rtf格式或ascii文本格式打开或保存文件的。可以使用该控件的loadfile和savefile功能直接读写文件,也可以设置filename属性,将.rtf或.txt 文件的内容装入该控件。如果需要对richtextbox控件中的内容进行全部或部分打印,可用selprint实现。 按照缺省规定,richtextbox控件没有滚动条。在运行时,如果在该控件中装入了较大的文件,用户就不能看到文件的全部内容了。为使用户能够方便地进行滚动,可将其 scrollbars属性设置为1(水平的)、2(竖直的)或3(两个都有)。这必须在设计时完成,因为scrollbars属性在运行时是只读的。 richtextbox控件的用途: ●作为“无底”的文本框,可用于编写阅读特别大的文本文件的应用程序; ●在任何应用程序中实现功能完备的、支持多种媒体信息的文本编辑。 二、强大标注功能的具体实现 在authorware多媒体创作平台中利用图标先建立一个如下的程序流程(参见图1) 1.check for activex files计算图标 在check for activex files计算图标中,利用系统固有的和用户自定义文件budapi.u32中的部分函数,编写如下程序: if ~activexinstalled() then bamsgbox( ″请检查是否有activex控件!″,″军事航天通信原理″ , ″ok″ , ″information″, 0 ) rtfocx:=1 end if if ~activexcontrolquery(″{3b7c8860-d78f-101b-b9b5-04021c009402}″) then copiedfile:=bacopyfile( filelocation^″richtx32.ocx″,basysfolder(″system" )^″richtx32.ocx″, ″always″ ) if ~copiedfile then activexcontrolregister(basysfolder(″system″ )^″richtx32.ocx″) ——注册.ocx else bamsgbox( ″系统子目录下没有richtx32.ocx!″,″军事航天通信原理″, "ok" , ″information″ , 0 ) rtfocx:=1 end if end if rtfcatalog:=filelocation^″notes″ ——rtf文件目录 该段程序主要完成richtextbox控件在系统中的检测,以及设置用户标注后所保存rtf文件的目录。在参数rtfocx=0的情况下,才能实现强大的标注功能,否则不能。参数rtfcatalog设置为一个相对路径,标注所生成的rtf文件就保存在相对于运行程序的notes子目录下。 2.rtf-bk显示图标 该图标的主要功能是:给最终用户提供使用标注功能时的显示界面。它的设计风格直接关系到标注功能的使用方便程度以及美观程度。可以根据个人喜好设计一个标注界面,只是要注意richtextbox控件与你设计的标注界面要统一。 3.readrtf11控件图标 通过选单“insert”中的“control”操作,插入richtextbox控件,设置其属性,这里要注意的是,此时一定要根据需要对scrollbars属性进行设置,运行时不能修改scrollbars属性。至于修改richtextbox控件显示窗口大小,可以在运行时按下ctrl+p键,激活richtextbox控件,调整显示窗口大小,直到满意为止。 4.rtf初始化计算图标 根据参数rtfocx来判断是否可以进行rtf文件的读入,然后利用函数callsprite(方法loadfile),读入rtf文件rtfcatalog^"\\00.rtf",格式如下: if rtfocx=0 then callsprite(iconid@"readrtf11",#loadfile,rtfcatalog^"\\00.rtf",0) rtf文件名可以根据个人命名规则进行命名,也可以通过直接输入或计算得到rtf文件名。 5.rtf-change计算图标 当用户在richtextbox控件显示界面中双击时,激活事件dblclick,于是执行如下程序: if rtfocx=0 then callsprite(iconid@"readrtf11",#lsavefile,rtfcatalog^"\\00.rtf",0) 完成对用户输入的内容保存,其保存文件名为rtfcatalog^"\\00.rtf" 。 v6.esc计算图标 当用户单击退出按钮或按下esc键时,执行如下程序: if rtfocx=0 then callsprite(iconid@"readrtf11",#lsavefile,rtfcatalog^"\\00.rtf",0) 保证了退出时,对richtextbox控件内容的保存。 7.erasertf擦除图标 当rtf文件保存后,实现对rtf-bk图标和readrtf11图标的擦除,保持操作界面的可用性。 如何真正实现像adobe acrobat中的notes功能,则需要进一步的修改。对于其交互响应,必须采用“热对象”方式,在标注状态下,在显示界面的任意位置双击,则弹出标注窗口,用户可以留下自己的见解,其内容可以包括文字、图像、图形、表格等信息;保存退出后,有标注的地方以小图标的形式表示,双击任意一个小图标,则可进入到标注的编辑状态,对具体的标注内容进行编辑,实现各种修改。至于具体的实现过程也不难,只要掌握了上面标注功能的设计思想,就可以做出与adobe acrobat中的notes功能一样的标注功能,甚至比它还强大。
图1 |
|||||||||||||||||