本申请要求美国临时申请号60/379,749(Attorney Docket003797.00401)和60/379,781(Attorney Docket 003797.87571)的优先权,两个临时申请都是于2002年5月14日提出的,两者的名称都是“用墨水作为接口”,这里引用两者的全部内容包括它们的附录作为参考文献。
示例实施例的详细说明
下面描述捕获、识别、与之接口、编辑或操作、和/或显示电子墨水的一种方法。
一般计算平台
图1是可以用来实施本发明的传统通用数字计算环境的一个例子的功能性方框图。在图1中,计算机100包括处理单元110、系统存储器120以及把包括系统存储器之类的各种系统部件耦合到处理单元110的系统总线130。系统总线130可以是数种总线结构类型中的任何一种,包括存储器总线或存储器控制器、外围总线、以及使用多种总线结构中的任何一种的本地总线。系统存储器120包括只读存储器(ROM)140和随机存取存储器(RAM)150。
在ROM 140中存储基本输入/输出系统160(BIOS),它包含在计算机100中的单元之间帮助传递信息的基本例行程序,诸如在启动期间。计算机100还包括在硬盘(未示出)进行读出和写入硬盘驱动器170;,在可拆卸磁盘190进行读出或写入的磁盘驱动器180;以及在诸如CD ROM或其它光媒体之类的可拆卸光盘192中进行读出和写入的光盘驱动器191。分别通过硬盘驱动器接口192、磁盘驱动器接口193以及光盘驱动器接口194把硬盘驱动器170、磁盘驱动器180和光盘驱动器191连接到系统总线130。驱动器和与它们相关联的计算机可读出媒体提供计算机可读出指令、数据结构、程序模块以及用于个人计算机100的其它数据的非易失性存储。熟悉本技术领域的人员可以理解,在示例操作环境中,也可以使用可以存储计算机可存取数据的其它类型的计算机可读出媒体,诸如盒式磁带、快速存储卡、数字视频盘、Bernoulli数据盒、随机存取存储器(RAM)、只读存储器(ROM)等。
可以把许多程序模块,包括操作系统195、一个或多个应用程序196、其它程序模块197以及程序数据198,存储在硬盘驱动器170、磁盘190、光盘192、ROM 140或RAM 150中。用户可以通过诸如键盘101和指示设备102之类的输入设备,把命令和信息输入计算机100。其它输入设备(未示出)可以包括话筒、摇杆、游戏小键盘、卫星碟形天线、扫描器等。通常通过耦合到系统总线的串行端口接口106把这些和其它输入设备连接到处理单元110,但是可以通过其它接口连接,诸如并行接口、游戏接口或通用串行总线(USB)。再进一步,可以通过合适的接口(未示出)把这些设备直接耦合到系统总线130。还可通过视频适配器108之类的接口,把监视器170或其它类型的显示设备连接到系统总线130。除了监视器之外,个人计算机一般还包括其它外围输出设备(未示出),诸如扬声器和打印机。在一个较佳实施例中,提供笔数字化器165和附带的笔或输入笔166,以便数字化地捕获徒手输入。虽然示出的笔数字化器165和处理单元110之间是直接连接的,实际上,如本领域中众知,可以通过串行端口、并行端口或其它接口和总线把笔数字化器165耦合到处理单元110。此外,虽然示出笔数字化器165是和监视器107分开的,但是最好是使数字化器165的可使用输入区和监视器107的显示区共同延伸。再进一步,可以把数字化器165集成到监视器107中,或可以作为分立的设备相重叠而存在,或附加到监视器107中。
计算机100可以在网络化环境中操作,所述网络化环境使用到一台或多台远程算机(诸如远程计算机109)的逻辑连接。远程计算机109可以是服务器、路由器、网络PC、同等设备或其它公共网络节点,一般包括上面介绍的与计算机100有关的许多单元或全部单元,虽然在图1中只有示出一个存储器存储设备111。在图1中描绘的逻辑连接包括局域网(LAN)112和广域网(WAN)113。这种网络环境在办公室、全企业的计算机网、内部网、互联网中是常见的。
当在局域网网络环境中使用时,通过网络接口或适配器114把计算机100连接到局域网112。当在广域网网络环境中使用时,个人计算机一般包括调制解调器115或用于在广域网113上建立通信的其它手段,诸如互联网。通过串行端口接口106把可以是内接的或外接的调制解调器115连接到系统总线130。在网络化的环境中,可以把与个人计算机100或其部分有关的程序模块,存储在远程存储器存储设备中。
可以理解,所示的网络连接是示例性的,可以使用在计算机之间建立通信链路的其它技术。假定存在诸如TCP/IP,以太网、FTP、HTTP等各种众所周知的协议中的任何一种,并且系统可以在用户—服务器配置中操作以允许用户从基于网的服务器取得网页。可以使用各种传统的网浏览器中的任何一种来显示和操作网页上的数据。
图2示出可以根据本发明而使用的基于输入笔的计算机处理系统(又称为图形输入板PC(个人计算机))201。在图1中的系统的任何或所有特征、子系统以及功能都可以包括在图2的计算机中。图形输入板PC201包括一个大显示表面202,例如,数字化平面显示器,最好是液晶显示器(LCD) 屏幕,在其上显示多个窗口203。可以使用的其它显示技术可以包括,但是不限于,OLED显示器、等离子显示器等。用户可以使用输入笔204的笔尖(这里还把笔尖称为“光标”)在数字化显示区上选择、突出显示和写入。数字化显示板的合适的例子包括电磁笔数字化器,诸如Mutoh和Wacom笔数字化器。还可以使用其它类型的笔数字化器,例如,光数字化器。图形输入板PC 201解译使用输入笔204作出的标记,以便操作数据、输入文本以及执行传统计算机应用程序任务,诸如电子数据表、处理程序等。
可以使输入笔配备按钮或其它特征以扩大它的选择能力。在一个实施例中,可以实施输入笔作为“铅笔”或“钢笔”,其中,一端构成写入部分,另一端构成“擦除”端,当“擦除”端在显示器上移动时,指示出要擦除的显示部分。可以使用诸如鼠标、跟踪球等其它类型的输入设备。此外,在触摸—敏感或接近—敏感的显示器上,用户可以使用自己的手指来选择或指示所显示图象部分。因此,这里所使用的“用户输入设备”具有宽广的定义,并包括许多已知输入设备的变型。
电子墨水和墨水目标的概念
这里所使用的墨水称为电子墨水。电子墨水被设计成一个序列的笔或一组笔划,其中,每一笔划包括一序列的点或一组点。通过所捕获的时间和/或通过在页面上笔划和/或点出现的地方可以使笔划和/或点的序列排序。笔划组可以包括笔划和/或点的序列、和/或未排序的笔划和/或点。点可以使用本技术领域中已知的多种技术来表示,包括笛卡尔坐标(X,Y)、极坐标(r,θ)以及其它技术。另一方面,可以用一个点和下一个点的方向上的矢量来表示笔划。打算使笔划包括与墨水有关的任何点或分段的显示,不考虑点下面的显示和/或点与什么连接。一般在数字化器(诸如显示表面202的数字化器)处开始墨水收集。用户可以把输入笔放在数字化器上,并开始写入或画图。那时,可以产生新墨水包(即,与墨水有关的数据包)。用户还可以在与数字化器足够近的空中移动输入笔以致使数字化器检测到。当发生这种情况时,根据所检测的输入笔在空中的运动,可以产生数据包(这里称为“空中包“)。包不但可以包括位置信息,还可以包括输入笔压力和/或角度信息。
为了存储墨水,可以创建表示输入笔204在显示表面202和/或其它输入上划出的墨水原始笔划的墨水目标。可以从显示表面202上任何地方或只从其上确定部分(诸如特定的窗口)收集墨水的收集笔划。墨水目标实质上是墨水数据的容器。墨水如何存储在墨水目标中的特定格式对于本发明是不重要的。然而,最好把原始划出的笔划存储在墨水目标中。
可以定义墨水目标的两种示例类型。可以实施t墨水(tInk)目标(“t”的意思是“text (文本)”)作为OLE目标,它表示期望形成字母或字的墨水。t墨水(tInk)目标允许通过诸如文本识别器把手写墨水转换成文本。t墨水(tInk)目标是指涉及墨水并具有原文上下文的墨水目标。原文墨水的颜色和/或字体的字号以及原文墨水是否应该下划线、加粗、倾斜和/或等等可以编程设置,并且可以基于围绕t墨水(tInk)目标的文本的属性。换言之,可以把在t墨水(tInk)目标指定插入点处的环境特性施加于t墨水(tInk)目标。在一个实施例中,t墨水(tInk)目标只包括用于提交给文本识别器的一个单字,致使一句句子可以包括多个t墨水(tInk)目标。另一方面,还可以定义s墨水(sInk)目标(“s”的意思是“草图(sketch)”),表示不期望形成字的墨水。s墨水(sInk)目标也可以是OLE目标。因此,可以把s墨水(sInk)目标解译为画图或任何其它非原文上下文。s墨水(sInk)目标对于显示多个字也是有用的。墨水兼容的应用程序(和/或用户)可以对某些墨水目标作出t墨水(tInk)目标的标记,并对其它墨水目标作出s墨水(sInk)目标的标记。为了说明的目的,这里把两种类型的墨水描述为“tInk(t墨水)”和“sInk(s墨水)”。然而可以理解,可以使用其它名称来表示可以采用的各种类型的墨水目标。还有,可以使用另外类型的目标来存储任何要求格式的电子墨水。
可以定义一个目标(这里称为“InkCollector(墨水收集器)”目标)以及用来从墨水输入设备捕获墨水和/或向应用程序提供墨水。在某种意义上,墨水收集器(InkCollector)目标的作用是水龙头,它通过收集作为一划或多划墨水笔划的墨水并把墨水存储在一个或多个相关联的墨水目标中,使墨水“倾注”到一个或多个不同的和/或有区别的墨水目标中。墨水收集器(InkCollector)目标可以把它自己附加到已知的应用程序窗口中。然后,它可以通过使用任何或所有可得到的图形输入设备(可以包括输入笔204和/或鼠标)而提供在该窗口上的实时涂墨。为了使用墨水收集器(InkCollector)目标,开发者可以创建它,分配哪个窗口把墨水收集进来,以及启动目标。在启动墨水收集器(InkCollector)目标之后,可以进行设置,用多种墨水收集模式(在其中收集墨水笔划和/或手势)收集墨水。手势是输入笔204的一种运动或其它动作,解译成不是作为涂抹的墨水,而是解译成为执行某种动作或功能的请求或命令。例如,为了选择墨水的目的,可以执行特定的手势,而另外的手势可以是为了使墨水倾斜的目的。每一时刻当输入笔在数字化器输入上时或与之接近时,墨水收集器(InkCollector)目标会收集笔划和/或手势。
墨水编辑控制(InkEdit Control)
可以定义控制,这里称为“InkEdit(墨水编辑)”控制,它为捕获、识别和/或显示墨水(例如,以文本的形式)提供一种方便的方法。InkEdit(墨水编辑)控制可以进一步支持显示墨水为具有墨水一格式化和/或文本格式化能力的嵌入的目标(例如,作为嵌入的t墨水(tInk)目标,经过编程可通过墨水选择特性存取),诸如加粗、下划线、倾斜、上标、下标、对齐等。这个目标的主要指定应用是允许输入墨水以及显示墨水或从墨水识别的文本。这个控制可以进一步允许对墨水和/或所识别的文本进行编辑和/或格式化。
众知的微软WINDOWS用户接口是编辑控制(即,RichEdit和RichTextBox)。InkEdit(墨水编辑)控制的实施例向开发者提供了这些控制的扩充墨水版本,它们已经是熟悉的和可能已经使用在它们的应用程序中,除了从键盘接收文本的现有能力之外,把各种特征添加到现有的RichEdit控制,以接收来自输入笔、鼠标和/或其它指针的文本。例如,在一个实施例中,InkEdit(墨水编辑)控制提供接收电子墨水手写和识别的能力,并把该墨水转换成文本。InkEdit(墨水编辑)控制可以进一步提供接收手写作为用于以后识别的墨水,致使手写本身是可编辑的能力。
为了使用InkEdit(墨水编辑)控制,开发者需要简单地用具体例子说明InkEdit(墨水编辑)控制。开发者和/或运行时用户可以进一步把一种或多种模式应用于InkEdit(墨水编辑)控制各种特征。例如,一种模式可以指示是否应该插入墨水作为墨水或文本。InkEdit(墨水编辑)控制可以管理许多内部世俗细节,用于建立图形输入上下文、收听数字化器事件、收集笔划、把笔划馈送到识别器和/或把识别的结果(例如,它可以是OLE嵌入目标)馈送到InkEdit(墨水编辑)控制进行显示以及以后的保留。
在一个示例实施例中,可以在ActiveX和Win32中实施InkEdit(墨水编辑)控制,并基于传统的微软Win32 Rich Edit控制。在另一个示例实施例中,可以在微软.NET实施InkEdit(墨水编辑)控制,并基于Win32 InkEdit、RichEdit控制以及微软.NET RichTextBox控制。如所众知,微软RichEdit和Rich TextBox控制允许用户输入、编辑、格式化、打印和存储文本,同时提供各种先进的格式化特征(诸如文本字体、颜色、格式化等)。因此,除了现在可应用于墨水和传统文本的那些特征之外,本发明的InkEdit(墨水编辑)控制可以具有许多由RichEdit和RichTextBox控制提供的特征。墨水可以成为它自己中的以及它自己的第一级公民。在可能对文本进行加粗、下划线、倾斜等的情况中,InkEdit(墨水编辑)控制和它的编程接口可以允许象文本那么方便地操作墨水信息,同时提供手写墨水的浓厚度。
在某些实施例中,设计InkEdit(墨水编辑)控制使之在单行和多行文本输入和编辑的形式情况中能很好地工作。InkEdit(墨水编辑)控制可以以原文手写的形式从一个用户得到墨水输入。可以识别墨水输入,可以把打印的文本插入到位。除了用户正在用墨水写时,用于InkEdit(墨水编辑)的缺省用户接口可以类似于传统Rich TextBox控制的缺省用户接口。InkEdit(墨水编辑)控制可以显示原始的墨水或经识别的文本(或两者)。可以把所显示的墨水定标到InkEdit(墨水编辑)控制的当前输入字体的字号,还可以与其它文本串联式地显示,和/或可以改变它的位置、字号和/或颜色。另一方面,所显示的墨水可以保持它的原始位置、字号和/或颜色。
在一个示例实施例中,InkEdit(墨水编辑)控制的缺省特性是识别墨水并在短的识别时间过去之后,把墨水转换成文本。这个识别时间可以是所要求的任何时间量,诸如约2000毫秒,或在约100毫秒到约5000毫秒的范围内,或在约200毫秒到约2000毫秒的范围内。在把识别时间设置成零时,可以禁止自动识别。因为InkEdit(墨水编辑)控制可以是超级的RichEdit,所以它又可能在InkEdit(墨水编辑)控制中嵌入和显示墨水。可以把每个墨水字插入控制作为墨水目标(例如,t墨水(tInk)目标)。墨水目标可以包括墨水以及与墨水相关联的一个或多个特性。
当施加插入时,可以使墨水定标为当前字体的字号和其它环境特性,诸如倾斜或加粗。如果用户选择编辑墨水目标的文本,则用户可以首先把墨水转换成文本。
参考图3,InkEdit(墨水编辑)控制可以出现在与图形用户接口301相关联的显示器上。图形用户接口301可以包括一个或多个显示空间302,用于接收汲取的墨水数据和/或用于显示墨水和/或文本。图形用户接口可以接收数据,诸如在显示空间302中通过输入笔204汲取的墨水数据,并且InkEdit(墨水编辑)可以把数据解译为墨水。InkEdit(墨水编辑)控制可以进一步使墨水与通过应用程序开发者、用户、和/或自动地选择的诸如加粗、下划线、倾斜上标、下标、对准、颜色、字号和/或等等之类的一个或多个特性相关联。如在图3和4中所示,可以选择某些墨水和提供一种特性,例如,选择手写墨水词“conceived in liberty”,然后使之倾斜,并选择手写墨水词“created equal”(如图3中的虚线框所示),然后增加它的字号。InkEdit(墨水编辑)控制可以进一步使墨水和与它相关联的特性存储而作为墨水目标。因此,例如,可以把在显示空间302中的墨水存储在一个或多个墨水目标中,而可以把词“conceived in liberty”存储在墨水目标中并与倾斜特性相关联。InkEdit(墨水编辑)控制可以根据接收到的墨水数据使墨水得以显示。在一个实施例中,例如,在接收到墨水的显示空间302中的相同位置处的显示空间302中显示墨水。
墨水可以在显示空间302中保持显示(即,余晖),或可以识别墨水和/或把它转换成文本。这种识别和转换可以立即发生,或在识别时间过去之后和/或根据命令(例如,来自用户或来自应用程序。在墨水被识别和/或根据时间过去之后条件对墨水转换情况下,这个识别时间可以是所要求的任何时间量,诸如约2000毫秒,或在约100毫秒到约5000毫秒的范围内,或在约200毫秒到约2000毫秒的范围内。可以根据提起输入笔204使之离开显示表面202的时间和/或根据笔划的结束来起动用于对识别时间进行计时的定时器,并且在时间条件发生之前可以根据输入笔204回到显示表面202而取消计时。可以使定时器起动的其它事件包括输入笔204停止在显示表面202上的运动,来自输入笔204的手势,诸如按钮和/或等等的其它输入。根据一个或多个模式开关的设置,决定可以或不可以识别和/或显示墨水作为打印的文本。可以使一个或多个模式开关与一个或多个显示单元(例如,显示单元303)相关联或可以使用户不知道(即,不显示在显示器上)。当开关是第一种设置时,将不作为文本而识别或显示墨水。在某些实施例中,根据特定的命令仍可以识别和/或显示墨水作为文本。当开关是第二种设置时,可以识别和/或显示墨水作为文本(如这里所述,立即、在时间过去之后、或根据命令)。当显示墨水作为文本时,可以显示从识别产生的文本来代替显示空间302中的墨水,致使被替代的墨水不再显示在显示空间302中。图5示出已经被识别和转换成文本的显示空间302中的一部分墨水,而图6示出已经被识别和转换成文本的显示空间302中的所有墨水。在这些示意图中,手写体不是原始手写墨水,而印刷字体表示经识别的文本。
可以通过单个识别器或诸如识别器的集合之类的多个识别器识别墨水。识别器可以包括一个或多个手势识别器和/或文本识别器。可以进一步使待识别墨水的选择与特定识别上下文相关联,所述特定识别上下文可以包括连同一个或多个工作识别特性的所谓的“阶乘识别符(factoid)”特性。可以认为阶乘识别符特性是提供给识别上下文的一组“线索”,有助于使墨水上下文的识别更为正确。可以定义表示执行墨水识别能力、获取识别结果和/或获取另外识别结果的识别器上下文目标。识别器上下文目标可以启动安装在系统中的各种识别器执行墨水识别而适当地处理输入。可以执行包括后台识别和前台识别的至少两类识别。在系统的后台处理中发生后台识别,并可能由于其它系统事件(由用户创建或其它情况)而停止。相反,前台识别一般由用户启动,并且直到完成识别才停止。识别器上下文目标可以接收待识别的墨水笔划,阶乘识别符特性可以定义输入墨水和所要求的识别输出上的限制和/或其它参数。例如,可能设置的限制包括在识别期间要使用的语言、字典和/或文法。当联系一种形式使用InkEdit(墨水编辑)控制时,对于该形式中的每个数据输入字段可以设置不同的识别器上下文和/或阶乘识别符。各种数据输入字段对于某些信息组可能是特定的,诸如具有数字、加号、虚线和括号的电话号码字段;只具有数字和虚线的邮政编码字段;只具有大写字母的州的缩写;通用资源定位器(URL);以及等等。
具有不同的识别器上下文和/或阶乘识别符的一个潜在的优点在于:在某些实施例中,可以调整发生识别的时间帧或什么触发识别。例如,对于在一种形式中的名称或说明字段,有可能要求识别发生于每个字的结束处。然而,当使用州、街道/公寓号码或邮政编码字段(例如)时,有可能要求识别发生于写入每个字符之后。在某些情况中,可以使用一个字符到一个字符的识别,以提供比通过同时识别一个字符组可以得到的识别正确度更高的识别正确度。
InkEdit(墨水编辑)控制可以进一步提供手势支持,并可以根据手势产生事件。参考图7,可以支持各种手势,诸如所示的示例手势701-704。例如,手势701可以表示托架返回,手势702可以表示跳格命令,手势703可以表示空格字符,以及手势704可以表示退格命令。可能有许多其它手势。
InkEdit(墨水编辑)控制可以进一步提供校正用户接口,该接口允许用户按需要观看另外的识别结果,使用屏幕上键盘和/或使用字符、字母和/或块文本识别器。还有,InkEdit(墨水编辑)控制可以允许使用相同的存储和装载机构象传统Windows Form Rich Textbox控制那样来保持和装载它的数据。
InkEdit API(墨水编辑应用程序接口)
InkEdit(墨水编辑)控制通过它的应用程序接口(API)向用户揭示许多功能。根据主机应用程序,可以提供InkEdit API(墨水编辑应用程序接口)的各种风味。参考图8,示例系统可以包括下列一个或多个:ActiveX主机应用程序801、Win32主机应用程序802、和/或通用语言运行时(CLR)主机应用程序803。此外,可以定义InkEdit ActiveX控制804,并且可以与ActiveX主机应用程序801对接。可以进一步定义InkEdit Win32控制805,并可以与Win32主机应用程序802对接。可以定义InkEdit WinForms控制806,并可以与CLR主机应用程序803对接。最后,可以定义RichEdit 4.5 Win32控制807,它与InkEdit(墨水编辑)控制804、805、806的各种风味中的任何一种或所有的相对接。InkEdit Win32控制805可以是其它两种控制(ActiveX控制804和WinForms控制806)的基础。在一个实施例中,可以在Win32控制805中执行关键功能,诸如墨水的收集、具有识别器的迭代和/或进行RichEditWin32控制807的子分类。ActiveX InkEdit控制804可以使用通过Win32InkEdit控制805定义的C++分类,并可以基于该功能来创建ActiveX支持。可以从Winforms Rich TextBox 808得到Winforms InkEdit控制806,并可以用这里讨论的加墨水功能使它扩展。例如,首先通过在RichTextBox 808提供的现有API单元的顶层上装载代替RichEdit控制的Win32 InkEdit控制和按需要添加新方法、特性和/或事件,可以扩展Winforms InkEdit控制806的功能。注意图8描绘在各种主机环境中控制之间关系的示例组,但绝不是把控制之间的箭头作为限制。
现在参考图9讨论InkEdit(墨水编辑)控制的API(应用程序接口)。在图9中,通过一个方框来表示InkEdit(墨水编辑)控制901,并示出API的各种单元(或功能上分组的单元),标有射出和/或进入表示InkEdit(墨水编辑)控制901的方框的箭头940-960。一般,进入InkEdit(墨水编辑)控制901方框的箭头是指大部分修改InkEdit(墨水编辑)控制901(例如,通过改变它的特性中之一)和/或把信息提供给InkEdit(墨水编辑)控制901的其它单元的API单元(或功能上分组的单元)。从InkEdit(墨水编辑)控制901方框射出的箭头是指大部分表示标志或某些其它信息(通过InkEdit(墨水编辑)控制901提供给它的环境)的API单元(或功能上分组的单元)。然而,箭头的方向是示意性的,并不是作为限制,所以并不阻止用进入InkEdit(墨水编辑)控制901的箭头来表示InkEdit(墨水编辑)控制901把信息提供给它的环境。同样,并不阻止从InkEdit(墨水编辑)控制901射出的箭头修改或提供到InkEdit(墨水编辑)控制901的信息。图9进一步示出InkEdit(墨水编辑)控制901的多个特性902-921。可以按InkEdit型控制的任何风味(包括但是不限于,这里讨论的Win32、ActiveX和.NET风味)的任何组合或子组合来利用下面讨论的API单元。
在示例实施例中的InkEdit API(墨水编辑应用程序接口)具有按任何组合或子组合的下列细目和结构(未示出)中的某一些或全部。例如,外形细目定义一个或多个值,该值规定当显示时InkEdit(墨水编辑)控制901的外形是平的还是3-维的。边界格式细目定义一个或多个值,该值规定InkEdit(墨水编辑)控制901是否具有边界。墨水—模式细目定义一个或多个值,该值规定用于汲取墨水的收集模式设置——是否禁止墨水收集,是否只收集墨水,或是否收集墨水和手势两者。插入模式细目定义一个或多个值,该值规定墨水是如何插入到InkEdit(墨水编辑)控制901中的,是作为墨水还是作为经识别的文本。InkEdit状态细目定义一个或多个值,该值规定InkEdit(墨水编辑)控制901是否空闲、收集墨水或识别墨水。装载/存储细目定义一个或多个值,该值规定是否装载文件和/或作为Rich Text Format(RTF)文件、文本文件或其它格式的文件而存储。鼠标—按钮细目定义一个或多个值,该值规定按下或正在按下哪个鼠标按钮。注意,除非另行规定,这里对于鼠标或鼠标按钮的所有参考都同样适用于输入笔或输入笔按钮。滚动条细目定义一个或多个值,该值规定InkEdit(墨水编辑)控制是否具有水平和/或垂直滚动条。对准细目定义一个或多个值,该值规定显示的段落是否对准InkEdit(墨水编辑)控制左或右页边线,或在左和右页边线之间。笔划—信息结构包括有关特定笔划的信息,诸如使用哪个光标来创建笔划以及把笔划存储在哪里(例如,作为特定笔划目标)。手势—信息结构包括有关特定手势的信息,诸如使用哪个光标来创建手势、构成手势的笔划,和/或把手势存储在哪里(例如,作为特定手势目标)。可以在InkEdit(墨水编辑)控制的Win32风味中使用特别成功的笔划—信息和手势—信息结构。识别—结果结构包括有关文本识别结构的信息,并且根据已准备的识别结果而发送。例如,通过分立的通知消息,可以提供有关这些本文讨论的结构的某一些或全部使用在哪里的通知。
在示例实施例中的InkEdit API还具有按任何组合或子组合的、可以设置的以及可以返回它们表示的信息的一个或多个下列特性。例如,外形特性902表示所显示的InkEdit(墨水编辑)控制901是平的还是3-维的。后台—颜色特性903表示InkEdit(墨水编辑)控制901的后台颜色。边界格式特性904表示InkEdit(墨水编辑)控制901是否具有边界。创建—参数特性905表示当创建InkEdit(墨水编辑)控制901时创建参数。光标特性906表示当鼠标指针在InkEdit(墨水编辑)控制901上时所显示的光标。画图—属性特性907表示当画图和在InkEdit(墨水编辑)控制901中显示墨水(尚未被识别为文本的墨水)时使用的缺省画图属性或当画墨水时施加到墨水的画图属性。滚动条禁止特性908表示是否启动或禁止InkEdit(墨水编辑)控制901中的滚动条。拖拉—图标特性909表示待显示作为拖拉—和—丢下操作中指针的图标。阶乘识别符910特性表示阶乘识别符(这里进一步讨论),识别器用它来限制它对于识别结果的搜索。各种字体和文本特性911表示InkEdit(墨水编辑)控制901所显示文本的字体以及当前选择文本的或在插入点处的字体的名称和字号。其它字体和文本特性911表示当前选择的文本(或在插入点处)是否为加粗、倾斜或下划线。再其它字体和文本特性911表示当前选择的文本(或在插入点处)是否出现在基线上、作为上标、或作为下标,它们的对准,以及当前选择的文本或在插入点处的颜色。各种墨水—模式特性912表示当在控制上画图时如何收集墨水以及是否禁止收集墨水,是否只收集墨水,或是否收集墨水和手势两者。控制—锁定特性913表示是否可以编辑InkEdit(墨水编辑)控制901的内容。各种鼠标特性914表示要显示的当前定制鼠标图标以及当鼠标指针在InkEdit(墨水编辑)控制901的图形描绘上时所显示的鼠标指针类型。多线特性915表示InkEdit(墨水编辑)控制901是否为多线控制。各种识别器特性916表示使用哪个识别器来进行识别,以及在已经结束墨水笔划之后开始文本识别的时间量。滚动条特性917表示在InkEdit(墨水编辑)控制901中显示的滚动条的类型。墨水目标特性918表示在当前选择的文本中的墨水目标。设置这个墨水—目标特性可能导致从输入的墨水目标清单识别的识别结果替代当前的选择。各种选择—文本特性919表示在InkEdit(墨水编辑)控制901中的当前选择的文本、所选择的字符数、所选择的经Rich Text Format(RTF)格式化的文本以及所选择文本的开始点。各种受控制文本特性920表示在InkEdit(墨水编辑)控制901的文本方框中显示的当前文本以及在包括所有RTF格式化代码的InkEdit(墨水编辑)控制901中的文本。状态特性921表示InkEdit(墨水编辑)控制901是否空闲、收集墨水或识别墨水。
在示例实施例中的InkEdit API还具有按任何组合或子组合的多个相关联的消息、事件以及方法。由于InkEdit(墨水编辑)控制是超级的RichEdit控制,所以直接传递每个RichEdit消息(在大多数情况中),具有如RichEdit中的相同效果。这也应用于事件通知消息,它把已经发生特定事件通知InkEdit(墨水编辑)控制的父亲窗口。
例如,根据光标尖端(例如,输入笔204的尖端)物理地接触数字化表面(例如,表面202)而发送光标—向下消息940。根据正完成的笔划发送笔划—完成消息941,并发生笔划—完成事件。根据笔划—完成事件的发生而发生笔划—完成方法。根据正完成的手势发送手势—完成消息942,这可以通过手势—完成事件来指示。
InkEdit API还可以具有与识别有关的事件、方法和消息943。根据已经发生的识别发送这种与识别有关的消息,或得到或设置所使用的识别器。其它与识别有关的消息,在识别时间过去将导致发生识别之前,具体地强迫进行识别。与识别有关的事件,根据待识别的应用—特定的手势以及根据一般的识别而发生。与识别有关的方法,根据正发生的识别事件或规定应识别笔划的收集以及要返回该识别结果而发生。
InkEdit API可以进一步具有根据经点击InkEdit(墨水编辑)控制901而发生的事件944,根据按下或放开一个键而发生的事件945,根据在InkEdit(墨水编辑)控制901上的鼠标指针和/或输入笔,以及按下、放开、或双击而发生的事件946以及根据在InkEdit(墨水编辑)控制901上移动的鼠标指针而发生的事件947。
InkEdit API可以进一步具有消息948,它用于根据在墨水编辑状态细目中定义的值而获取InkEdit(墨水编辑)控制901的状态;方法949,它把特定类型的文件装载到InkEdit(墨水编辑)控制901中或把InkEdit(墨水编辑)控制901的内容存储到特定类型的文件中;以及用于处理Windows消息的方法950。
InkEdit API可以进一步具有消息951,它根据在墨水模式细目中定义的值而获取或设置InkEdit(墨水编辑)控制901的加墨水模式;以及消息952,它根据在墨水模式细目中定义的值而获取或设置InkEdit(墨水编辑)控制901的墨水插入模。
InkEdit API可以进一步具有消息953,它获取当前画图属性或设置要在InkEdit(墨水编辑)控制901中使用的将来画图属性;以及消息954,它获取或设置InkEdit(墨水编辑)控制901的识别时间。例如,识别时间可以按毫秒来测量。
InkEdit API可以进一步具有与手势状态有关的消息和方法955。定义与手势状态有关的消息获取或设置用于InkEdit(墨水编辑)控制901的手势状态。与手势状态有关的方法使用手势状态的状态来限制可能被InkEdit(墨水编辑)控制901识别的手势的设置。
InkEdit API可以进一步具有消息956,它获取或设置InkEdit(墨水编辑)控制901待使用的识别器;消息957,它获取或设置用于识别的阶乘识别符;消息958,它获取或设置当前选择的墨水;消息959,它获取或设置所显示的鼠标图标;以及消息960,它获取或设置要显示的鼠标指针。
InkEdit API可以进一步具有构造者961,用于创建新InkEdit(墨水编辑)控制;以及当为InkEdit(墨水编辑)控制901创建句柄时发生的方法962。在InkEdit(墨水编辑)控制的.NET风味中,可以认为该方法是构造者。InkEdit API可以进一步具有根据在控制变化中的文本选择而发生的选择改变的事件。
这里所描述的实施本发明各方面的示例系统和方法只是作为例子而示出,可以理解,本发明当然不限于这些实施例。特别是在上述学说的指导下,熟悉本技术领域的人员可以进行各种修改。例如,可以单独利用上述实施例中的每个单元,或与其它实施例中的的单元组合。虽然已经使用所附的权利要求书来定义本发明,但是示出这些权利要求在于打算使本发明按任何组合或子组合来包括这里所描述的单元和步骤。因此,本发明可由任何数目的变化组合来定义,它按各种组合或子组合而结合包括说明书、权利要求书和附图的规格中的一个或多个单元。对于有关技术领域中的人员是显而易见的,在本规格的指导下,可以利用本发明的各方面的独立的或与这里定义的一个或多个单元或步骤组合的另外组合作为本发明的修改或变型或作为本发明的一部分。打算使这里包括的本发明的书面说明包含所有这种修改和变型。还有,应该认识到,虽然这里提供目标和其它API单元的各种名称,但是这种名称只是作为示意,可以使用任何名称而不偏离本发明的范围。