使用汇合点的主题识觉管理的制作方法

文档序号:6559241阅读:287来源:国知局
专利名称:使用汇合点的主题识觉管理的制作方法
技术领域
本发明涉及计算机系统,特别是涉及当提供系统部件时使用汇合点(fusion)的主题识觉管理(theme aware management)。
在商业和家庭环境中的计算机用户已经变成习惯于使用具有图形操作系统的计算机。例如,许多用户操作其上装有微软公司“视窗”操作系统的计算机。这些图形操作系统的某些部件公知为“控件”。例如,一个控件可以是“OK”按钮,其通常是其中写有“OK”的长方形按钮。通过移动光标在按钮上和单击鼠标,将开始一个与该控件相关的已知操作。还有许多其它的控件,例如包括滚动条,对话框和滑动条(slider)。除了控件,随着在计算机显示上的需要,图形操作系统还画出或提供其它的图形部件,例如图文框,最小化框和关闭框。
视窗中有两种普通的控件标准控件和用户控件。标准控件是由操作系统提供的。创建、画出和拖动标准控件的代码是包含在公共控件库(DLL)中,其是视窗的一部分。用户控件是所有其它的控件。用户控件可以由操作系统的制造商或者第三方创建。用于用户控件的代码是包含在对应的单独库(DLL)或者在应用程序中。
当前,当诸如控件的图形用户界面部件是通过应用程序使用时,该应用程序请求创建该部件的实例(instance)。随之,操作系统将类消息传输到该部件,指令该部件提供自身。该应用程序在路由从主视窗到目标控件的消息中起作用,但是该控件代码进行画图。该应用程序使用应用程序编码接口(API)来创建和与该控件交互。API用作为由其它程序使用的软件接口,类似于键板用作为计算器的界面。API是高水平编程的基本概念。在高水平编程中,程序常常不是由其本身来执行任务。而是程序要求一些其它的程序来执行这些任务。例如,程序频繁地将各种任务委托到底层的操作系统。继续上述的例子,应用程序将控件的提供委托给该控件的代码。
在现有技术的环境中,当类给消息是通过控件提供其自己被接收时,该控件将使用其自己的画图软件代码来画出自己。在该现有技术的环境中,该控件知道被认为像什么,被认为如何做,以及能够在计算机的用户界面上实现这种显示。因此,应用程序可以将可视供给(rendering)的所有方面委托给这些控件,避免包含软件代码的需要,该软件代码支持在其主机应用程序内的该控件的可视供给。
通过利用由操作系统定义和提供的标准控件,所有的控件将具有相同的外表,与应用程序无关。图形操作系统的用户能够仅仅改变控件的有限数目的特征。在“视窗”操作系统中,用户能够改变在监视器上显示各种控件和部件所使用的颜色主题。用户还能够选择将由控件和部件使用的一小组的字体(font)。因此,可以改变控件和部件的颜色、字体和有限量的尺寸。但是,控件和部件的基本的外形是通过在控件库中的供给软件代码决定的,该控件库包含了特定的图形部件或控件。在现有技术环境中,为改变控件或者图形部件的外表,一定要改变供给软件代码。例如,如果希望改变“OK”按钮的外表,一定要改变在包含该按钮控件的操作系统DLL文件中的供给软件代码,并且该DLL文件在二进制级上重构。如果是希望提供作为椭圆的而不是作为传统的长方形的按钮,则软件代码将不得不因此而改变。如果不是不可能,则这种方法将使计算机用户和软件制造商容易改变控件和图形部件之外表变得困难。
为了增强计算机的用户经验,通过改变各种图形部件的总的可见外表或“主题”,用户希望具有改变图形显示的综合“看和感觉”的能力。换言之,如果用户不仅能够改变在监视器上出现的图形部件的颜色和字形,希望还能够改变这些图形部件的外表。例如,希望能够改变和控制控件部件的配置,以及定义控件或其部件的形状。还希望控制如何画出控件或其零件的所有方面。由于在现有技术环境的DLL文件中存在的控件和图形部件是用它们自己提供软件代码“硬编码”,因此改变所有这些控件和部件的外表是困难和麻烦的。做这需要求重新编码每一个的控件以获得希望的外表。如果要求多个可见格式,则它们的每一个将不得不预先定义且每个都被“硬编码”到每个控件中。而且,如果要使用不同的提供技术,则还一定要记录这些控件。例如,如果使用位图来提供这些控件和希望使用矢量的提供器,则一定要改变每个控件。
某些现有技术方法企图寻址上述状态。但是,这些方案并不能使得整个系统的所有控件和图形部件被改变。相反,现有技术方法仅仅寻址被显示部件族中的有限部分。这使得可改变一些控件和图形部件的外表,但剩余的却不能改变。这种方法使得外表不能够按希望那样被协调的改变。
现有技术方法是被这种技术进一步限制的,它们用来实现图形用户界面可见单元之外表特性的控制。现有技术外表改变装置是通过截取被传输到该控件的类提供信号和使用低级操作系统图形API来操作的,用该控件的提供代码来代替它们自己的提供代码。但是,图形用户界面中仅仅一部分可见元件是可截取的。由于现有技术方法仅仅依赖于操作系统信号的中断,不仅它们自己是不能够控制根据该协议不起作用的可见单元的外表,他们也不能够给可见单元的作者提供标准的工具来修改提供代码以适应外部控件。
类似地,用于提供非客户视窗部件例如窗口框架和最小化框的现有技术方法具有缺点。现有技术方法要求用户购买分离的软件包以便支持这些部件的主题构成。现有技术方法是不完全的,因为它们仅仅允许固定子族的控件是可构成主题的。而且,他们实现构成仅仅依赖于标准视窗消息的中断,不用任何控件或者主题画图的USER32知识。
在传统操作系统中,非客户视窗部件已经被视窗核心模式中的缺省视窗程序所提供,其响应复合族视窗消息和API调用。将所有主题变量放进单个缺省视窗过程中将是不实际的。将主题特性加到缺省视窗过程将要求更复杂的代码、代码的完全重新编译和艰苦的测试以确定代码是否适当地改进了功能并且不中断任何现行的应用程序。
而且,在提供过程中,中断由操作系统传输给控件的所有相关信号是不可能的。另外,无论在传统操作系统或者在分离软件包的主题构成方法中,都不可能再现由诸如激活顺序的控件实现的复杂可见行为。因此,现有技术方法,其包括操作系统方法和由分离软件包实现的方法是容易产生功能性不兼容,视觉缺陷和性能问题。
而且,现有技术是受这种方式限制的,其中软件开发者能够在可见的外表上设计满足通用性的控件。使用传统的“所有者画”和“用户画”方法,应用程序开发者已经能够用仅仅有限组项提供控件。现有技术方法不含有这种结构,其允许控件的作者有能设计是“主题识觉”的控件的灵活性。因此,控件的作者不被允许具有自由度,该自由度在创建能够被容易和清楚可见地改变之控件的创建控件中是需要的。
而且,提供主题识觉控件的系统应当含有传统应用程序和新的应用程序,它们能够与主题识觉控件一起工作。已经开发和测试了与不是主题识觉的传统控件一起工作的传统应用程序。已经开发和测试了与主题识觉控件一起工作的新的应用程序。主题识觉结构一定允许两种类型的应用程序工作在相同的计算机系统上。
例如,如果提供了主题的系统要求所有的应用程序使用主题构成控件,即使它们没有用新控件测试,在应用程序开发者期望时,应用程序控件将不被提供。因此,这些控件可以出现为与应用程序的外观不一致,或者相对于该应用程序为错误的地点,或者可以一起停止作用。应用程序的写作者应当能够控制它们的应用程序是否使用新构成主题或者继续使用传统的控件。
另一个问题是新应用程序不能够在不是主题识觉的传统系统上工作。新应用程序将被开发和测试用于提供了主题的新系统。当这些新应用程序被装载到不是主题识觉的旧系统上时,不仅应用程序的控件将不被主题化,而且在许多情况下,应用程序将是失败的。因此,对于主题识觉应用程序工作在非主题识觉系统上是没有办法的。
根据本发明,上述问题是这样解决的创建控件的主题识觉版本和应用称为“汇合点(fusion)”的软件部件选择技术以选择用于主题能力(capable)应用程序的主题识觉版本。本发明包括中继功能,其将视窗提供和尺寸请求从缺省视窗提供功能转移到主题识觉视窗提供功能。
在已经确定应用程序是否支持主题构成能力之后,本发明的一个方面是用于将两组控件函数的一个连接到应用程序存储映射中的系统和方法。该系统确定应用程序是否具有表明使用控件函数之主题构成组的清单文件。控件主题构成组能够与主题管理者的函数交互,以用主题方式提供图形部件。
该系统和方法还包括将提供消息截取到视窗的截取分支。截取分支从缺省视窗提供例行程序(routine)中选定提供消息,并将该消息送到以主题方式提供视窗图形部件的主题管理者函数中。应用程序接口调用也被路由选定到主题管理者,以便响应该应用程序接口,视窗非客户图形部件能够使用主题被测量或者被提供。通过使用一组与以主题方式提供控件的主题管理者的函数相交互的主题控件函数,该系统和方法还包括提供用户控件和外壳公用控件的方法。
本发明可以以计算机处理、计算系统或者以诸如计算机编程产品或者计算机可读媒体的制造商产品来实现。计算机编程产品可以是由计算机系统可读的计算机存储媒体以及编码用于执行计算机处理的计算机指令程序。计算机编程产品还可以是由计算系统可读的载体上的传播信号以及编码用于执行计算机处理的计算机指令程序。
本发明减小了应用程序兼容性危险和比原先的方法快。除了将控件与提供技术隔开之外,本发明还提供了将控件与单个主题隔开。本发明允许用户从各种不同主题中选取用户喜欢的主题,并且增强了用户的计算经验。
本发明的其它优点和新特征将在下面的说明中提出,并且对审查该领域的本领域技术人员其将在一定程度上变得清楚,或者通过从本发明的实际中得知。
图1是表示用在本发明中的结构的示意图;图2表示用于实现本发明的合适的计算系统环境;图3是表示具有不同主题外表的图形部件的例子;图4是表示汇合点处理的操作流程图;图5是表示主题构成视窗部件之示例性处理的操作流程图;图6是表示主题文件之结构的示意图;图7是表示通过请求图形部件之应用程序的本发明应用的流程图。
在图1所示的本发明的一个实施例中,操作系统134是具有图形显示控件和与此相关的部件的图形操作系统。这些控件包括但是不局限于诸如滚动条、按钮和滑动条。其它的控件是在本发明的范围内,其对本领域技术人员来说是已知的。其它的图形显示部件也是在本发明的范围内。这些部件包括但决不局限于显示器中视窗的非客户部分,例如为在用户界面上应用程序显示周围的窗框,最小化框和关闭框。
图1中,示出了用在本发明实施例中的基本结构。如果由于对上述相关专利申请的熟悉导致读者已经熟悉了主题构成系统的操作,则建议读者前进到图4和图5的说明以理解本发明的与用于主题构成系统部件之主题识觉结构相关的实施例。该结构用例子应用程序138和139来说明,其是开放的和在计算机110上运行。由于诸如APPI138的应用程序正在运行,其常常要求在计算机110的监视器191上要被提供或者被显示的控件或者图形部件。
图1中,库208,210和212通过汇合点模块214被连接到应用程序138和139上。汇合点模块214在不需要改变应用程序本身的情况下使应用程序中控件的主题能够请求控件的可主题的版本。通过使用显示清单215,汇合点模块214使应用程序138和139在运行时间能够装载DLL208,210或212的专用版本。汇合点显示清单215规定其中应用程序要运行的环境,其允许多个DLL版本存在在一个机器上。因此,汇合点显示清单214将映射对部件的请求,使得其作为DLL212中的可主题单元提供,代替来自DLL208的非可主题单元。在不改变应用程序的代码的情况下,这允许现存应用程序将可被主题化。汇合点显示清单214还允许新的可主题控件被放置在来自现有DLL的不同的DLL中,其简化了实现方案和将兼容危险最小化。
图2表示了合适的计算系统环境100的例子,本发明可以在其上实现。计算系统环境100仅仅是合适的计算系统环境的一个例子,并不打算用于对使用范围或者本发明功能的任何限制。计算环境100既非应当被解释为具有任何依赖性又非被解释为与在示例性操作环境100中说明的部件的任何一个或者组合相关的要求。
本发明用许多其它通用目的或者专用目的之计算系统环境或者结构是可操作的。可以适用于本发明的公知计算系统,环境,和/或结构的例子包括但不局限于个人计算机,服务器计算机,手持式或者膝上型装置,多处理器系统,基于微处理器系统,顶置盒,可编程用户电子装置,网络PC,小型计算机,大型计算机,包括任何上述系统或者装置等的分布式计算环境。
本发明可以在通过计算机执行的诸如程序模块的计算机可执行指令的普通文本来说明。通常,程序模块包括例行程序,程序,对象,部件,数据结构等,它们完成特定的任务或者实现特定的抽象数据类型。本发明还实用于分布式计算环境中,在这里任务是通过远程处理装置完成的,这些远程处理装置通过通信网络被连接。在分布式计算环境中,程序模块可以定位在包含有存储器存储器件的本地和远程计算机存储媒体中。
参考图2,用于实现本发明的示例性系统包括呈计算机110形式的通用目的计算装置。计算机110的部件可以包括但不局限于处理单元120,系统存储器130,以及将包括系统存储器的各种系统部件耦合到处理单元120的系统总线121。系统总线121可以是任何几种类型的总线结构,其包括存储器总线,或者存储器控制器,外围总线,以及使用各种总线结构之任何一个的局部总线。通过例子但不限制,这种结构包括工业标准结构(ISA)总线,微通道结构(MCA)总线,增强ISA(EISA)总线,视频电子装置标准协会(VESA)局部总线,和也公知为Mezzanine总线的外围部件互连(PCI)总线。
计算机110典型地包括各种计算机可读媒体。计算机可读媒体能够是任何可获得的媒体,其能够通过计算机110访问,包括易失性和非易失性媒体,可移动和非可移动媒体。通过例子但不限制,计算机可读媒体可以包括计算机存储媒体和通信媒体。计算机存储媒体包括易失性和非易失性媒体,可移动和非可移动媒体,它们通过用于信息存储的任何方法或者技术实现,该信息包括例如计算机可读指令,数据结构,程序模块或者其它数据。计算机存储媒体包括但不局限于RAM,ROM,EEPROM,闪烁存储器或者其它存储技术,CD-ROM,数字通用盘(DVD)或者其它光盘存储,磁带盒,磁带,磁盘存储或其它磁存储器件,或者能够用来存储期望的信息和能够用计算机110访问的任何其它媒体。通信媒体典型地包括计算机可读指令,数据结构,程序模块或者在诸如载波或其它传输机理的调制数据信号中的其它数据,以及包括任何信息传递媒体。术语“调制数据信号”意思是具有一个或多个特征组的或者以这种方式改变以编码信号中的信息的信号。通过例子但不是限制,通信媒体包括诸如有线网络或者直达线连接的有线媒体,以及诸如声音,RF,红外线和其它无线媒体的无线媒体。上述的任何组合也应当包括在计算机可读媒体的范围内。
系统存储器130包括计算机存储媒体,其是诸如只读存储器(ROM)131和随机存取存储器(RAM)132的易失性和/或非易失性存储器形式。基本输入/输出系统133(BIOS),其包含例如在启动时帮助在计算机110内的单元之间传输信息的基本例行程序,典型地被存储在ROM131中。RAM132一般包含数据和/或程序模块,其可以由处理单元120立即访问和/或即时被处理单元120操作。通过例子但不是限制性的,图2表示了操作系统134,应用程序138和139,其它程序模块136和程序数据137。
计算机110也可以包括其它的可移动/非可移动的,易失性/非易失性计算机存储媒体。仅仅作为例子,图2表示了硬盘驱动140,其从可移动的非易失性磁性媒体中读或写;磁盘驱动151,其从可移动的非易失性磁盘152中读或写;和光盘驱动155,其从诸如CD ROM或其它光学媒体的可移动的非易失性光盘156中读或写。能够被用于示例性操作环境中的其它可移动/非可移动的易失性/非易失性计算机存储媒体包括但不限制于磁带盒,快速存储卡,数字通用盘,数字视频带,固态RAM,固态ROM,等。硬盘驱动141通过诸如接口140的非可移动存储接口一般被连接到系统总线121,磁盘驱动151和光盘驱动155通过诸如接口150的可移动存储接口一般被连接到系统总线121。
上面所述和图2所示的驱动及它们相关的计算机存储媒体提供存储计算机可读指令,数据结构,程序模块和用于计算机110的其它数据。例如图2中,硬盘驱动141被表示为存储操作系统144,应用程序145,其它程序模块146和程序数据147。注意,这些部件不是与操作系统134,应用程序138和139,其它程序模块136和程序数据137相同或是不同。操作系统144,应用程序145,其它程序模块146和程序数据147这里以不同的数字给出,以说明至少它们是不同的拷贝。用户可以将命令和信息通过诸如键盘162和通常称为鼠标、跟踪球或触摸板的点击装置161的输入装置输入到计算机110中。其它的输入装置(未示出)可以包括话筒,遥控杆,游戏盘,卫星天线,扫描器等。这些输入装置通过被耦合到系统总线的用户输入接口160常常被连接到处理单元120,但也可以通过诸如并行端口,游戏端口或通用串行总线(USB)的其他接口和总线结构来连接。经过诸如视频接口190的接口,监视器191或其它类型的显示装置也可以被连接到系统总线121。除监视器之外,计算机还可以包括其它的外设输出装置,例如扬声器197和打印机196,它们可以通过输出外设接口195被连接。
计算机110可以工作在使用逻辑连接到一个或多个远程计算机例如远程计算机180的网络化环境中。远程计算机180可以是个人计算机,服务器,路由器,网络PC,同等实体或其它公共网络节点,并且一般包括相对于计算机110的许多或所有上述的单元,尽管仅仅存储器存储装置181已经表示在图2中。图2描述的逻辑连接包括局域网络(LAN)171和广域网络(WAN)173,但是也可以包括其它网络。这种网络化环境在办公室、企业计算机网络、内部网络和因特网中是平常的。
当被用在LAN网络化环境中时,计算机110通过网络接口或者适配器170被连接到LAN171。当被用在WAN网络化环境中时,计算机110一般包括调制解调器172或其它用于在WAN173上建立通信的装置,例如因特网。可以是内部或者外部的调制解调器172经过用户输入接口160或者其它合适的机构被连接到系统总线121。在网络化环境中,相对计算机110或者其部分所描述的程序模块可以被存储在远程存储器存储装置中。作为例子但不是限制性的,图2表示了作为驻留在存储器装置181上的远程应用程序185。可以理解,所示的网络连接是示例性的,可以使用在计算机之间建立通信连接的其它装置。
尽管没有示出计算机110的许多其它内部部件,本领域普通技术人员将理解这些部件和相互连接是公知的。因此,涉及计算机110内部结构的附加细节有关本发明将不公开说明。
本领域技术人员将理解诸如操作系统134,应用程序138和139,以及数据137的程序模块经过一个存储器存储装置被提供给计算机110,存储器存储装置可以包括ROM131,RAM132,硬盘驱动器141,磁盘驱动器151或者光盘驱动器155。优选地,硬盘驱动器141用来存储数据137和程序,该程序包括操作系统134和应用程序138和139。
当计算机110打开或复置时,存储在ROM131中的BIOS133指示处理单元120将操作系统从硬盘驱动141装入至RAM132。一旦操作系统144被装入至RAM132中,处理单元120执行操作系统代码和引起与操作系统134之用户界面相关的视频元素被显示在监视器191上。当诸如应用程序138的应用程序被用户打开时,程序代码和相关数据从硬盘驱动器141中读出和存储在RAM192中。
图3示出了具有各种外表的图形部件的显示例子。如图3所示,控件可以采用OK按钮200、Cancel按钮202和Apply按钮204的形式。本发明允许可视地改变控件和其它部件的外表以便更好地适合于计算机用户的要求。除颜色和字形选择之外,本发明允许改变控件的外表。例如,控件部件的配置能够按要求定义。例如,滚动条能够被赋予上和下箭头,其在滚动条的底部相互靠近,代替向上的箭头和在底部的向上和向下的箭头。而且,可以定义控件和其部件的形状。如图3所示,对于每一个按钮200,202和204,示出了4个不同的整体外表。每个不同外表的设定是协调的并且被称为“主题”。每个主题是由图3中的一个按钮行表示。尽管仅仅在图3中示出了4个主题,计算机用户可以选择创建无限多的主题。主题是相对特殊对象或者希望视觉环境的外表特征的集合或组。正如下述,本发明允许计算机的用户指定多个预定义主题的哪一个将被应用到视频显示的控件和其它部件。而且,在不需要改变控件和其他图形部件的软件代码的情况下,本发明允许新的视频主题被加到系统。另外,在不改变控件和其他图形部件的软件代码的情况下,本发明允许附加新的提供技术或者改进现有的提供技术。
作为应用程序,例如图1中的APP2139,运行它常常要求在计算机110的监视器191上赋予或者显示控件或图形部件。例如,参考图3,OK按钮200的显示可以被监视器上的应用程序所需要。应用程序139请求创建按钮200的实例。根据这,操作系统将类消息传递到指令其画出自己的控件。这个请求将被选定到包含特殊控件的动态连接库(DLL)上。作为例子,视窗操作环境中的DLL被称为User32.dll或者ComCtl32.dll(V5),其分别在图1中表示为208和210。库208和210存在于图形操作系统134内。库208和210一般通过缺省用应用程序139来连接。正如后面要说明的,库208和210的连接能够通过汇合点214(fusion)的使用来优先。库208和210内定义的控件包含提供在监视器上的控件所需要的画图代码。因此,为改变库208和210中控件的外表对于库208和210中的每个控件,一定要改变软件的画图代码。
附加库DLL,图1中所示的212,类似于库210,在于其包含若干预先定义的可以由应用程序138使用的控件和图形部件185。广义地说,DLL212包含若干将被图形显示的部件。但是,在库212中,这些控件被不同地定义,使得它们是“主题识觉”的。除了包含提供多视频类型控件所需要的所有软件代码之外,这些控件被定义成具有有关控件的某些基本的信息或者值,例如,控件的地点,部件和状态。
地点是在用户界面上用户所希望的位置。部件是构成控件的不同项目。作为例子,滚动条控件具有加长的矩形杆状零件,在杆状零件中滑动的较小的拇指零件,和在杆状零件的每端上的箭头零件。控件的状态说明当前的外表,其反映了那个零件的功能状态。例如,按钮能够是激活的,可按压的,热的(hot)(当鼠标在控件上时),阻塞的或者不激活的。
DLL212中的控件也包含如果没有选择主题的话提供控件所需要的画图代码,以及通过代码的主题识觉通路。DLL212从主题管器DLL216中请求提供或者画图服务。主题管理器216提供请求提供服务和在显示器的说明地点上画出控件,在说明状态中具有说明零件。
主题管理器216包含一系列的API,其允许库212与主题管理器交互和通信。API允许控件的作者在DLL212内定义控件,作为一系列的零件和状态,而不需要软件提供代码。这些API通常被分成三种类型画图API218,信息API220和利用API222。画图API218通常用在提供和在所需控件零件和其它部件之布置中的帮助中。信息API220通常用于获得有关控件之当前定义外表的信息,以允许控件被单独地定型。利用API222是被不同于这些控件的操作系统所使用的那些API,来控制主题选择。利用API222包括能够用于列举所安装主题和装载它们之一个的功能。
画图API218是主题识觉画图服务的集合。在画图API218组中的每个单独的API被用来实现不同的画图服务。通常,每个API要求附近之图形部件的专用零件和状态。提供了称为“DrawThemeBackground”的API,其画出专用主题的边框,并且在希望的地点填上专用零件和状态。类似地,提供了称为“DrawThemeText”的API,其画出使用用于专用零件和状态的专用主题的颜色和字形的专用文本。
作为例子,如果由应用程序138请求OK按钮200(图3),DLL212中的控件将通过诸如DrawThemeBackground或者DrawThemeText的函数调用将零件,状态和地点信息传递给画图API218。正如下面更详细说明的,该零件和状态信息是与外表特征匹配的,并且主题管理器216在监视器上画出控件。画图API218还包括被称为“GetThemeBackgroundContentRect”的API。该API使控件获得被定义主题背景之内容的大小。通常,这是在边框或者边界内的区域。通过使用该API,控件能够确定该背景内的可得到区域,其中放置了项目。当使用该API时,DLL212中的控件用专用零件和状态请求有关图形部件的信息。这个信息是通过主题管理器216获得的并且被返回到该控件。提供了被称为“GetThemeBackgroundExtent”的类似API,计算专用主题背景的大小和地点,其用于被给出内容矩形范围的专用零件和状态。当知道内容时可以使用该API,并且基于该内容,需要确定用于主题背景的外部边界。提供了被称为“GetThemePartSize”的另一个API,用来检索主题作者,其被规定为控件零件的最小和常规大小。
画图API218还包括称为“GetThemeTextExtent”的API。当在主题字体中提供时,该API用来计算规定文本的大小。因此该API能够用来确定给定文本串的宽度和高度。因此控件的作者能够规定具有与此相关之文本的零件和状态,并且使用该API从主题管理器216中获得与文本串的大小相关的信息。类似地,称为“GetThemeTextMetrics”的另一个API是可获得的,其能够用来获得有关所用字形的大小信息。因此,该API可以用来获得诸如平均字体字符之宽度的信息。换言之,该API用来从主题管理器216中获得该控件需要的有关专用主题字形之大小的信息。
在画图API218中还提供了称为“GetThemeBackgroundRegion”的API。在一些操作系统中,区(region)是一种描述非矩形形状的的方法。区还能够被认为是一种具有透明零件的图象。该API用来计算规则或者部分透明之专用主题背景的区。换言之,在专用零件和状态的窗框背景中,该API可以用来确定什么是透明的,什么是不透明的。因此,该API支持控件和零件非矩形形状的定义。类似地,提供了称为“HitTestThemeBackground”的API。该API用来确定在被点击的规定零件的背景中的点是否是在透明的或者在不透明的区域中。通过DLL212中的控件该API用来从主题管理器216中获得信息。如果该点击是在透明区域中,可以不需要激活。相反,如果该点击是在不透明区域中,可以需要激活。
包含在画图API218中的另一个API被称为“DrawThemeLine”。该API使得主题定义一个线的类类型。该类类型可以通过调用“DrawThemeLine”API被访问和用于专用零件。类似地,提供了称为“DrawThemeBorder”的API,其允许所定义主题边界被专用。该主题边界可以画为利用该API的专用零件。
提供了称为“DrawThemelcon”的API,其允许所定义主题图标被提供,可以包括专用主题的特殊结果。例如,当鼠标直接在图标上时,主题图标可以具有不同的外表,例如发光外表。
画图API218还包含称为“IsThemePartDefined”的API,其可以用于确定主题是否已经定义了用于专用零件和状态的参数。如果零件在主题内没有定义,则控件能够画出该零件本身。如果零件已经被主题定义,则主题管理器216将根据主题定义信息提供该零件。提供了称为“IsThemeBackgroundPartiallyTransparent”的另一个API。该API用来确定背景是否是矩形的或者是具有透明零件的区。该API可以用来简单化该控件代码。如果在背景中没有透明,则没有必要通过使用“HitTestThemeBackground”API来进行任何点击测试。
重要的是,画图API218还包括称为“OpenThemeData”的API。该API用来获得用于类名列表的句柄。类名列表识别一组图形部件,并且以被分成母类名和一个或多个子类名。例如,母类名可以是按钮。用于那个母类的子类名可以是“开始按钮”。句柄是对内部结构的参考,其详叙了对象的各种信息和特性。主题管理器216将在列表中检索每个类名,并且使用所找到的第一个匹配主题信息。例如,如果类名包括开始按钮和按钮两者,则如果存在就使用开始按钮主题信息。如果开始按钮主题信息不存在,则就使用用于按钮的主题信息。如果没有找到值,将使用旧代码来提供该控件。如果返回了任何非0值,就建立有效的主题句柄。该主题句柄将被返回到DLL212并且用于所有的主题画图。
类似地,所提供的另一个API被称为“CloseThemeData”。当控件被关闭例如不再需要按钮时或者当主题被改变时,使用该API,正如后面更详细地说明。
所提供的另一个API被称为“IsThemeActive”。在当前主题是有效时,该API允许DLL212中的控件获得真或假的回答。该API因此能够用来确定是调用“OpenThemeData”API或者仅仅使用现存的控件将自己提供的画图代码。
正如上述,主题管理器216还包含一组信息API220。这些信息API220允许控件被单独地定制。换言之,这些API被用在仅仅一些实例中并且可以用来获得有关专用控件的信息。这些信息API用来询问主题管理器216,该主题管理器216是用于有关主题之专用特性的被定义主题信息。因此,每个API220请求信息,其是由主题管理器216提供的。
信息API220内是称为“GetThemeColor”的API。该API利用具有特有颜色特性识别符的专用零件和专用状态以获得有关主题颜色的信息。该特性识别符是希望的颜色特性数。换言之,颜色API用来要求对应于所希望特性的颜色值,例如背景颜色。提供了另一称为“GetThemeMetric”的API,其请求和接收用于专用特性识别符的大小值。该大小值将是整数。称为“GetThemeString”的API也在信息API220内提供。该API用来获得用于专用特性识别符的串。该串将包括有关串中字符数和该串终止处的信息。
另一个API在称为“GetThemeBool”信息API220中提供,其对于给定零件、状态和特性将返回一个不是0就是1的整数。0和1对应于对于那个零件、状态和特性的真或假状态。所提供的另一个API称为“GetThemeInt”。在具有专用特性识别符的专用状态中,其将返回用于专用零件的整数值。类似地,提供称为“GetThemeEnumValue”的API,其将返回用于专用零件、状态和特性识别符的主题列举。主题列举仅仅是支持数字值的变量,其对应于符号信息。例如,用于校准的列举可以是对应于数字0,1,2的左,中,右。
提供称为“GetThemePosition”的另一个API,对于具有专用特性识别符的专用状态中的专用零件,对应于x位置和y位置,其将返回两个整数值。在信息API220中提供的另一个API被称为“GetThemeFont”。该API用来获得所用的给定专用零件、状态和特性识别符号的字形主题的逻辑说明。
在信息API220中提供的又一个API被称为“GetThemeRect”。该API将返回四个整数,代表专用零件、状态和特性识别符的左、右、顶和底。类似地,提供称为“GetThemeMargins”的API,其将返回四个整数,代表给定的专用零件、状态和特性识别符的左空间、右空间、顶空间和底空间。还有一个称为“GetThemeIntList”的API,其将返回专用特性的值,它的类型是整数值的列表。最后,提供称为“GetPropertyOrigin”的信息API,其返回在此产生该特性的位置。该API允许控件的作者获得该特性起源的信息。换言之,该API允许控件的作者确定该特性是否是专用于状态、零件、类、全局的或者是没有找到的特性。这是需要的,因为主题特性是由主题作者以分级结构方式规定的。例如,如果特性不是专用在“状态”级别,则主题管理器将为该特性搜索“零件”级别,“类”级别以及最后的“全局”级别。有时控件知道是否特性对其正在处理的零件/状态是清楚定义的是重要的。还有一个称为“GetThemeFilename”的API,其返回专用文件名特性的串值。
在信息API220中提供的又一个API被称为“SetWindowTheme”。该API允许控件的作者更改控件窗口,以除其类将正常使用外使用不同组的主题信息。换言之,在给控件以专用观看而不是由那个类的主题所定义的标准观看的同时,该API允许使用该控件。该API可以使用附加的参数以识别特殊应用程序和类名。这允许主题作者使用专用类但是改变该类的外表。例如,可以定义按钮,其具有给定的按钮外表。利用该API,该按钮能够被更改为不同的类名。例如,可以规定“OKButton”。然后主题作者将能够使用称为“OKButton”的类,并且“OKButton”将具有与标准按钮外表不同的外表。
在类似于视窗系统标准的信息API组中还具有子组的主题标准API,但是其专用于主题。不同于正常的基于控件的特性,这些特性是对所有控件可获得的和分享的。“GetThemeSysColor”返回专用系统颜色索引的主题专用颜色值。“GetThemeSysColorBrush”返回一个是专用系统颜色索引颜色的画图刷的句柄。“GetThemeSysSize”返回专用主题大小索引的整数大小。“GetThemeSysBool”返回用于专用主题布尔索引的布尔值(0或1)。“GetThemeSysFont”返回用于专用主题字体索引的逻辑字形结构。“GetThemeSysString”返回专用主题串索引的串值。
在信息API组220中还有一些面向应用的API。“IsAppThemed”返回表示该应用是否是由操作系统形成主题的布尔值(0或者1)。“GetWindowTheme”返回最近的主题句柄,如果需要,其为专用视窗打开。“GetThemeAppProperties”返回控制其窗口零件和类型是在该应用中可成主题的标志。“SetThemeAppProperties”允许该应用设置这些相同的标志。
最后,具有用于错误处理的信息API220。“GetThemeLastErrorCobtext”返回与当前执行表上的最后报告主题错误相关的错误上下文本(包括错误代码,错误代码参数,文件名和源线)。“FormatThemeMessage”返回用于专用语言中专用错误上下文本的错误串。
主题管理器216不仅包括画图API218和信息API220,而且包括一组利用API222。这些API用于实现各种结果。
画图API218和信息API220允许作者或DLL212中控件的创建者定义控件作为一系列的零件和状态。因此,所定义的控件是从主题管理器216的提供过程中提取的,并且也是从主题定义外表信息或者特性中提取的,正如下面的详细说明。使用API218和220,控件的作者能够创建控件,其是“主题识觉”和安装用于与主题管理器216的通信。该通信包含给主题管理器216传递基本的信息或值,其允许主题管理器提供希望的控件,具有在希望状态中的需要零件。
主题管理器216还包含执行画图指令所需要的提供器。例如,能够使用边界填充提供器221,允许将不同的颜色主题应用到控件上。作为另一个例子,能够使用位映射提供器223,其定义控件零件作为图象。其它的提供器例子包括使用矢量定义语言,便携式网络图形(PNG)文件,或者便携式文件格式文件(PDF)。应当理解,本发明并不局限于特殊的提供技术。如果希望或需要不同的提供器,则主题管理器216的画图代码被修改为将该提供器加到主题管理器216。因此,DLL212中的控件是从主题管理器216中的提供技术分离或提取出的。这允许不同的提供器被附加到主题管理器216,而不需要修改DLL212中的控件,正如下面的详细说明。
主题管理器216中的提供器提供所请求的控件,其根据已经由计算机用户所选择的外表主题。例如,图1中所示的外表主题224和226。正如所示,主题224可以是用户主题,主题226可以是商务主题。但是,应当理解,能够使用其它的主题,本发明决不局限于特定的主题。例如,其它的主题可以包括卡通主题,孩子的主题或者高尔夫主题。正如图1中所示,商务主题226已经由用户选择,如实线228所示。用户主题224是选择获得的,如虚线230所示。
每个主题224和226具有类似的结构。正如图6所示,商务主题226包括一系列的图象文件232。图象文件232是由特殊主题使用的图象文件。在这种情况下,图象文件232是由商务主题226使用的图象文件。商务主题226还包括themes.ini文件234。文件234是文本文件,并且能够在ANSI或者UNICODE字符集中创建。文件234规定获得的颜色方案和该主题可获得的大小。在主题226的情况下,文件234规定获得的颜色方案和商务主题226可获得的大小。因此,文件234代表了所有其应用的主题的变化。
主题文件234由一个或多个段构成。主题文件234内的段包括文献段236,大小段238,颜色方案段240和文件段242。文献段236是选择性的,可以包含任何特性名。大小段238规定大小名,例如“缺省大小”,“很小”或“很大”。颜色方案段240用来规定简单的颜色方案名和与该颜色方案名相关的选择颜色方案传递。文件段242用来规定类数据文件的唯一名称。文件段242将包括文牛名,用于该文件名的颜色方案(来自颜色方案段240),以及该文件将支持的大小(来自大小段238)。
主题226包括在图6中标记的第二个.ini文件244。文件244是类数据文件,其包含用于特定大小和颜色方案的主题数据。文件244还可以包含定义段。例如,文件244可以包含定义特殊类控件之特性的全局段。文件244还可以包含允许获得和使用系统标准的段。最后,文件244可以包含一组类段。每个类段名包含类名,选择零件名,和选择状态名。在该段内是特性/值对,其定义专用零件或控件的外表。例如,类名可以是用于滑动控件的“滑动器”。为该滑动器规定的零件是“轨道”。为该轨道零件定义的状态是“正常”,“不能”和“激活”。该类段名还能够包括应用程序(或者“组”)名,其规定该段仅仅应用到专门的应用程序中(或者“组”名,正如SetWindowTheme API所规定的)。
图象文件232,主题文件234,包括文件244被广泛地分组在一起以构成主题目录246。主题目录246和位于主题管理器216内的系统方案文件被用于装载商务主题226。该系统方案文件是定义用于包含在特殊主题中的所有特性的特性数的文件和基本上是母定义文件,其允许主题特性将被指定一个对应于所定义外表的数。
因此,主题目录246包含主题.ini文件234,类数据文件244和由主题使用的所有图象文件232。主题目录246的内容能够通过主题包装工具250包装成DLL文件。主题包装工具250通过分析防止方案文件句法错误和将该.ini文件加到正被建立的包装上来处理主题.ini文件。从文献段所识别的特性被写到包装串表中。来自颜色方案段240的颜色方案信息和来自大小段238的大小信息也被写到包装串表中。也处理每个类数据文件244。在类数据文件被处理时,该文件被分析防止该方案文件的句法错误。该类数据文件还被加到正被建立的包装上。
由主题包装工具250产生的DLL文件是商务主题文件226。文件226包含主题数据,并且该主题数据从控件库212中分开。这允许在不改变库212中定义的控件的情况下创建和选择不同的主题。因此,控件的作者能够创建和定义与外表或者主题数据无关的控件。文件226是二进制格式并且当计算机用户选择商务主题226时被传递到共享的主题数据文件252,正如图1中所示。文件252是共享存储映射文件,其能够通过所有的处理被访问。因此,当主题由计算机用户选择时,主题管理器216将读用于所定义主题文件例如文件226的信息,并且将那个二进制格式的信息放在文件252中,在此所有运行处理都可访问该二进制信息。
正如图1所示,提供了主题转换控件板254,其与主题管理器216通信。板254与用户界面结合,显示用户能够从中选择的可获得主题。正如图1所示,控件板254将允许用户选择商务主题226或者用户主题224。正如上面已经讨论的,如果选择了商务主题226,并且计算机的用户转换选择了用户主题224,则主题224将以二进制数据被装载到共享的存储器映射文件252中。主题管理器216还给DLL文件212中的每个主题识觉控件发送主题已经改变的消息。每个主题识觉控件知道如何响应该消息。
当主题识觉控件接收了主题已经改变的消息时,该控件将关闭经过OpenThemeData API接收的当前主题句柄。然后该控件将企图打开新的主题句柄,再次使用OpenThemeData API。如果不能够打开新的主题句柄,该控件知道该主题已经为那个控件关闭,并且旧的画图代码将被该控件使用以画出自己。如果打开了新的主题句柄,则主题管理器216将查看该主题二进制数据和开始新的画图例行程序,使得利用新选择的主题例如用户主题224重新画出所有的主题识觉控件。任何关于在先选择的主题被缓存的信息是无效的,并且那个信息一定要被重新计算。
操作中,正如图7所示,应用程序138或者139将请求在用户界面上提供的诸如控件的图形,如256的表示。该图形请求是通过汇合点214路由的。正如258所示,汇合点处理将确定所请求的控件是否是主题识觉控件。如果所请求的控件不是主题识觉的,则使用旧的代码并且控件将使用来自DLL208或者210的控件画出自己,如图7中的260所示。如果所请求的控件是主题识觉的,则图形请求在DLL212中被处理,如262所示。在请求提供服务中,使用API218,220和222,DLL212中的控件将用于图形请求的例如用于该请求控件的零件,状态和地点的基本信息传递给主题管理器216。因此,在没有由主题管理器216找到的外表特性的应用程序的情况下,图形请求在DLL212中处理。然后,主题管理器216将确定或者应用用于该给定控件零件和状态的主题专用外表特性,如264所示。该外表数据是从共享存储器映射数据文件252中检索的。使用该检索的外表数据,对于所请求的控件零件和状态,沿着该地点,主题管理器将在计算机显示上提供该控件,如266所示。
参考图4,说明以汇合点214(图1)实现的逻辑操作的另一个实施例。在该实施例中,当装载应用程序而不是例行应用程序如图7中通过汇合点请求时执行汇合点操作。通过将较老的非主题控件连接到较老的应用程序,汇合点允许较老的非主题应用程序工作于主题环境中。较老的非主题控件以User32.dll和ComCtl32.dll版本5(V5)提供。User32.dll提供诸如按钮,滚动条和列表框的用户控件。ComCtl32.dll提供诸如工具条,列表视图和树视图的外壳公共控件。汇合点214将主题控件文件ComCtl32.dll版本6(V6)连接到已经在主题环境中开发和测试的新的应用程序上。
图4中操作流程开始于装载操作402,其中应用程序在系统上开始运行。启动处理的部分是控件库的动态连接。连接是在程序模块和子例行程序的库之间联合引用的过程,以创建已准备在计算机上运行的装载模块。在装载操作402之后,控件转换到显示清单检测操作404,其中其被确定应用程序是否具有与此相关的显示清单。如果没有显示清单,控制转换到连接操作406,其中传统的控件User32.dll和ComCtl32.dll V5被连接到应用程序的存储映射中。正如前述,传统的控件不是主题识觉的。
另一方面,如果在显示清单检测操作404中有诸如显示清单215的显示清单,则控制转换到主题模块搜索操作408,其中其被确定ComCtl32.dll V6是否是在该显示清单中被列表。如果该显示清单没有列表ComCtl32.dll V6,则控制转换到连接操作406,其中传统的控件被连接到应用程序的存储映射中。另一方面,如果ComCtl32.dll V6被列表在该显示清单中,则转换控制到连接操作410,其中ComCtl32.dll V6的主题识觉控件被连接到应用程序的存储映射中。
图5是一种操作流程图,其表示在主题识觉应用程序环境中将非客户窗口部件构成主题的示例性过程。图5描绘了非客户窗口部件如何可以用两种通用情况的主题特性被提供。第一种情况是其中诸如非客户窗口消息502的非客户窗口消息被直接到窗口的情况。第二种情况是当应用程序构成可以影响窗口的非客户窗口区域的API调用的时候,其要求提供非客户窗口区域。
在第一种情况下,当产生非客户窗口消息502时,目标窗口的非客户区域可以需要被提供。窗口的非客户区域一般具有一个或多个非客户图形部件,例如最小化框,窗口框架,和关闭框。非客户窗口消息502能够是被送到窗口的任何消息,包括但不局限于测量或者提供消息。例如,当计算机用户重新确定目标窗口的大小时,非客户窗口消息502被送到该窗口,请求该窗口应当以新的大小被重新提供。非客户窗口消息502通常是由应用程序接收的,其使用诸如APP2139的目标窗口。以非客户窗口消息502为基础,诸如APP2139的应用程序可以进行激活,例如调节其GUI的外表。然后非客户窗口消息502被UserAPIHook506截取,其将该消息路由到主题管理器216。UserAPIHook506可以是一部分主题管理器216。主题管理器216解释非客户窗口消息502。根据该非客户窗口消息502,主题管理器216可以做有关非客户窗口部件之尺寸的测量,并且可以使用在共享主题数据252中的主题特性以提供窗口的非客户区域。
继续图5的例子,当诸如APP2139的应用程序或者应用程序的控件做API调用时,该结果可以影响窗口的非客户区域。在这种情况下,非客户窗口区域可以是使用主题特性被重新提供的。对于主题识觉应用程序,例如应用程序139,诸如API调用503的API调用可以构成USER32208。API调用503可以是任何API调用,包括但不局限于先前讨论的任何API函数。例如,“MoveWindow()”API调用能够改变窗口的大小,地点和z排序(ordering),其要求重新画出窗口框架。当主题是活动时,USER32208在接收API调用503时将API调用503路由至UserAPIHook506。然后UserAPIHook506将API调用503路由到主题管理器216。主题管理器216解释API调用503和进亍有关窗口框架之尺寸的测量计算。然后,如果需要的话,主题管理器216使用共享的主题数据252以用主题特性提供具有非客户窗口区域。
在图5的实施例中,USER32208操作用于诸如图1之APPI138的主题应用和诸如APP2 139的非主题应用两者的非客户API和消息,如图5所示。图5所示的消息流对于非主题应用和主题应用是相同的。因此,窗口的非客户图形部件是与该应用程序是否是主题识觉无关而构成主题的。
重要地是,UserAPIHook操作506修改提供请求到主题管理器216,其能够使用共享主题数据252以用主题特性提供窗口的非客户区域。正如前面讨论的,对于窗口部件,主题特性数据能够通过将特性加到“.msstyles”文件上被很容易地附加上。这允许大量的用于非客户窗口部件的不用改变控件软件的主题。
本发明的各种实施例的逻辑操作实现为(1)一系列的计算机实现活动或者在计算系统上运行的程序模块和/或(2)在计算系统中互连的机器逻辑电路或者电路模块。该实现是选择的问题,其依赖于实现本发明的计算系统的性能要求。因此,这里要说明的构成本发明实施例的逻辑操作被变化地称为操作,结构装置,活动或者模块。本领域技术人员可以认识到,这些操作,结构装置,活动和模块可以以软件,硬件,专用目的数字逻辑和其任何组合来实现,而不脱离在所附权利要求限定的本发明的精神和范围。
根据包括


书的综述,对本领域的技术人员来说本发明的替换实施例将变得清楚。因此,本发明的范围是通过所附权利要求而不是前面的说明来限定。
尽管本发明已经用专用于计算机结构特征的语言,方法作用和通过计算机可读媒体进行了说明,应当理解,在所附权利要求限定的本发明并不必要局限于所说明的专用结构,作用或者媒体。作为例子,其它决定方法可以被包括在与控件提供模块结合的汇合点处理中。因此,专用结构特征,作用和媒体作为实现所要求权利之本发明的示例性实施例。
上述的各种实施例是方便说明而提供的,其不应当被解释为限制本发明。本领域的技术人员将容易认识到构成本发明的各种改进和变化,而不用按照在此所说明和描述的例子实施例和应用,并且不脱离下面权利要求中提出的本发明的真正精神和范围。
权利要求
1.一种主题管理系统,构成为在计算机系统上提供图形部件,该计算机系统具有运行一个或多个应用程序的图形操作系统,缓存的应用程序能够做被连接到控件模块的请求,主题管理系统包括第一控件模块,具有一个或多个响应应用程序界面调用的第一函数,该调用能够提供具有主题的图形部件;第二控件模块,具有一个或多个响应应用程序界面调用的第二函数,该调用能够提供没有主题的图形部件;和汇合点模块,其响应确定是将该应用程序连接到第一控件模块或者是第二控件模块之一个上以提供图形部件的请求。
2.权利要求1的主题管理系统,还包括主题管理模块,其具有响应从第一控件模块的一个或多个第一函数中提供调用的一个或多个第三函数,该第三函数能够提供使用主题的图形部件。
3.权利要求2的主题管理系统,还包括截取异常分支模块,其截取被送到目标窗口的非客户窗口消息,该目标窗口具有在非客户窗口区域中的一个或多个非客户图形部件,非客户窗口消息请求目标窗口完成在一个或多个非客户图形部件上的作用;和第一路由模块,其从截取异常分支模块中接收非客户窗口消息并且将非客户窗口消息路由到主题管理器的一个或多个第三个函数上,以便完成该作用。
4.权利要求3的主题管理系统,其中第一控件模块还包括第二个选路模块,其将应用程序界面调用路由到截取异常分支模块,以便响应应用程序界面调用在非客户窗口区域上的一个或多个非客户图象部件上能够完成作用。
5.权利要求3的主题管理系统,其中第二控件模块还包括第三个选路模块,其将应用程序界面调用路由到截取异常分支模块,以便响应应用程序界面调用在非客户窗口区域上的一个或多个非客户图象部件上能够完成作用。
6.权利要求3的主题管理系统,其中非客户窗口消息是一种提供消息,其请求应当提供在非客户窗口区域上的一个或多个非客户图象部件,主题管理模块响应通过提供一个或多个非客户图象部件的提供消息。
7.权利要求3的主题管理系统,其中一个或多个非客户图象部件的每一个是与尺寸相关的,非客户窗口消息是一种测量消息,其请求应当测量在非客户窗口区域上的一个或多个非客户图象部件的尺寸,主题管理模块响应通过测量一个或多个非客户图象部件之尺寸的测量消息。
8.权利要求1的主题管理系统,其中第一和第二控件模块的第一和第二函数能够提供用户控件和外壳公共控件。
9.权利要求1的主题管理系统,其中汇合点模块包括第一检测模块,其检测应用程序是否具有表示一组控件模块的哪一个应当被连接到该应用程序的相关显示清单文件;第二检测模块,其检测显示清单是否表示第一控件模块应当被连接;和连接模块,如果显示清单表示第一控件模块应当被连接,其将第一控件模块连接到应用程序。
10.一种主题管理系统,构成为在计算机系统上提供图形部件,该计算机系统具有运行一个或多个应用程序的图形操作系统,主题管理系统包括截取异常分支模块,其截取到目标窗口的提供消息,该目标窗口具有非客户图形部件,该提供消息请求目标窗口提供目标窗口的非客户图形部件;主题管理模块,其具有能够提供使用主题的任何窗口的非客户图形部件一个或多个第一函数;和路由模块,其将提供消息路由到主题管理模块的一个或多个第一函数上,以便使用具有一组主题特性的主题来提供目标窗口的非客户图形部件。
11.权利要求10的主题管理系统,还包括第一控件模块,具有能够与主题管理模块的一个或多个第一函数交互的一个或多个第二函数,以提供具有主题特性的用户控件或者外壳公共控件;第二控件模块,具有能够提供没有主题特性的用户控件和外壳公共控件的一个或多个第三函数;和汇合点模块,其响应来自应用程序的请求以便该应用程序连接到第一控件模块或者是第二控件模块之一个上。
12.一种在具有图形操作系统的计算机的计算机显示器上提供图形控件的方法,第一组应用程序实现主题能力,第二组应用程序不实现主题能力,该方法包括提供第一控件模块,其具有能够提供用于不实现主题能力之应用程序的图形控件的一个或多个第一函数;提供第二控件模块,其具有能够提供用于实现主题能力之应用程序的图形控件的一个或多个第二函数;接收来自应用程序的请求,请求应用程序应被连接到第一控件模块和第二控件模块之一上;确定应用程序是否实现主题能力;和如果应用程序实现主题能力则将应用程序连接到第二控件模块上,使得应用程序能够使用第二控件模块的函数来提供具有主题的图形控件。
13.权利要求12的方法,还包括从应用程序中接收应用程序界面调用,应用程序界面调用请求提供图形控件;确定图形控件是否实现主题能力;和如果图形控件实现主题能力,调用主题管理器,其使用具有图形部件特性数据的主题文件以用主题方式提供所请求的图形控件。
14.权利要求12的方法,其中确定作用包括检测对于应用程序是否存在显示清单;和搜索用于指示器的显示清单,该指示器表示应用程序能够与第二控件模块交互以提供具有主题的图形控件。
15.权利要求13的方法,还包括截取被送到具有一个或多个非客户图形部件之窗口的非客户窗口消息,该非客户窗口消息请求窗口完成在一个或多个非客户图形部件上的作用;将非客户窗口消息路由到主题管理器,该主题管理器管理非客户图形部件的主题特性;和完成在一个或多个非客户图形部件上的作用。
16.权利要求15的方法,其中非客户窗口消息是一种提供消息,并且作用是提供一个或多个非客户图形部件。
17.权利要求15的方法,其中非客户窗口消息是一种测量消息,一个或多个非客户图形部件的每一个是与尺寸相关的,并且作用是测量一个或多个非客户图形部件的尺寸。
18.权利要求13的方法,还包括将应用程序界面调用路由到截取异常分支模块;将应用程序界面调用路由到主题管理器,主题管理器以主题形式提供非客户图形部件;确定应用程序界面调用是否影响由应用程序使用的窗口的一个或多个非客户图形部件;和如果应用程序界面调用影响一个或多个非客户图形部件,则以主题形式提供一个或多个非客户图形部件。
19.一种计算机程序产品,可由计算系统读出,并且编码用于执行计算机处理之指令的计算机程序,用来在具有图形操作系统的计算机系统中提供窗口非客户部件,该计算机程序包括截取被送到具有一个或多个非客户图形部件之窗口的非客户窗口消息,该非客户窗口消息请求窗口完成在一个或多个非客户图形部件上的作用;将非客户窗口消息路由到主题管理器,该主题管理器管理非客户图形部件的主题特性;和完成在一个或多个非客户图形部件上的作用。
20.一种计算机程序产品,可由计算系统读出,并且编码用于执行计算机处理之指令的计算机程序,用来在具有图形操作系统的计算机显示器上提供图形控件,第一组应用程序实现主题能力,第二组应用程序不实现主题能力,该计算机程序包括接收来自应用程序的请求,请求应用程序应被连接到第一控件模块和第二控件模块之一上;确定应用程序是否实现主题能力;和如果应用程序实现主题能力则将应用程序连接到第二控件模块上,使得应用程序能够使用第二控件模块的函数来提供具有主题的图形控件。
21.权利要求20的计算机程序产品,其中计算机程序还包括从应用程序中接收应用程序界面调用,应用程序界面调用请求提供图形控件;确定图形控件是否实现主题能力;和如果图形控件实现主题能力,调用主题管理器,其使用具有图形部件特性数据的主题文件以用主题方式提供所请求的图形控件。
22.权利要求21的计算机程序产品,其中确定作用包括检测对于应用程序是否存在显示清单;和搜索用于指示器的显示清单,该指示器表示应用程序能够与第二控件模块交互以提供具有主题的图形控件。
23.权利要求21的计算机程序产品,其中计算机程序还包括截取被送到具有一个或多个非客户图形部件之窗口的非客户窗口消息,该非客户窗口消息请求窗口完成在一个或多个非客户图形部件上的作用;将非客户窗口消息路由到主题管理器,该主题管理器管理非客户图形部件的主题特性;和完成在一个或多个非客户图形部件上的作用。
24.权利要求23的计算机程序产品,其中非客户窗口消息是一种提供消息,并且作用是提供一个或多个非客户图形部件。
25.权利要求的计算机程序产品,其中非客户窗口消息是一种测量消息,一个或多个非客户图形部件的每一个是与尺寸相关的,并且作用是测量一个或多个非客户图形部件的尺寸。
全文摘要
说明了一种系统和方法,其使用主题管理器的主题函数来以主题方式提供图形部件。主题管理器使用具有所有类型图形部件之主题特性的主题文件。当开始应用程序时,提供的系统确定应用程序是否支持该主题构成。如果应用程序支持该主题构成,则支持该主题的动态连接控件库被连接到该应用程序。如果应用程序不支持该主题构成,则连接非主题控件库。如果应用程序支持该主题,则通过使用与主题管理器之函数交互的主题控件库函数来提供具有主题的应用程序的用户控件和外壳公共控件。通过截取到窗口的提供消息和将消息送到主题管理器,提供使用主题的非客户窗口部件。当适当响应某些应用程序界面调用时,还测量和提供使用主题特性的非客户窗口部件。
文档编号G06T11/80GK1322993SQ0112169
公开日2001年11月21日 申请日期2001年4月6日 优先权日2000年4月6日
发明者C·A·埃文斯, R·L·费尔南迪, R·W·斯托克里, P·S·赫尔亚, L·埃莫迪欧, C·J·古扎克, M·A·施密特, S·S·海森, S·R·汉吉 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1