国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      顯示圖形對(duì)象的制作方法

      文檔序號(hào):6629348閱讀:1034來(lái)源:國(guó)知局

      專利名稱::顯示圖形對(duì)象的制作方法
      技術(shù)領(lǐng)域
      :本發(fā)明涉及圖形用戶界面。本發(fā)明的方面涉及一種用于控制在一個(gè)圖形用戶界面中的一個(gè)圖形對(duì)象外觀的方法。本發(fā)明的方面在提供一個(gè)用于諸如用于數(shù)字電視信號(hào)的接收器/解碼器的設(shè)備的圖形用戶界面中具有一個(gè)特定的、而不是排它的應(yīng)用。然而,本發(fā)明的方面還具有到通用計(jì)算機(jī)及其它設(shè)備的應(yīng)用。大多數(shù)的圖形用戶界面(GUI)包含一組類似的、能夠由用戶操作的基本部件。這些包含如按鈕、滑動(dòng)塊、列表框、諸如此類這樣的對(duì)象。這樣的部件一般被稱為“窗口小部件”。雖然窗口小部件的基本功能在許多GUI當(dāng)中是共同的,但是窗口小部件的外觀隨著GUI的不同而不同。某些圖形操作系統(tǒng),例如X窗口系統(tǒng),幾乎不利用在能夠在GUI中顯示的窗口小部件的外觀上的約束。這允許程序員使用若干個(gè)不同窗口小部件集合開(kāi)發(fā)應(yīng)用程序,其中每一個(gè)都具有它自己的特殊外觀。此外,大量窗口管理程序在影響由應(yīng)用程序創(chuàng)建的窗口的整體外觀的X下面運(yùn)行。通常,在開(kāi)發(fā)一個(gè)應(yīng)用程序期間以及某種程度上在運(yùn)行期間,有可能對(duì)顯示在GUI上的該應(yīng)用程序的外觀實(shí)現(xiàn)某些控制。然而,在這兩種情況下,該外觀都由窗口小部件集合的硬編碼部分或者窗口管理程序確定。對(duì)于一個(gè)用戶來(lái)說(shuō),不可能顯著地改變一個(gè)應(yīng)用程序的外觀而不用重新編碼該窗口小部件集合、該窗口管理程序、或者這二者。這些選項(xiàng)中的任何一個(gè)都需要大量的重編碼工作以及大量的新代碼被安裝到一個(gè)主系統(tǒng)上。一種減少必須執(zhí)行以更新一個(gè)外觀的重編碼工作的數(shù)量的方案是,從保存在一個(gè)主系統(tǒng)存儲(chǔ)器中的像素映像中構(gòu)造在一個(gè)GUI顯示中一個(gè)窗口的單元(例如,邊角、邊界、諸如此類)。這可以作為本發(fā)明的一個(gè)獨(dú)立方面來(lái)提供。然而當(dāng)使用時(shí),該像素映像能夠占據(jù)相當(dāng)大量的存儲(chǔ)器,而且當(dāng)該外觀將被更新時(shí),表示有大量的數(shù)據(jù)要被傳送。如果GUI必須利用有限資源操作而且必須經(jīng)由一個(gè)限制帶寬的鏈接更新的話,則這能夠是一個(gè)重要的缺點(diǎn)。當(dāng)一個(gè)應(yīng)用程序在用于數(shù)字電視信號(hào)的一個(gè)接收器/解碼器上被執(zhí)行時(shí),就出現(xiàn)了這樣一種情況的一個(gè)實(shí)例。這樣一個(gè)解碼器與一臺(tái)通用計(jì)算機(jī)相比較具有有限數(shù)量的存儲(chǔ)器,而且通過(guò)從形成所接收電視信號(hào)一部分的一個(gè)頻道中下載數(shù)據(jù)來(lái)更新該軟件(包含GUI的外觀)。這個(gè)發(fā)明的一個(gè)目的是向一個(gè)應(yīng)用程序開(kāi)發(fā)者提供,以一種一致和可容易控制的方式、利用最少必需的重編碼以及最少要求傳輸?shù)揭粋€(gè)執(zhí)行環(huán)境的數(shù)據(jù),來(lái)控制一個(gè)應(yīng)用程序外觀的能力。在本發(fā)明的第一方面,提供了一種控制在一個(gè)圖形用戶界面中的一個(gè)圖形對(duì)象外觀的方法,包含定義一個(gè)外觀對(duì)象;以及將該外觀對(duì)象與該圖形對(duì)象關(guān)聯(lián)。通過(guò)明確地定義一個(gè)外觀對(duì)象,而不是在一個(gè)應(yīng)用程序中嵌入控制外觀的代碼,本發(fā)明可以允許比迄今為止控制一個(gè)圖形對(duì)象外觀的方法更具有靈活性。更可取地是,該外觀對(duì)象包含確定如何顯示該圖形對(duì)象的代碼或者參數(shù),這樣的代碼或者參數(shù)最好被保存在存儲(chǔ)器中。例如,該外觀對(duì)象可以由面向?qū)ο蟮某绦虼a定義。該外觀對(duì)象可以通過(guò)實(shí)例化一個(gè)外觀對(duì)象類來(lái)定義。以這種方式定義的一個(gè)外觀對(duì)象可以包含一個(gè)指向另一個(gè)外觀對(duì)象類的指針(除了從中導(dǎo)出它的那個(gè)類以外)。這能夠允許該外觀對(duì)象訪問(wèn)那另一個(gè)外觀類的屬性和/或方法。以這種方式,一個(gè)外觀對(duì)象能夠從兩個(gè)或更多其它外觀中獲取它的特征,這能夠允許要被創(chuàng)建的外觀是兩個(gè)不同外觀的組合,或者允許額外的特征被添加到該外觀中。為了把該圖形對(duì)象與外觀對(duì)象關(guān)聯(lián),該圖形對(duì)象可以包含一個(gè)屬性來(lái)標(biāo)識(shí)與該圖形對(duì)象相關(guān)的外觀對(duì)象。更可取地是,該外觀對(duì)象定義了分配給特定指定顏色的實(shí)際顏色。例如,該外觀對(duì)象可以定義分配給黑色、白色、和一個(gè)或者幾個(gè)灰度中至少一個(gè)的實(shí)際顏色。以這種方式,例如通過(guò)向與那個(gè)外觀有關(guān)的圖形對(duì)象給予某個(gè)色調(diào),該外觀能夠定義某個(gè)顏色方案。該外觀對(duì)象還可以定義一個(gè)顏色映射,其設(shè)置在顯示任何特定顏色時(shí)將被使用的實(shí)際顏色值。為了改變?cè)搱D形對(duì)象的外觀,該外觀對(duì)象可以被重新定義或者被修改(例如通過(guò)在編譯時(shí)改變代碼或者參數(shù),或者在運(yùn)行時(shí)改變參數(shù)),或者一個(gè)不同的外觀對(duì)象可以與該圖形對(duì)象相關(guān)聯(lián)。因此該方法可以進(jìn)一步包含通過(guò)重新定義或者修改該外觀對(duì)象或者通過(guò)把該圖形對(duì)象與一個(gè)不同的外觀對(duì)象相關(guān)聯(lián),來(lái)修改該圖形對(duì)象的外觀。如果一個(gè)外觀對(duì)象被重新定義或者修改了,則可能必需更新與該外觀對(duì)象相關(guān)聯(lián)的圖形對(duì)象的外觀。為了實(shí)現(xiàn)這個(gè),該外觀對(duì)象可以包含一個(gè)更新計(jì)數(shù)器,當(dāng)該外觀對(duì)象被重新定義或者修改了時(shí),就更新該計(jì)數(shù)器的值。更可取地是,圖形對(duì)象存儲(chǔ)它們已經(jīng)影響的外觀對(duì)象的更新計(jì)數(shù)器的值。每當(dāng)要重新顯示一個(gè)圖形對(duì)象時(shí),由該圖形對(duì)象存儲(chǔ)的值與該外觀對(duì)象的更新計(jì)數(shù)器的值相比較。如果兩個(gè)值不同,則該圖形對(duì)象考慮在該外觀對(duì)象中的修改并且存儲(chǔ)該更新計(jì)數(shù)器的新值。該外觀對(duì)象可以包含一個(gè)驗(yàn)證掩碼來(lái)指示能夠由該外觀對(duì)象調(diào)用的方法,以便使沒(méi)有由該外觀對(duì)象實(shí)現(xiàn)的方法不被調(diào)用。該圖形對(duì)象能夠訪問(wèn)該外觀對(duì)象的驗(yàn)證掩碼以最優(yōu)化該圖形對(duì)象的繪制。以這種方式,能夠避免對(duì)沒(méi)有實(shí)現(xiàn)的方法的調(diào)用,從而能夠加速該圖形對(duì)象的繪制。在某些情況下,例如在第一次創(chuàng)建一個(gè)外觀對(duì)象時(shí),該外觀對(duì)象可以與單個(gè)圖形對(duì)象相關(guān)聯(lián)。然而在最佳實(shí)施例中,該外觀對(duì)象與多個(gè)圖形對(duì)象相關(guān)聯(lián)。通過(guò)將該外觀對(duì)象與多個(gè)圖形對(duì)象相關(guān)聯(lián),可以實(shí)現(xiàn)用于那些對(duì)象的統(tǒng)一外觀,而且與每個(gè)圖形對(duì)象都具有它獨(dú)立定義的外觀的情況相比,可以減少定義該外觀對(duì)象所需要的數(shù)據(jù)數(shù)量。因此,該方法可以是一種在一個(gè)圖形用戶界面中控制多個(gè)圖形對(duì)象的外觀的方法,并且可以包含將多個(gè)圖形對(duì)象與該外觀對(duì)象相關(guān)聯(lián)。在某些情況下,諸如沒(méi)有圖形對(duì)象與一個(gè)外觀對(duì)象相關(guān)聯(lián)時(shí),可能期望刪除該外觀對(duì)象,例如以允許由該外觀對(duì)象使用的存儲(chǔ)空間被重新分配。這在諸如接收器/解碼器這樣、其中存儲(chǔ)器可能有限的設(shè)備中可能是尤其重要的。為了這個(gè)目的(在其它目的當(dāng)中)該外觀對(duì)象可以包含一個(gè)計(jì)數(shù)器來(lái)指示與該外觀對(duì)象有關(guān)聯(lián)的圖形對(duì)象的數(shù)目。更可取地是,每當(dāng)一個(gè)圖形對(duì)象與該外觀對(duì)象相關(guān)聯(lián)時(shí),遞增該計(jì)數(shù)器,而每當(dāng)一個(gè)圖形對(duì)象與該外觀對(duì)象不相關(guān),遞減該計(jì)數(shù)器。如果該計(jì)數(shù)器為零值,則可以假定該外觀對(duì)象能夠被安全地刪除。在本發(fā)明另一個(gè)方法方面中,提供了一種在一個(gè)圖形用戶界面中定義一個(gè)圖形對(duì)象的方法,包含提供一個(gè)控制該圖形對(duì)象外觀的外觀對(duì)象(例如,通過(guò)定義控制該圖形對(duì)象外觀的屬性和/或方法),并且提供一個(gè)控制該圖形對(duì)象操作的窗口小部件對(duì)象(例如,通過(guò)定義控制該圖形對(duì)象操作的屬性和/或方法)。上述任何特征都可以結(jié)合這個(gè)方面來(lái)提供。如上所述的任何一種方法最好是進(jìn)一步包含例如在一個(gè)諸如一個(gè)計(jì)算機(jī)屏幕或者一個(gè)電視屏幕的屏幕上顯示該圖形對(duì)象。如上所述的任何一種方法可以由一個(gè)接收器/解碼器、諸如一個(gè)數(shù)字或者模擬電視接收器/解碼器執(zhí)行。在這里使用的術(shù)語(yǔ)“接收器/解碼器”可以意味著一個(gè)用于接收編碼或者不編碼信號(hào)、例如可以由某些其它裝置廣播或者傳送的電視和/或無(wú)線電信號(hào)的接收器。該術(shù)語(yǔ)還可以意味著用于解碼接收信號(hào)的一個(gè)解碼器。這樣的接收器/解碼器的實(shí)施例可以包含例如在一個(gè)“機(jī)頂盒”中與接收器集成、用于解碼該接收信號(hào)的解碼器,這樣一個(gè)解碼器與一個(gè)物理上分離的接收器一起起作用,或者這樣一個(gè)解碼器包含附加功能,諸如一個(gè)網(wǎng)絡(luò)瀏覽器、一個(gè)錄像機(jī)或者一臺(tái)電視。在本發(fā)明的一個(gè)裝置方面,提供了用于控制在一個(gè)圖形用戶界面中的一個(gè)圖形對(duì)象外觀的裝置,包含用于例如通過(guò)在存儲(chǔ)器中創(chuàng)建或者修改代碼或者參數(shù)、來(lái)定義一個(gè)外觀對(duì)象的裝置,以確定將如何顯示一個(gè)圖形對(duì)象;以及例如通過(guò)設(shè)置該圖形對(duì)象的一個(gè)屬性來(lái)標(biāo)識(shí)該外觀對(duì)象、用于將該外觀對(duì)象與圖形對(duì)象相關(guān)聯(lián)的裝置。更可取地是,該裝置包含一個(gè)被適當(dāng)編程的處理器用于定義該外觀對(duì)象以及用于將該外觀對(duì)象與該圖形對(duì)象相關(guān)聯(lián),而且包含一個(gè)存儲(chǔ)器用于存儲(chǔ)該外觀對(duì)象和圖形對(duì)象。該外觀對(duì)象可以由面向?qū)ο蟮某绦虼a定義。該外觀對(duì)象可以通過(guò)實(shí)例化一個(gè)外觀對(duì)象類來(lái)定義。該外觀對(duì)象可以包含一個(gè)指向另一個(gè)外觀對(duì)象類的指針。該裝置可以適于通過(guò)重新定義或者修改該外觀對(duì)象、或者通過(guò)把該圖形對(duì)象與一個(gè)不同的外觀對(duì)象相關(guān)聯(lián),來(lái)修改該圖形對(duì)象的外觀。該外觀對(duì)象可以包含一個(gè)更新計(jì)數(shù)器(諸如在存儲(chǔ)器中的一個(gè)存儲(chǔ)單元),當(dāng)該外觀對(duì)象被重新定義或者修改時(shí)更新該更新計(jì)數(shù)器的值。該外觀對(duì)象可以包含一個(gè)驗(yàn)證掩碼(例如,保存在存儲(chǔ)器中)來(lái)指示那些能夠由該外觀對(duì)象調(diào)用的方法。該裝置可以是用于在一個(gè)圖形用戶界面中控制多個(gè)圖形對(duì)象外觀的裝置,而且可以適于將該外觀對(duì)象與多個(gè)圖形對(duì)象相關(guān)聯(lián)。該外觀對(duì)象可以包含一個(gè)計(jì)數(shù)器(諸如在存儲(chǔ)器中的一個(gè)存儲(chǔ)單元)來(lái)指示與該外觀對(duì)象有關(guān)聯(lián)的圖形對(duì)象的數(shù)目。該裝置可以進(jìn)一步包含諸如一個(gè)屏幕(例如一個(gè)計(jì)算機(jī)屏幕或者一個(gè)電視屏)、用于顯示圖形對(duì)象的裝置。在一個(gè)實(shí)施例中,該裝置是一個(gè)接收器/解碼器,諸如一個(gè)數(shù)字或者模擬電視接收器/解碼器。在另外一個(gè)方面中,本發(fā)明提供了在一個(gè)圖形用戶界面中的一個(gè)對(duì)象,其包含控制該對(duì)象操作的一個(gè)窗口小部件類的一個(gè)實(shí)例,以及控制該對(duì)象外觀的一個(gè)外觀對(duì)象類的一個(gè)實(shí)例。如上所述,本發(fā)明還提供了用于創(chuàng)建對(duì)象的一個(gè)窗口小部件集合,該窗口小部件集合包含多個(gè)窗口小部件類以及一個(gè)或多個(gè)外觀對(duì)象類。更典型地,該窗口小部件集合包含多個(gè)外觀對(duì)象類,這些類包含一個(gè)基類以及一個(gè)從該基類中導(dǎo)出的類。為了修改該對(duì)象的外觀,該外觀對(duì)象類能夠被改變。這不會(huì)改變?cè)搶?duì)象的函數(shù),因?yàn)楹瘮?shù)由該窗口小部件類控制。此外,有可能讓該外觀對(duì)象類的一個(gè)實(shí)例由該窗口小部件類的多個(gè)實(shí)例使用,由此最小化使用的存儲(chǔ)器的數(shù)量。該外觀對(duì)象類能夠被包含在一個(gè)在運(yùn)行時(shí)間被鏈接到一個(gè)應(yīng)用程序里的庫(kù)中。一個(gè)用戶因此能夠通過(guò)選擇一大堆庫(kù)中的哪一個(gè)應(yīng)當(dāng)被鏈接來(lái)為該對(duì)象選擇一個(gè)最佳的外觀。因?yàn)樵撏庥^對(duì)象類獨(dú)立于另一項(xiàng)被改變,所以重新編碼被簡(jiǎn)化到實(shí)現(xiàn)該新外觀所必需的最少數(shù)。做為選擇,該外觀對(duì)象類能夠被包含在在編譯時(shí)被鏈接到一個(gè)應(yīng)用程序里的一個(gè)庫(kù)中。這允許一個(gè)應(yīng)用開(kāi)發(fā)者具有對(duì)該對(duì)象外觀的完全控制。該外觀對(duì)象類可以導(dǎo)出能夠被激活以在一個(gè)GUI顯示上繪制一個(gè)組件的一部分的繪制方法。該窗口小部件類一般包含激活該外觀對(duì)象類的繪制方法的代碼。該外觀對(duì)象類還可以導(dǎo)出屬性,該屬性提供與一個(gè)組件的單元有關(guān)的數(shù)據(jù)。該外觀對(duì)象類可以是一個(gè)缺省類,其為在一個(gè)GUI顯示中的窗口小部件提供一個(gè)缺省的外觀。做為選擇,該外觀對(duì)象類可以是一個(gè)從一個(gè)缺省類中導(dǎo)出的類,該導(dǎo)出類覆蓋一個(gè)或多個(gè)該缺省類的方法和/或?qū)傩?。通過(guò)這種方案,一個(gè)用戶或者開(kāi)發(fā)者能夠?qū)υ谝粋€(gè)GUI的外觀內(nèi)僅僅有限數(shù)量的單元進(jìn)行改變而不用必須重新處理任何保持不變的部分。該外觀對(duì)象類實(shí)例可以是該窗口小部件類實(shí)例的一個(gè)屬性。一般地,指向該外觀對(duì)象類的一個(gè)實(shí)例的指針被分配給該窗口小部件類實(shí)例的一個(gè)屬性。這樣一個(gè)指針可以作為一個(gè)參數(shù)傳遞給該窗口小部件類的一個(gè)構(gòu)造器。本發(fā)明還提供了一種在一個(gè)圖形用戶界面中創(chuàng)建一個(gè)對(duì)象的方法,其中實(shí)例化一個(gè)外觀對(duì)象類,在該外觀對(duì)象類中定義了控制該對(duì)象的外觀對(duì)象的屬性和/或方法;以及實(shí)例化一個(gè)窗口小部件類,在該窗口小部件類中定義了控制該對(duì)象操作的屬性和/或方法。在依據(jù)前面最后一段的方法中,指向該外觀對(duì)象類的一個(gè)指針一般被保存在該窗口小部件類實(shí)例的實(shí)例存儲(chǔ)器中。通過(guò)控制操作,不是一定意味著該對(duì)象是有作用的;盡管滑動(dòng)塊和按鈕等能夠執(zhí)行動(dòng)作,然而某些圖形對(duì)象可能僅僅是作裝飾的、諸如符號(hào)或者組合對(duì)象的一部分。因此控制該對(duì)象操作的屬性和/或方法只是可以確定該對(duì)象的基本功能(例如表現(xiàn)為一個(gè)指針),該對(duì)象的精確外觀由該外觀對(duì)象控制。在另一個(gè)方面,本發(fā)明提供了一種在一個(gè)圖形用戶界面中創(chuàng)建多個(gè)對(duì)象的方法,其中實(shí)例化一個(gè)外觀對(duì)象類,在該外觀對(duì)象類中定義了控制該對(duì)象外觀的屬性和/或方法;以及一個(gè)窗口小部件類被實(shí)例化了多次,在該窗口小部件類中定義了控制該對(duì)象操作的屬性和/或方法。在另一個(gè)方面,本發(fā)明提供一種為一個(gè)應(yīng)用程序執(zhí)行設(shè)備(例如,一臺(tái)計(jì)算機(jī)、一個(gè)用于一個(gè)數(shù)字電視信號(hào)的接收器/解碼器、或者另一個(gè)設(shè)備)實(shí)現(xiàn)一個(gè)圖形用戶界面顯示的方法,該方法包含加載如上所述的一個(gè)窗口小部件集合到該設(shè)備的存儲(chǔ)器里,通過(guò)如上所述的一種方法在該圖形用戶界面中創(chuàng)建多個(gè)對(duì)象,以及在該顯示上顯示該對(duì)象。在這樣一種應(yīng)用于一個(gè)接收器/解碼器的方法中,通過(guò)在一個(gè)數(shù)字電視信號(hào)內(nèi)的一個(gè)頻道中被下載,該窗口小部件集合可以被載入到該接收器/解碼器的存儲(chǔ)器中。在另一個(gè)方面,本發(fā)明提供了一種為一個(gè)應(yīng)用程序執(zhí)行設(shè)備更新一個(gè)圖形用戶界面顯示的外觀的方法,其中顯示包含如上所述的一個(gè)窗口小部件集合,其中至少一個(gè)外觀對(duì)象類被另一個(gè)外觀對(duì)象類替換。在另一個(gè)方面,本發(fā)明提供了一種更新用于數(shù)字電視信號(hào)的接收器/解碼器的一個(gè)圖形用戶界面顯示的外觀的方法,其中顯示包含如上所述、被保存在該接收器/解碼器的存儲(chǔ)器中的一個(gè)窗口小部件集合,其中至少一個(gè)替換外觀對(duì)象類在一個(gè)屬于數(shù)字電視信號(hào)一部分的頻道中被傳輸?shù)皆摻邮掌?解碼器以替換一個(gè)存儲(chǔ)的外觀對(duì)象類。本發(fā)明擴(kuò)展到相應(yīng)的裝置。特別地,本發(fā)明擴(kuò)展到被安排用來(lái)執(zhí)行一種任何前面方面的方法的一個(gè)接收器/解碼器。在另一個(gè)方面,本發(fā)明提供了一個(gè)用于實(shí)現(xiàn)一個(gè)圖形用戶界面的應(yīng)用程序執(zhí)行設(shè)備(例如,一臺(tái)計(jì)算機(jī)、一個(gè)用于一個(gè)數(shù)字電視信號(hào)的接收器/解碼器、或者另一個(gè)設(shè)備),該設(shè)備包含一個(gè)處理器、存儲(chǔ)器、以及一個(gè)用于輸出一個(gè)信號(hào)到一個(gè)顯示器的輸出端口,其中該存儲(chǔ)器具有在其中存儲(chǔ)的、用于執(zhí)行上述任一方法、或者任一上述對(duì)象、或者任一上述窗口小部件集合的方法。在任何上述情況中,該外觀對(duì)象或者外觀對(duì)象類最好定義了一個(gè)圖形對(duì)象的至少一個(gè)以下屬性(如果給出的話)如何被顯示該背景外觀,例如一個(gè)背景色;一個(gè)背景覆蓋圖,例如一個(gè)商標(biāo);該前景外觀;一個(gè)前景覆蓋圖,例如一個(gè)商標(biāo);凸起或者陰影的外觀;一個(gè)對(duì)象邊界的外觀;分配給該對(duì)象的任何焦點(diǎn)的顯示;分配給該對(duì)象的任何高亮顯示的顯示。本發(fā)明還擴(kuò)展到了一段用于執(zhí)行任何上述方法的計(jì)算機(jī)程序,并且擴(kuò)展到了一個(gè)計(jì)算機(jī)可讀介質(zhì),該介質(zhì)中存儲(chǔ)有用于執(zhí)行任何上述方法的程序。本發(fā)明還擴(kuò)展到一個(gè)應(yīng)用程序,該應(yīng)用程序用于一個(gè)被安排用來(lái)執(zhí)行一種任何在前方面的方法的接收器/解碼器。本發(fā)明還擴(kuò)展到實(shí)質(zhì)上和此處參考附圖所描述的相同的一種方法或者裝置。顯示的圖形對(duì)象的設(shè)計(jì)大多數(shù)的圖形用戶界面(GUI)顯示各種圖形對(duì)象,其中有一些圖形對(duì)象能夠被一個(gè)用戶操作(“活動(dòng)”對(duì)象)而某些不能被一個(gè)用戶操作(“靜態(tài)”對(duì)象)。更可取地是,如上所述,該顯示的圖形對(duì)象最好被設(shè)計(jì)成相輔相成以產(chǎn)生一個(gè)相關(guān)的設(shè)計(jì)方案。例如,在適當(dāng)?shù)牡胤?,該顯示的圖形對(duì)象最好共享一種主顏色、紋理和字體。此處一個(gè)設(shè)計(jì)方案被稱作該圖形對(duì)象一個(gè)“外觀”。在某些情況下,只有活動(dòng)圖形對(duì)象的外觀能夠由該用戶改變。依據(jù)本發(fā)明的一個(gè)方面,最好靜態(tài)圖形對(duì)象的外觀是可改變的。依據(jù)本發(fā)明的一個(gè)方面,最好一組圖形對(duì)象的外觀是可改變的。因此能夠獲得該顯示的圖形對(duì)象的一個(gè)相關(guān)設(shè)計(jì)。參考本發(fā)明的其它方面,在圖形對(duì)象和鏈接單元被顯示的地方,最好該圖形對(duì)象的外觀和該鏈接單元的外觀都是可改變的。更可取地是,在由該用戶選擇的外觀中,該圖形對(duì)象的外觀和該鏈接單元的外觀是相同的。以這種方式,能夠?qū)崿F(xiàn)用于圖形對(duì)象顯示鏈的一個(gè)相關(guān)外觀。在本發(fā)明的最佳方面中,該鏈的外觀獨(dú)立于其它顯示的圖形對(duì)象外觀是可選的。本發(fā)明的一個(gè)方面包含一種在一個(gè)圖形用戶界面中控制多個(gè)圖形對(duì)象的外觀的方法,本方法包含將一個(gè)外觀對(duì)象與多個(gè)圖形對(duì)象相關(guān)聯(lián)。在本發(fā)明的一個(gè)最佳實(shí)施例中,該多個(gè)圖形對(duì)象包含一個(gè)鏈接的鏈。因此更可取地是,一個(gè)特定外觀或者設(shè)計(jì)能夠作為一個(gè)整體應(yīng)用于該鏈或者鏈表。更可取地是,該外觀或者設(shè)計(jì)能夠獨(dú)立于任何應(yīng)用于其它鏈、鏈表或者圖形對(duì)象的外觀或者設(shè)計(jì),被應(yīng)用于該鏈、鏈表或者圖形對(duì)象。本發(fā)明的一個(gè)方面提供了一種顯示一組圖形對(duì)象的方法,該方法包含步驟提供用于定義多個(gè)不同的可顯示圖形對(duì)象組以及用于從多個(gè)可顯示組中選擇一組圖形對(duì)象的裝置。更可取的是,該方法包含定義一組可顯示的圖形對(duì)象,并且使一個(gè)外觀對(duì)象與該組圖形對(duì)象相關(guān)聯(lián)。依據(jù)本發(fā)明,提供了一種用于控制一組圖形對(duì)象的外觀的方法,該方法包含定義一組可顯示的圖形對(duì)象。此外提供的是一個(gè)用于控制一組圖形對(duì)象的外觀的裝置,該裝置包含用于定義一組可顯示的圖形對(duì)象的裝置。更可取地是,一組中圖形對(duì)象的外觀不同于另一組中圖形對(duì)象的外觀,例如在顏色、形狀、尺寸、紋理或模式中的一個(gè)或多個(gè)。更可取地是這組圖形對(duì)象包括用于顯示圖象對(duì)象的鏈接鏈的單元。更可取地是這組圖形對(duì)象包含靜態(tài)對(duì)象和活動(dòng)對(duì)象。因此本裝置可以包含一個(gè)圖形對(duì)象組庫(kù),更可取地是具有不同的外觀或者設(shè)計(jì)。更可取地是,來(lái)自于第一組中顯示的圖形對(duì)象在一個(gè)或多個(gè)顏色、形狀、尺寸、紋理或者模式方面不同于另一個(gè)組中顯示的圖形對(duì)象。在第一組中的圖形對(duì)象方案可以不同于在另一組中的圖形對(duì)象方案。根據(jù)本發(fā)明的一個(gè)最佳實(shí)施例,圖形對(duì)象組包含圖形對(duì)象的一個(gè)鏈接鏈。更可取地是,該鏈接鏈被顯示為在該GUI中的一個(gè)鏈接鏈。本發(fā)明這個(gè)方面的其它最佳特征在前面在標(biāo)題“顯示圖形對(duì)象”下面描述了。構(gòu)造圖形對(duì)象大多數(shù)的圖形用戶界面(GUI)包含各種圖形對(duì)象,其中一些能夠被一個(gè)用戶操作。這樣的圖形對(duì)象包含窗口、對(duì)話框和按鈕。該GUI通常包含每個(gè)圖形對(duì)象的幾種不同類型,例如該GUI可以被安排用于具有不同尺寸和/或長(zhǎng)寬比的大量對(duì)話框的顯示。其中一個(gè)GUI具有,例如兩種類型的對(duì)話框,一個(gè)的尺寸為另一個(gè)的一半,每一種類型的方框作為一個(gè)單獨(dú)對(duì)象被訂制和保存在該系統(tǒng)中。其中該GUI包含大量不同類型的對(duì)話框和/或不同類型的其它圖形對(duì)象,這能夠?qū)е孪到y(tǒng)資源的低效率使用。本發(fā)明的一個(gè)方面提供了一種在一個(gè)圖形用戶界面中控制一個(gè)圖形對(duì)象外觀的方法,該方法包含定義該圖形對(duì)象的多個(gè)圖形對(duì)象單元,供顯示該圖形對(duì)象的一個(gè)表現(xiàn)之用。本發(fā)明的一個(gè)方面提供了適宜于與其它圖形對(duì)象單元組合以形成圖形對(duì)象的一個(gè)圖形對(duì)象單元。其中該GUI包含若干個(gè)不同類型的同一個(gè)圖形對(duì)象,不同的類型將經(jīng)常具有和該對(duì)象其它類型一樣的特征。例如,不同尺寸的窗口和方框常常將具有彼此相同的邊角,不同類型的方框僅僅在該方框的邊的長(zhǎng)度上有差別。通過(guò)提供用于構(gòu)造該圖形對(duì)象的對(duì)象單元,能夠獲取各種對(duì)象的公共特征的優(yōu)點(diǎn),以便使少量的構(gòu)造塊(對(duì)象單元)能夠被用于創(chuàng)建大量不同類型的圖形對(duì)象。該圖形對(duì)象可以包含,例如,一個(gè)窗口、一個(gè)對(duì)話框、一個(gè)按鈕、一個(gè)滾動(dòng)條、一個(gè)圖標(biāo)或者其它在屏幕上的對(duì)象。該圖形對(duì)象可以是用戶能夠與它相互作用的“活動(dòng)”對(duì)象,或者是“靜態(tài)”的,例如背景的特征。本發(fā)明的一個(gè)方面提供了一個(gè)包含多個(gè)圖形對(duì)象單元的圖形對(duì)象。本發(fā)明的一個(gè)方面提供了一種在一個(gè)圖形用戶界面中顯示一個(gè)圖形對(duì)象的一個(gè)表現(xiàn)的方法,該方法包含組合多個(gè)圖形對(duì)象單元以形成該圖形對(duì)象。本發(fā)明的一個(gè)方面提供了用于在一個(gè)圖形用戶界面中形成一個(gè)圖形對(duì)象的裝置,該裝置包含用于組合多個(gè)圖形對(duì)象單元以形成該圖形對(duì)象的裝置。本發(fā)明的一個(gè)方面提供了一個(gè)用于實(shí)現(xiàn)一個(gè)圖形用戶界面的應(yīng)用程序執(zhí)行設(shè)備,該設(shè)備包含一個(gè)處理器、存儲(chǔ)器、和一個(gè)用于輸出一個(gè)信號(hào)到顯示器的輸出端口,其中該存儲(chǔ)器中存儲(chǔ)有一個(gè)用于實(shí)現(xiàn)本發(fā)明一個(gè)方面的程序。更可取地是,該應(yīng)用程序執(zhí)行設(shè)備包含一個(gè)數(shù)字電視的接收器/解碼器。本發(fā)明的一個(gè)方面提供了一段用于執(zhí)行本發(fā)明的一種方法的計(jì)算機(jī)程序。一個(gè)圖形對(duì)象的圖形對(duì)象單元可以全部是相同的,該圖形對(duì)象的尺寸和形狀由單元的數(shù)量和配置確定。更可取地是,該圖形對(duì)象包含圖形對(duì)象單元的多個(gè)不同集合。更可取地是,該方法方面包含定義該圖形對(duì)象的圖形對(duì)象單元的多個(gè)不同集合。一個(gè)圖形對(duì)象單元集合可以包含,例如該圖形對(duì)象的角、側(cè)面或者邊緣部分。例如,在該圖形對(duì)象是一個(gè)對(duì)話框的地方,用于組成該方框的圖形對(duì)象集合可以包含邊角單元和邊緣單元。例如,一個(gè)長(zhǎng)方形方框可以包含四個(gè)邊角單元和四個(gè)將這些邊角單元鏈接在一起的邊緣單元。在每個(gè)單元集合內(nèi),可能有不同類型的單元,例如這些單元具有不同的尺寸、形狀、方向和/或顏色。因此該方框的實(shí)例可以包含四種類型的邊角單元和兩種類型的邊緣單元。一個(gè)按鈕可以包含兩個(gè)側(cè)面單元和一個(gè)取決于該圖形對(duì)象將是的按鈕類型而選擇的中心單元。例如,一個(gè)PLAY按鈕可以具有一個(gè)包含一個(gè)箭頭符號(hào)的中心單元,一個(gè)STOP按鈕可以具有一個(gè)包含一個(gè)正方形符號(hào)的中心單元。該P(yáng)LAY按鈕的側(cè)面單元可以和該STOP按鈕的側(cè)面單元相同。一個(gè)對(duì)象單元庫(kù)還可以用來(lái)形成具有相對(duì)復(fù)雜形狀的圖形對(duì)象。例如,各種復(fù)雜矩陣的對(duì)話欄能夠容易地從包含方框邊緣、邊角和交點(diǎn)的對(duì)象單元的選擇中形成。在該發(fā)明的一個(gè)最佳實(shí)施例中,該圖形對(duì)象包含至少兩個(gè)“邊角”單元,其定義了該圖形對(duì)象的“邊角”或者“側(cè)面”;以及多個(gè)填充單元,其中能夠改變?cè)撎畛鋯卧臄?shù)量以改變?cè)搱D形對(duì)象的尺寸和/或形狀。因此,一個(gè)文本框最好具有四個(gè)邊角單元,且多個(gè)填充單元用來(lái)填充在該邊角單元之間的方框以創(chuàng)建期望尺寸的方框。該填充單元可以全部是相同的。在下面的實(shí)施例中,使用了不同類型的填充單元,例如中心單元以及四種類型的邊緣單元,來(lái)構(gòu)造方框和窗口。更可取地是,重復(fù)該填充單元來(lái)構(gòu)造所需尺寸與形狀的圖形對(duì)象。更可取地是,該方法包含定義了一個(gè)固定單元集合和一個(gè)可重復(fù)單元集合。本發(fā)明還提供了一種形成一個(gè)圖形對(duì)象的方法,該方法包含提供一個(gè)固定單元集合和一個(gè)可重復(fù)單元集合。例如,對(duì)于一個(gè)窗口或者方框,該固定單元集合可以包含用于該方框的邊角和任何裝飾,那些固定單元為所有那個(gè)類別、任何尺寸的方框進(jìn)行固定;該可重復(fù)單元集合用來(lái)構(gòu)造所需尺寸與形狀的對(duì)象。更可取地是,該圖形對(duì)象的每個(gè)實(shí)例僅僅需要每種固定單元的一個(gè)。因此該可重復(fù)單元集合可以包含用于填充在該邊角之間的邊緣段和中心部分。更可取地是,選擇該可重復(fù)單元的尺寸以便最小化用于一個(gè)特定對(duì)象的可重復(fù)單元類型的數(shù)量。例如,更可取地是,考慮到該圖形對(duì)象所需的最小尺寸,來(lái)選擇該可重復(fù)單元的尺寸。因此能夠減少構(gòu)造每個(gè)圖形對(duì)象所需要的、在該“成套設(shè)備”的存儲(chǔ)介質(zhì)中占用的存儲(chǔ)器。本發(fā)明還提供了一套用于一個(gè)圖形對(duì)象的單元,該套包含一個(gè)固定單元集合和一個(gè)可重復(fù)單元集合。本發(fā)明還提供了一種產(chǎn)生一套用于一個(gè)圖形對(duì)象的單元的方法,該方法包含定義一個(gè)為該圖形對(duì)象的實(shí)例所共用的固定單元集合,以及進(jìn)一步定義一個(gè)可重復(fù)單元集合。一個(gè)對(duì)象單元的尺寸可以是可調(diào)整的。因此需要更少類型的對(duì)象單元來(lái)創(chuàng)建大范圍的對(duì)象。對(duì)于對(duì)話框的范例,邊緣單元的長(zhǎng)度可以是可調(diào)整的。以這種方式,僅僅使用四個(gè)邊角單元和兩種類型的邊緣單元(在這種情況下是可調(diào)整長(zhǎng)度的垂直邊緣單元和可調(diào)整長(zhǎng)度的水平邊緣單元),就能夠創(chuàng)建大量不同的方框形狀。本發(fā)明進(jìn)一步提供了一種在一個(gè)圖形用戶界面中顯示一個(gè)圖形對(duì)象的一個(gè)表現(xiàn)的方法,該方法包含組合多個(gè)圖形對(duì)象單元。更可取地是,該方法包含顯示一個(gè)固定單元集合和顯示多個(gè)可重復(fù)單元。本發(fā)明進(jìn)一步提供了裝置用于在一個(gè)圖形用戶界面中控制一個(gè)圖形對(duì)象的外觀,該裝置包含用于定義該圖形對(duì)象的多個(gè)圖形對(duì)象單元、供顯示該圖形對(duì)象的一個(gè)表現(xiàn)時(shí)使用的裝置。本發(fā)明進(jìn)一步提供了一套在顯示一個(gè)圖形對(duì)象中使用的單元,其包含一個(gè)為該圖形對(duì)象的實(shí)例所共用的固定單元集合,以及一個(gè)可重復(fù)單元集合。本發(fā)明進(jìn)一步提供了一種用于在一個(gè)圖形用戶界面中顯示一個(gè)圖形對(duì)象的一個(gè)表現(xiàn)的裝置、該裝置包含用于組合多個(gè)圖形對(duì)象單元的裝置。本發(fā)明在本發(fā)明到寬銀幕電視的應(yīng)用中具有特別的優(yōu)點(diǎn);和用于一個(gè)標(biāo)準(zhǔn)電視的圖形對(duì)象相比,通過(guò)改變?cè)搱D形對(duì)象單元的數(shù)量或者尺寸,能夠容易地調(diào)整該圖形對(duì)象的長(zhǎng)寬比。本發(fā)明還允許容易地進(jìn)行在該圖形對(duì)象中的變化例如修飾和裝飾。一個(gè)對(duì)象單元可以包含一個(gè)要被包含在對(duì)話框上的一個(gè)裝飾。使用本發(fā)明,能夠創(chuàng)建具有不同或者相同裝飾的許多不同的對(duì)象。工具提示和菜單鏈圖形用戶界面(GUI)通常包含各種圖形對(duì)象,其中一些圖形對(duì)象能夠由一個(gè)用戶操作(“活動(dòng)”對(duì)象),而其它不能被用戶操作(“靜態(tài)”對(duì)象)。該圖形對(duì)象,特別是活動(dòng)對(duì)象,常常通過(guò)可能包含說(shuō)明該圖形對(duì)象是什么的圖片或者圖示的圖標(biāo),向該用戶進(jìn)行標(biāo)識(shí)。例如,用于執(zhí)行一個(gè)PLAY功能的按鈕可能包含一個(gè)包含一個(gè)箭頭的圖標(biāo)。這樣的圖標(biāo)能夠提高該圖形對(duì)象的視覺(jué)外觀,而且有助于容易地導(dǎo)航該顯示。特別地,在屏幕空間非常珍貴的地方,圖標(biāo)是尤其有用的。一個(gè)示例是一個(gè)用于數(shù)字電視的一個(gè)接收器/解碼器的GUI,其中該圖標(biāo)是在屏幕上的圖標(biāo),其供該電視操作之用和/或用于其它在屏幕上的功能、例如網(wǎng)絡(luò)瀏覽。一個(gè)標(biāo)準(zhǔn)電視屏幕的分辨度是相對(duì)低的,而且為了易讀,任何在該屏幕上顯示的數(shù)據(jù)都被要求是相對(duì)大的。此外,在用戶使用一臺(tái)電視的時(shí)候,將比在他們使用例如一臺(tái)個(gè)人計(jì)算機(jī)時(shí)坐得離屏幕更遠(yuǎn)。因此任何在該屏幕上顯示的圖標(biāo)和文本都被要求是相對(duì)大的。這對(duì)同時(shí)能夠顯示在該屏幕上的信息數(shù)量施加了限制。因此圖標(biāo)的使用是尤其有利的。做出努力以選擇清楚描述該圖形對(duì)象做什么的圖標(biāo)。然而,某些用戶可能不熟悉使用的圖標(biāo)以及可能不確定該特征表示什么。然而,讓圖形對(duì)象由一個(gè)文本說(shuō)明在該屏幕上進(jìn)行標(biāo)識(shí)將是不合需要的,因?yàn)樵撈聊豢赡茏兊锰靵y了。本發(fā)明的一個(gè)方面提供了一種在一個(gè)GUI中控制一個(gè)圖形對(duì)象外觀的方法,該方法包含定義一個(gè)圖形對(duì)象的第一可顯示表現(xiàn),以及進(jìn)一步定義該圖形對(duì)象的第二可顯示表現(xiàn),其中第二個(gè)表現(xiàn)可緊鄰第一個(gè)表現(xiàn)顯示。本發(fā)明的一個(gè)方面提供了一種在一個(gè)圖形用戶界面上顯示一個(gè)圖形對(duì)象的方法,該方法包含顯示一個(gè)圖形對(duì)象的第一表現(xiàn),以及緊鄰第一個(gè)表現(xiàn)顯示該圖形對(duì)象的第二表現(xiàn)。第一個(gè)表現(xiàn)最好包含一個(gè)圖標(biāo)。最好第二個(gè)表現(xiàn)被有選擇地顯示。更可取地是,第一個(gè)表現(xiàn)是活動(dòng)的,以便激活或者選擇第一個(gè)表現(xiàn),來(lái)執(zhí)行該圖形對(duì)象的一個(gè)動(dòng)作。例如第一個(gè)表現(xiàn)可以是一個(gè)按鈕。更可取地是,第二個(gè)表現(xiàn)是該圖形對(duì)象的一個(gè)文本描述,例如指示該對(duì)象功能的一個(gè)詞。第二個(gè)表現(xiàn)可以是或者可以不是活動(dòng)的。更可取地是,第二個(gè)表現(xiàn)僅僅是有選擇可顯示的。因此,更可取地,該圖形對(duì)象的第二個(gè)表現(xiàn)不是始終在該屏幕上顯示,只有當(dāng)對(duì)該用戶有幫助時(shí)才顯示。更可取地是,通過(guò)聚焦在第一個(gè)表現(xiàn)上,可顯示第二個(gè)表現(xiàn)。例如僅僅在該用戶。例如通過(guò)使用光標(biāo)鍵移動(dòng)一個(gè)焦點(diǎn)到第一個(gè)表現(xiàn)或者通過(guò)移動(dòng)一個(gè)鼠標(biāo)指針指向它、已經(jīng)聚焦在第一個(gè)表現(xiàn)上時(shí),才可顯示第二個(gè)表現(xiàn)。更可取地是,該圖形對(duì)象的文本表示顯示在一個(gè)框架內(nèi)、例如在一個(gè)方框或者一個(gè)窗口內(nèi)。更可取地是,該框架的設(shè)計(jì)和顯示的其它圖形對(duì)象的設(shè)計(jì),尤其是同一個(gè)圖形對(duì)象的其它表現(xiàn),相補(bǔ)充或者相匹配。因此能夠獲得一個(gè)相關(guān)的設(shè)計(jì)方案。更可取地是,例如通過(guò)把該方框或者窗口鏈接到第一個(gè)表現(xiàn),第二個(gè)表現(xiàn)被鏈接到第一個(gè)表現(xiàn)。因此該用戶能夠更清楚地看到該文本描述確切應(yīng)用到什么。更可取地是,該方法包含定義一個(gè)用于鏈接第一個(gè)表現(xiàn)和第二個(gè)表現(xiàn)的鏈接單元。更可取地是,該方法包含將一個(gè)外觀對(duì)象與第一個(gè)表現(xiàn)、第二個(gè)表現(xiàn)、以及最好是該鏈接單元相關(guān)聯(lián)。因此更可取地是,第一個(gè)和第二個(gè)表現(xiàn)以及鏈接單元共享例如顏色、紋理、和形狀特征,以給出一個(gè)協(xié)調(diào)的外觀。該外觀對(duì)象可以包含多個(gè)單獨(dú)的外觀對(duì)象,從而能夠獲得一個(gè)協(xié)調(diào)的外觀用于各種表現(xiàn)和鏈接單元。本發(fā)明進(jìn)一步提供了一種顯示一個(gè)圖形對(duì)象的方法,該方法包含顯示該圖形對(duì)象的一個(gè)第一表現(xiàn),顯示該圖形對(duì)象的一個(gè)第二表現(xiàn),以及顯示一個(gè)把第一個(gè)表現(xiàn)和第二個(gè)表現(xiàn)鏈接起來(lái)的鏈接單元。本發(fā)明提供了一種用于在一個(gè)GUI中控制一個(gè)圖形對(duì)象外觀的裝置,該裝置包含用于定義一個(gè)圖形對(duì)象的第一個(gè)可顯示表現(xiàn)的裝置,和用于定義該圖形對(duì)象的第二可顯示表現(xiàn)的裝置,以及用于緊鄰第一個(gè)表現(xiàn)顯示第二個(gè)表現(xiàn)的裝置。更可取地是,該裝置包含用于最好當(dāng)檢測(cè)到在第一個(gè)表現(xiàn)上的一個(gè)焦點(diǎn)時(shí)有選擇地顯示第二個(gè)表現(xiàn)的裝置。依據(jù)本發(fā)明,還提供了用于顯示一個(gè)圖形對(duì)象的裝置,該裝置包含用于顯示該圖形對(duì)象的第一個(gè)表現(xiàn)的裝置,用于顯示該圖形對(duì)象的一個(gè)第二個(gè)表現(xiàn)的裝置,以及用于顯示一個(gè)把第一個(gè)表現(xiàn)和第二個(gè)表現(xiàn)鏈接起來(lái)的鏈接單元的裝置。在如下所述、該圖形對(duì)象在一個(gè)鏈或者鏈接表中的地方,最好第二個(gè)表現(xiàn)是該顯示的鏈或者鏈表的一部分。更可取地是,該方法包含定義圖形對(duì)象的一個(gè)接鏈,第一個(gè)以及第二個(gè)表現(xiàn)可被顯示為圖形對(duì)象表現(xiàn)鏈的鏈接。更可取地是,第二個(gè)表現(xiàn)在一個(gè)子鏈中。更可取地是該子鏈從第一個(gè)表現(xiàn)中分支出來(lái)。本發(fā)明的一個(gè)方面提供了一個(gè)包含一個(gè)圖形對(duì)象的顯示,該圖形對(duì)象包含一個(gè)圖形對(duì)象的第一個(gè)表現(xiàn),以及緊鄰該圖形對(duì)象的第一個(gè)表現(xiàn)、最好是有選擇地顯示的該圖形對(duì)象的第二表現(xiàn)。本發(fā)明的一個(gè)方面提供了用于在一個(gè)GUI中控制一個(gè)圖形對(duì)象外觀的裝置,該裝置包含用于定義該圖形對(duì)象的第一個(gè)表現(xiàn)的裝置以及用于定義該圖形對(duì)象的第二個(gè)表現(xiàn)的裝置,其中第二個(gè)表現(xiàn)緊鄰第一個(gè)表現(xiàn)顯示。本發(fā)明的一個(gè)方面提供了一個(gè)用于實(shí)現(xiàn)一個(gè)圖形用戶界面的應(yīng)用程序執(zhí)行設(shè)備,該設(shè)備包含一個(gè)處理器、存儲(chǔ)器、和一個(gè)用于輸出一個(gè)信號(hào)到顯示器的輸出端口,其中該存儲(chǔ)器中存儲(chǔ)有一段用于實(shí)現(xiàn)本發(fā)明一個(gè)方面的程序。更可取地是,該應(yīng)用程序執(zhí)行設(shè)備包含一個(gè)數(shù)字電視的接收器/解碼器。還提供了用于執(zhí)行本發(fā)明的一個(gè)方法的一段計(jì)算機(jī)程序。對(duì)于計(jì)算機(jī)及其它裝置的GUI,通常向用戶提供一個(gè)鼠標(biāo)或者其它指針設(shè)備用于導(dǎo)航該顯示以及操作所顯示的圖形對(duì)象。然而,在某些應(yīng)用中,例如在電視接收器/解碼器裝置以及移動(dòng)電話以及個(gè)人管理器中,該用戶可能不具有一個(gè)指針設(shè)備。例如,該用戶可能使用一個(gè)光標(biāo)小鍵盤來(lái)導(dǎo)航該顯示。這樣的光標(biāo)小鍵盤通常包含上、下、左和右鍵。這能夠困惑僅僅使用那些鍵來(lái)導(dǎo)航該顯示的用戶,尤其是在在該屏幕上顯示的圖形對(duì)象不是沿明顯的線和/或列布置的地方。本發(fā)明的一個(gè)方面提供了一種在一個(gè)圖形用戶界面中控制圖形對(duì)象外觀的方法,該方法包含定義一個(gè)圖形對(duì)象鏈接鏈。本發(fā)明的一個(gè)方面提供了一種在一個(gè)圖形用戶界面中控制一個(gè)圖形對(duì)象外觀的方法,該方法包含定義一個(gè)第一圖形對(duì)象、定義一個(gè)第二圖形對(duì)象以及定義一個(gè)用于鏈接圖形對(duì)象的鏈接單元。本發(fā)明的一個(gè)方面提供了用于在一個(gè)GUI中顯示圖形對(duì)象的裝置,該裝置包含用于顯示多個(gè)圖形對(duì)象單元的裝置以及用于顯示在圖形對(duì)象之間的鏈接單元的裝置。本發(fā)明的一個(gè)方面提供了一個(gè)圖形對(duì)象以及一個(gè)與該圖形對(duì)象相關(guān)聯(lián)的鏈接單元。本發(fā)明的一個(gè)方面提供了一種在一個(gè)圖形用戶界面(GUI)中顯示一個(gè)圖形對(duì)象表現(xiàn)的方法,該方法包含顯示圖形對(duì)象的表現(xiàn),以及顯示一個(gè)鏈接單元的一個(gè)表現(xiàn),其中該鏈接單元用于說(shuō)明在圖形對(duì)象之間的一個(gè)鏈接。更可取地是,顯示的鏈接單元從一個(gè)圖形對(duì)象延伸到另一個(gè)。更可取地是,該方法包含顯示圖形對(duì)象表現(xiàn)的一個(gè)鏈接鏈。更可取地是,該方法進(jìn)一步包含定義一個(gè)圖形對(duì)象子鏈,該子鏈包含來(lái)自于一個(gè)鏈接鏈的分支,更可取地是該子鏈?zhǔn)怯羞x擇可顯示的。更可取地是,該方法進(jìn)一步包含在一個(gè)子鏈中顯示圖形對(duì)象,該子鏈最好包含該鏈接鏈的一個(gè)分支,并且更可取地是,通過(guò)聚焦在在該鏈接鏈中的一個(gè)圖形對(duì)象上可顯示該子鏈。因此可以僅僅當(dāng)該用戶感興趣時(shí),顯示該子鏈,因此減少了顯示的雜亂。本發(fā)明的一個(gè)方面提供了一種在一個(gè)GUI中顯示圖形對(duì)象的方法,該方法包含作為一個(gè)鏈接表顯示多個(gè)圖形對(duì)象。因此,本發(fā)明的一個(gè)方面提供了能夠使用一個(gè)光標(biāo)小鍵盤導(dǎo)航的圖形對(duì)象。更可取地是,該顯示的圖形對(duì)象包含圖標(biāo)。更可取地是,在該圖形對(duì)象之間的鏈接是可顯示的。該顯示的鏈接單元可以從一個(gè)圖形對(duì)象延伸到另一個(gè)以指示在它們之間的一個(gè)路徑。這在用戶使用光標(biāo)鍵而不是一個(gè)鼠標(biāo)來(lái)導(dǎo)航該顯示的地方是特別有利的。然而,在某些情況下,該鏈接單元可能不延伸貫穿在圖形對(duì)象之間的整個(gè)距離,但是仍然向該用戶提供了在該圖形對(duì)象之間的一個(gè)路徑的指示。例如,該鏈接單元可以包含一個(gè)在一個(gè)圖標(biāo)上的箭頭,以指向在該路徑中的下一個(gè)圖標(biāo)。本發(fā)明的一個(gè)方面提供了一個(gè)圖形對(duì)象鏈??梢詾槊總€(gè)圖形對(duì)象提供多于一個(gè)的鏈接單元,以指示來(lái)自于那個(gè)對(duì)象的導(dǎo)航路徑的一個(gè)選擇。因此能夠形成圖形對(duì)象和鏈接單元的一個(gè)分支網(wǎng)絡(luò)或樹結(jié)構(gòu),該用戶即使沒(méi)有使用一個(gè)鼠標(biāo)也可以容易地導(dǎo)航該網(wǎng)絡(luò)。本發(fā)明的一個(gè)方面還提供了一個(gè)圖形對(duì)象網(wǎng)絡(luò)。本發(fā)明的一個(gè)方面提供了一個(gè)圖形對(duì)象主鏈以及一個(gè)從該主鏈中分支出的圖形對(duì)象子鏈。更可取地是,該圖形對(duì)象的表現(xiàn)是按鈕(在這里使用的術(shù)語(yǔ)“按鈕”更可取地是,被廣泛地解釋為涉及任何當(dāng)被選擇時(shí)執(zhí)行一個(gè)功能的圖形對(duì)象)。更可取地是,多個(gè)子鏈?zhǔn)强娠@示的。更可取地是,通過(guò)選擇該主鏈的一個(gè)圖形對(duì)象可顯示一個(gè)子鏈。更可取地是該子鏈實(shí)質(zhì)上垂直于該主鏈延伸出來(lái)。根據(jù)本發(fā)明的另一個(gè)方面,在緊鄰該圖形對(duì)象可顯示該圖形對(duì)象的第二個(gè)表現(xiàn)的情況中,更可取地是,該圖形對(duì)象的第二個(gè)表現(xiàn)被顯示為該圖形對(duì)象第一個(gè)表現(xiàn)的子鏈的一部分。因此,在該圖形對(duì)象的第二個(gè)表現(xiàn)是一個(gè)包含該圖形對(duì)象一個(gè)描述的文本框的情況下,更可取地是,該子鏈將在該子鏈中包含文本框和描述。這能夠?qū)υ撚脩粲兴鶐椭?。依?jù)本發(fā)明的一個(gè)方面,提供了用于顯示一個(gè)圖形對(duì)象的裝置,該裝置包含用于顯示該圖形對(duì)象的第一個(gè)表現(xiàn)的裝置,用于顯示該圖形對(duì)象的一個(gè)第二個(gè)表現(xiàn)的裝置,以及用于顯示一個(gè)把第一個(gè)表現(xiàn)和第二個(gè)表現(xiàn)鏈接起來(lái)的鏈接單元的裝置。還提供了一個(gè)裝置用于在一個(gè)圖形用戶界面中控制圖形對(duì)象的外觀,該裝置包含用于定義一個(gè)圖形對(duì)象鏈接鏈的裝置。還提供了用于在一個(gè)圖形用戶界面中控制一個(gè)圖形對(duì)象外觀的裝置,該裝置包含用于定義一個(gè)第一圖形對(duì)象、定義一個(gè)第二圖形對(duì)象以及定義一個(gè)用于鏈接圖形對(duì)象的鏈接單元的裝置。本發(fā)明還提供了裝置用于在一個(gè)圖形用戶界面中顯示一個(gè)圖形對(duì)象的外觀,該裝置包含用于顯示該圖形對(duì)象的表現(xiàn)的裝置,以及用于顯示一個(gè)鏈接單元的表現(xiàn)的裝置,該鏈接單元用于說(shuō)明在圖形對(duì)象之間的一個(gè)鏈接。本發(fā)明還提供了在一個(gè)圖形用戶界面中的一個(gè)對(duì)象,包含一個(gè)圖形對(duì)象的第一個(gè)表現(xiàn)和一個(gè)圖形對(duì)象的第二個(gè)表現(xiàn),以及一個(gè)鏈接第一個(gè)和第二個(gè)表現(xiàn)的鏈接單元;以及在一個(gè)圖形用戶界面中的一個(gè)對(duì)象,包含圖形對(duì)象的一個(gè)鏈接鏈;以及在一個(gè)圖形用戶界面中的一個(gè)對(duì)象,包含第一個(gè)圖形對(duì)象、第二個(gè)圖形對(duì)象以及鏈接第一個(gè)和第二個(gè)圖形對(duì)象的一個(gè)鏈接單元。更可取地是,該對(duì)象進(jìn)一步包含一個(gè)圖形對(duì)象子鏈,該子鏈包含來(lái)自于一個(gè)鏈接鏈的分支,更可取地是該子鏈可有選擇地顯示。本發(fā)明的一個(gè)方面包含一個(gè)用于實(shí)現(xiàn)一個(gè)圖形用戶界面的應(yīng)用程序執(zhí)行設(shè)備,該設(shè)備包含一個(gè)處理器、存儲(chǔ)器、和一個(gè)用于輸出一個(gè)信號(hào)到顯示器的輸出端口,其中該存儲(chǔ)器中存儲(chǔ)有一段用于執(zhí)行本發(fā)明一個(gè)方面的程序。本發(fā)明的該方面還包含一段用于執(zhí)行本發(fā)明的一個(gè)方法的計(jì)算機(jī)程序。頭尾相接的觸發(fā)器大多數(shù)的圖形用戶界面(GUI)包含各種圖形對(duì)象,其中一些能夠被一個(gè)用戶操作。這樣的圖形對(duì)象經(jīng)常被顯示為圖標(biāo),這些圖標(biāo)通常包含說(shuō)明該圖形對(duì)象是什么的圖片或者圖示說(shuō)明。例如,一個(gè)用于執(zhí)行一個(gè)PLAY功能的對(duì)象可以被顯示為一個(gè)包含一個(gè)箭頭的圖標(biāo)。一個(gè)用于實(shí)施印刷的對(duì)象可以包含一個(gè)打印機(jī)的圖示。這樣的圖標(biāo)能夠提高所顯示圖形對(duì)象的視覺(jué)外觀,以及有助于容易地導(dǎo)航該GUI。做出努力以選擇清楚描述該圖形對(duì)象做什么的圖標(biāo)。使用了許多“標(biāo)準(zhǔn)”圖標(biāo),而且這些圖標(biāo)通??杀徽J(rèn)出是描述“向前”、“后退”、“播放”和“停止”的圖標(biāo)。然而,某些用戶可能不熟悉使用的圖標(biāo)而且將不確定該特征表示什么。本發(fā)明的一個(gè)方面提供了一個(gè)具有顯示的一個(gè)特征的圖形對(duì)象,其中該特征以多種形式顯示;本發(fā)明的一個(gè)方面還提供了用于改變?cè)撎卣鞅伙@示的形式的裝置。更可取地是,該特征被顯示的一個(gè)形式是一個(gè)圖標(biāo)。例如一個(gè)PLAY按鈕可以是一個(gè)箭頭的形式。本發(fā)明的一個(gè)方面提供了一種在一個(gè)GUI中控制一個(gè)圖形對(duì)象外觀的方法,該方法包含定義該圖形對(duì)象的第一個(gè)表現(xiàn)以及該圖形對(duì)象的第二個(gè)表現(xiàn),第一個(gè)和第二個(gè)表現(xiàn)被有選擇地顯示,更可取地是可循環(huán)地顯示。本發(fā)明的一個(gè)方面提供了一種在一個(gè)GUI中顯示一個(gè)圖形對(duì)象的方法,該方法包含顯示圖形圖形對(duì)象的第一表現(xiàn)以及隨后顯示該圖形對(duì)象的第二表現(xiàn)。更可取地是,該圖形對(duì)象的第一個(gè)表現(xiàn)包含一個(gè)圖標(biāo)。更可取地是,該圖形對(duì)象的第二個(gè)表現(xiàn)包含該圖形對(duì)象的一個(gè)文本描述。更可取地是,該圖形對(duì)象的顯示在第一個(gè)表現(xiàn)和第二個(gè)表現(xiàn)之間循環(huán)。本發(fā)明的一個(gè)方面提供了用于在一個(gè)GUI中控制一個(gè)圖形對(duì)象外觀的裝置,該裝置包含用于定義該圖形對(duì)象的第一個(gè)表現(xiàn)的裝置以及用于定義該圖形對(duì)象的第二個(gè)表現(xiàn)的裝置。本發(fā)明的一個(gè)方面提供了用于實(shí)現(xiàn)一個(gè)圖形用戶界面的應(yīng)用程序執(zhí)行設(shè)備,該設(shè)備提供一個(gè)處理器、存儲(chǔ)器、和一個(gè)用于輸出一個(gè)信號(hào)到顯示器的輸出端口,其中該存儲(chǔ)器中存儲(chǔ)有一段用于執(zhí)行本發(fā)明一個(gè)方面的程序。更可取地是,該應(yīng)用程序執(zhí)行設(shè)備包含一個(gè)數(shù)字電視的接收器/解碼器。還提供了用于執(zhí)行本發(fā)明的一個(gè)方法的一段計(jì)算機(jī)程序。可以被顯示的不同表現(xiàn)包含,例如,一個(gè)圖標(biāo)和該特征的一個(gè)文本描述。因此一個(gè)PLAY圖標(biāo)(例如一個(gè)箭頭的說(shuō)明)可以同時(shí)被顯示為單詞“播放”。因此能夠獲得使用該圖標(biāo)的視覺(jué)及其它好處,同時(shí)確保用戶從該文本描述中知道該圖標(biāo)的意思。通過(guò)提供該圖形對(duì)象的不同表現(xiàn),能夠提高該GUI的圖像外觀,而且這些不同的顯示不會(huì)弄亂該用戶的可視區(qū)域。在本發(fā)明的第一個(gè)實(shí)施例中,要被顯示的、該圖形對(duì)象的表現(xiàn)能夠由該用戶設(shè)置。例如,該用戶可能熟悉使用的圖標(biāo),而不需要該圖標(biāo)的一個(gè)文本說(shuō)明。在這種情況下他可以選擇僅僅顯示圖標(biāo)。在本發(fā)明的第二個(gè)實(shí)施例中,通過(guò)選擇或者聚焦(例如高亮顯示)在該顯示的表現(xiàn)上,顯示的表現(xiàn)能夠由該用戶改變。例如,如果該圖形對(duì)象的表現(xiàn)被設(shè)置為“播放”圖標(biāo),通過(guò)聚焦在第一個(gè)表現(xiàn)上,例如高亮顯示或者選擇第一個(gè)表現(xiàn),用戶能夠把該“播放”圖標(biāo)改變?yōu)槲谋尽安シ拧薄T诒景l(fā)明的第三個(gè)實(shí)施例中,不用該用戶的介入,該圖形對(duì)象的顯示就會(huì)在不同表現(xiàn)之間進(jìn)行切換。例如,能夠設(shè)置該參數(shù)選擇,以便顯示的圖形對(duì)象在兩種表現(xiàn)類型之間循環(huán)。在一個(gè)最佳實(shí)施例中,該顯示在圖標(biāo)和文字描述之間循環(huán)。循環(huán)時(shí)間可以是可調(diào)整的。循環(huán)時(shí)間的一個(gè)示例是大約2秒。在本發(fā)明的一個(gè)實(shí)施例中,當(dāng)顯示一個(gè)表現(xiàn)時(shí)啟動(dòng)一個(gè)計(jì)時(shí)器;當(dāng)該計(jì)時(shí)器達(dá)到一個(gè)預(yù)定值時(shí),改變?cè)摫憩F(xiàn)。表現(xiàn)的改變可以直接從一個(gè)表現(xiàn)變到另一個(gè),例如從圖標(biāo)變到文本描述,或者可以包含表現(xiàn)的一個(gè)序列。例如,表現(xiàn)的序列可以顯示從一個(gè)表現(xiàn)到另一個(gè)表現(xiàn)的順序改變。在一個(gè)實(shí)施例中,表現(xiàn)的序列給出這樣的效果,即這兩個(gè)表現(xiàn)在一個(gè)旋轉(zhuǎn)硬幣的兩個(gè)面上。本發(fā)明進(jìn)一步提供了一種用于在一個(gè)GUI中控制一個(gè)圖形對(duì)象外觀的裝置,該裝置包含用于定義該圖形對(duì)象的第一個(gè)表現(xiàn)和該圖形對(duì)象第二個(gè)表現(xiàn)的裝置,以及用于有選擇地顯示第一個(gè)和第二個(gè)表現(xiàn)的裝置,以及最好包含用于循環(huán)地顯示該第一個(gè)和第二個(gè)表現(xiàn)的裝置。還提供了用于在一個(gè)GUI中顯示一個(gè)圖形對(duì)象的一個(gè)表現(xiàn)的裝置,該裝置包含用于顯示該圖形對(duì)象的第一個(gè)表現(xiàn)的裝置,以及用于隨后顯示該圖形對(duì)象的第二個(gè)表現(xiàn)的裝置。更可取地是,該裝置進(jìn)一步包含用于在顯示第一個(gè)和第二個(gè)表現(xiàn)之間顯示一個(gè)表現(xiàn)序列的裝置。本發(fā)明進(jìn)一步提供了一個(gè)在一個(gè)GUI中的對(duì)象,包含該圖形對(duì)象的第一個(gè)表現(xiàn)以及該圖形對(duì)象的第二個(gè)表現(xiàn),第一個(gè)和第二個(gè)表現(xiàn)被有選擇地顯示,更可取地是被循環(huán)顯示。在屏幕上的鍵盤具有數(shù)字小鍵盤的設(shè)備被越來(lái)越多地使用來(lái)執(zhí)行任務(wù),其中這些任務(wù)涉及使用該小鍵盤寫入包含文本的數(shù)據(jù)。例如,移動(dòng)電話被用來(lái)輸入信息到電話存儲(chǔ)器里,例如輸入姓名到該電話中的電話簿里,或者發(fā)送文本消息。其它的示例包含,例如當(dāng)使用一個(gè)具有接收器/解碼器的電視訪問(wèn)國(guó)際互鏈網(wǎng)時(shí),用于輸入文本到一個(gè)電視屏幕上的電視遙控器。這樣的設(shè)備通常僅僅具有對(duì)應(yīng)于每一數(shù)字0到9鍵的數(shù)字小鍵盤,而且可能具有一些其它的鍵,例如#和*。為了能夠輸入文本,至少需要26個(gè)附加鍵用于字母表的字母,而且在需要大小寫字母、標(biāo)點(diǎn)與符號(hào)以及重音字母的地方需要更多的鍵功能。在已知的用于文本輸入的小鍵盤中,該小鍵盤的每個(gè)鍵都被分配了若干個(gè)功能,而且用戶通過(guò)按壓該鍵若干次循環(huán)遍歷可用的功能,不同的功能通??稍谝粋€(gè)顯示屏上看見(jiàn)。當(dāng)該用戶到達(dá)該鍵的期望功能時(shí),通常通過(guò)按壓一個(gè)“選擇”鍵或者通過(guò)移動(dòng)該顯示光標(biāo),選擇該功能。將可以理解在一全套功能可以得到的地方,小鍵盤的每個(gè)鍵必然要涉及幾個(gè)不同的功能。例如,一個(gè)小鍵盤的“2”鍵可以包含以下功能A,B,C,a,b,c,2,和而且可以進(jìn)一步包含符號(hào)功能。每當(dāng)需要一個(gè)特定字母、數(shù)字或符號(hào)時(shí),該鍵不得不被按壓若干次。這顯然能夠是費(fèi)時(shí)和低效率的。此外,設(shè)計(jì)限制和鍵的實(shí)際尺寸通常指示不是所有的、能夠由一個(gè)特定鍵訪問(wèn)的字母和符號(hào)都能夠向該用戶顯示。因此,如果該用戶希望輸入一個(gè)特定的字母或符號(hào),他常常不得不反復(fù)試驗(yàn)使用以發(fā)現(xiàn)激活它的鍵。用于某些型號(hào)移動(dòng)電話的一個(gè)解決方案是包含一個(gè)QWERTY鍵盤,但是顯然這在期望一個(gè)小鍵盤的地方不是理想的;該鍵必須保持足夠大以用于使用。本發(fā)明的一個(gè)方面提供了一個(gè)具有用于執(zhí)行功能的鍵的小鍵盤,每個(gè)鍵都包含一個(gè)功能選項(xiàng),其中該鍵的功能選項(xiàng)是可改變的。在本發(fā)明的一個(gè)實(shí)施例中,每個(gè)鍵每次僅僅具有一個(gè)功能,這樣該鍵僅僅需要被按壓一次以執(zhí)行那個(gè)功能。通過(guò)提供鍵的功能選項(xiàng)是可改變的,仍然有可能使用該小鍵盤執(zhí)行比有多個(gè)鍵更多的功能,但是能夠提高使用效率。更可取地是,一組選項(xiàng)被布置為用于該小鍵盤的一個(gè)模板,該模板是可改變的。例如,如果該小鍵盤將在一個(gè)僅僅鍵入數(shù)字的任務(wù)中使用,如果對(duì)于每個(gè)要被鍵入的數(shù)字,用戶不得不滾動(dòng)3個(gè)或更多字母,這將是低效率的。通過(guò)改變?cè)撔℃I盤所有鍵的選項(xiàng)到“數(shù)字”,一個(gè)鍵僅僅需要被該用戶按壓一次以鍵入所需的數(shù)字。類似地,如果該用戶希望輸入大寫,則“大寫”模板能夠被應(yīng)用于該小鍵盤。因此只有大寫字母將被包含在用于該鍵功能的選項(xiàng)中,從而減少了該用戶必須滾動(dòng)以找到期望的一個(gè)所需要通過(guò)的功能數(shù)目。更可取地是,作為一個(gè)整體為該小鍵盤改變?cè)撴I選項(xiàng),但是做為選擇可以僅僅改變用于某些鍵的選項(xiàng)。本發(fā)明的一個(gè)方面提供了一種使用一個(gè)小鍵盤幫助輸入數(shù)據(jù)到一個(gè)圖形用戶界面(GUI)里的方法,該方法包含定義多個(gè)模板,其中每個(gè)模板都包含用于該小鍵盤的一組功能。本發(fā)明的一個(gè)方面提供了用于使用一個(gè)小鍵盤輸入數(shù)據(jù)到一個(gè)圖形用戶界面里的裝置,該裝置包含多個(gè)模板,其中每個(gè)模板都包含用于該小鍵盤的一組功能。更可取地是,這些模板在一個(gè)顯示屏上顯示。更可取地是,提供了多個(gè)不同的模板,而且該方法包含選擇一個(gè)模板用于使用的步驟。更可取地是,該裝置進(jìn)一步包含用于選擇一個(gè)模板的裝置。更可取地是不同的模板提供了用于該小鍵盤的不同功能。例如,一個(gè)模板可以為該小鍵盤的數(shù)字鍵提供大寫字母A到J。不同的模板可以提供大寫字母K到T,等等。在這里描述的該發(fā)明的實(shí)施例中,每個(gè)模板都僅僅包含10個(gè)功能,供該小鍵盤的十個(gè)鍵使用。在一個(gè)不同的實(shí)施例中,該小鍵盤可以包含更多的鍵,而且有可能在該模板上表示整個(gè)字母表。例如,該小鍵盤可以包含一個(gè)鍵盤。對(duì)應(yīng)于不同類型的鍵盤,例如不同的語(yǔ)言變體、不同的數(shù)字和鍵排列、以及符號(hào)及其它字符,可以提供不同的模板。所有需要的功能可以被包含在每個(gè)模板上,而且提供了對(duì)應(yīng)于不同類型的小鍵盤或者鍵盤的不同鍵布局的不同模板。在這里使用的術(shù)語(yǔ)小鍵盤更可取地是被廣泛地解釋以包含所有具有一系列鍵或者按鈕等等的設(shè)備。因此更可取地是該術(shù)語(yǔ)包含遙控器、電話和計(jì)算機(jī)鍵盤以及其它設(shè)備。更可取地是,該方法包含,例如在一臺(tái)計(jì)算機(jī)或者電視的屏幕上,顯示該模板的步驟。更可取地是顯示多個(gè)可用的模板,而且更可取地是用戶能夠選擇顯示模板中的一個(gè)用于使用。在一個(gè)最佳實(shí)施例,可用的模板被顯示為一個(gè)網(wǎng)格,而且該用戶使用該小鍵盤的光標(biāo)鍵來(lái)選擇期望的模板。做為選擇,該用戶可以使用一個(gè)不同的設(shè)備,例如一個(gè)指向設(shè)備,如一個(gè)鼠標(biāo)。更可取地是,該顯示器在一個(gè)對(duì)應(yīng)于該小鍵盤相關(guān)鍵的排列的配置中顯示該模板的功能。更可取地是,該方法包含顯示一個(gè)小鍵盤的圖像。更可取地是,選擇模板的步驟包含相對(duì)于在該屏幕上的模板移動(dòng)該小鍵盤的圖像。更可取地是,該裝置進(jìn)一步包含一個(gè)可顯示的小鍵盤圖像,該裝置最好提供了用于相對(duì)于模板的一個(gè)顯示移動(dòng)該小鍵盤圖像的裝置。更可取地是,在該屏幕上顯示該小鍵盤圖像,包含選擇要被顯示的小鍵盤圖像的步驟。在一個(gè)小鍵盤上的鍵的布局能夠隨著小鍵盤的類型不同而不同,因此使在所顯示模板上的鍵布局對(duì)應(yīng)于該小鍵盤布局是有利的。更可取地是,用戶使用在該小鍵盤上的光標(biāo)鍵相對(duì)于該模板移動(dòng)小鍵盤的圖像。模板的功能可以被設(shè)置為QWERTY鍵盤,該鍵盤被分成用于該小鍵盤圖像的各種區(qū)域。例如,一個(gè)位置中,小鍵盤可以用來(lái)輸入字母q、w、e、a、s、d、z、x、c和空格。在其它實(shí)施例中,模板功能以其它方式設(shè)置。更可取地是,布置經(jīng)常由用戶使用的功能以便使它們?cè)诙嘤谝粋€(gè)的模板上出現(xiàn)。更可取地是,該模板可以由用戶定制。由該模板鍵盤一個(gè)鍵提供的功能可以包含多于一個(gè)的字母、數(shù)字或符號(hào)。例如,在該小鍵盤用于一個(gè)網(wǎng)絡(luò)瀏覽器的情況中,一個(gè)鍵可以用來(lái)輸入一個(gè)文本串,例如“http\”或者“www”。更可取地是,在用戶輸入數(shù)據(jù)的同時(shí),在該屏幕上顯示該小鍵盤模板。本發(fā)明的一個(gè)方面提供了一個(gè)用于小鍵盤的模板。更可取地是,該模板在一個(gè)GUI中顯示。本發(fā)明的一個(gè)方面提供了一種使用一個(gè)小鍵盤輸入數(shù)據(jù)的方法,該方法包含選擇一個(gè)包含有一組用于該小鍵盤的功能的模板。本發(fā)明的該方面進(jìn)一步提供了用于使用一個(gè)小鍵盤輸入數(shù)據(jù)的裝置,該裝置包含用于顯示一個(gè)小鍵盤模板的裝置。更可取地是,該裝置包含用于顯示多個(gè)小鍵盤模板的裝置以及用于選擇一個(gè)模板的裝置。更可取地是,用于數(shù)據(jù)輸入的小鍵盤模板的顯示與任何其它該裝置可以運(yùn)行的應(yīng)用分開(kāi)。例如,如果該裝置正運(yùn)行一個(gè)網(wǎng)絡(luò)瀏覽器應(yīng)用程序并且需要在一個(gè)對(duì)話框中輸入數(shù)據(jù),則該用戶調(diào)用并行于該瀏覽器應(yīng)用程序運(yùn)行的小鍵盤模板。更可取地是,該小鍵盤模板應(yīng)用程序能夠從在該裝置中的多個(gè)應(yīng)用程序中調(diào)用。本發(fā)明的該方面還提供了一種用于實(shí)現(xiàn)一個(gè)圖形用戶界面的應(yīng)用執(zhí)行設(shè)備,其包含一個(gè)處理器、存儲(chǔ)器以及一個(gè)用于輸出一個(gè)信號(hào)到一個(gè)顯示器的輸出端口,其中該存儲(chǔ)器中存儲(chǔ)有一段用于執(zhí)行本發(fā)明一個(gè)方面的程序。更可取地是,該存儲(chǔ)器進(jìn)一步已經(jīng)在其中存儲(chǔ)了一個(gè)小鍵盤模板庫(kù),而且最好是已經(jīng)在其中進(jìn)一步存儲(chǔ)了一個(gè)小鍵盤圖像庫(kù)。本發(fā)明的該方面進(jìn)一步提供了一個(gè)小鍵盤模板和/或小鍵盤圖像庫(kù)。本發(fā)明的一個(gè)方面提供了一段用于執(zhí)行本發(fā)明的一種方法的計(jì)算機(jī)程序。概括在這里對(duì)圖形及其它對(duì)象進(jìn)行引用的地方,這種術(shù)語(yǔ)將被廣義地解釋。特別地,它將不會(huì)被解釋為暗示該對(duì)象被面向?qū)ο蟮某绦虼a定義。在這里描述的方法,更可取地是使用一個(gè)具有一個(gè)被適當(dāng)編程的處理器的應(yīng)用程序執(zhí)行設(shè)備來(lái)實(shí)現(xiàn)。更可取地是,本發(fā)明涉及廣播和接收傳輸。如上所述的任何一種方法可以由一個(gè)接收器/解碼器,諸如一個(gè)數(shù)字或者模擬電視接收器/解碼器執(zhí)行。做為選擇,該方法可以由一個(gè)移動(dòng)電話、一臺(tái)計(jì)算機(jī)、或者另一個(gè)設(shè)備執(zhí)行。在這里描述的發(fā)明還擴(kuò)展到一段用于執(zhí)行任何描述的方法的計(jì)算機(jī)程序,以及擴(kuò)展到一個(gè)計(jì)算機(jī)可讀介質(zhì),該介質(zhì)中存儲(chǔ)有用于執(zhí)行任何上述方法的程序。本發(fā)明還擴(kuò)展到一個(gè)應(yīng)用程序,該應(yīng)用程序用于一個(gè)被安排用來(lái)執(zhí)行本發(fā)明任何方面的一種方法的接收器/解碼器。本發(fā)明還擴(kuò)展到計(jì)算機(jī)程序產(chǎn)品,例如包含計(jì)算機(jī)軟件和/或計(jì)算機(jī)軟件升級(jí)。這樣的計(jì)算機(jī)程序產(chǎn)品可以,例如,通過(guò)例如電纜或者衛(wèi)星廣播,從一個(gè)廣播中心傳輸?shù)揭粋€(gè)用戶。該計(jì)算機(jī)程序產(chǎn)品可以在一張磁盤、例如一張CDROM上提供。該計(jì)算機(jī)程序產(chǎn)品可以被有形地體現(xiàn)為,例如存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)諸如硬盤或易失性或非易失性存儲(chǔ)器上的軟件,或一個(gè)信號(hào)。因此本發(fā)明的方面進(jìn)一步提供了一個(gè)計(jì)算機(jī)程序產(chǎn)品,包含用于執(zhí)行下列步驟的代碼定義一個(gè)外觀對(duì)象;以及將該外觀對(duì)象與該圖形對(duì)象關(guān)聯(lián);一個(gè)用于在一個(gè)圖形用戶界面中定義一個(gè)圖形對(duì)象而使用的計(jì)算機(jī)程序產(chǎn)品,包含用于提供一個(gè)控制該圖形對(duì)象外觀的外觀對(duì)象的代碼;以及用于提供一個(gè)控制該圖形對(duì)象操作的窗口小部件對(duì)象的代碼;一個(gè)用于在一種控制一組圖形對(duì)象外觀的方法中使用的計(jì)算機(jī)程序產(chǎn)品,包含用于定義多組不同的可顯示圖形對(duì)象、以及用于從該多組可顯示對(duì)象中選擇一組圖形對(duì)象的代碼;一個(gè)用于在一種控制一組圖形對(duì)象外觀的方法中使用的計(jì)算機(jī)程序產(chǎn)品,包含用于定義一組可顯示圖像對(duì)象的代碼;用于在一種在一個(gè)圖形用戶界面中控制一個(gè)圖形對(duì)象外觀的方法中使用的一個(gè)計(jì)算機(jī)程序產(chǎn)品,包含用于定義該圖形對(duì)象的多個(gè)圖形對(duì)象單元供顯示該圖形對(duì)象的一個(gè)表現(xiàn)使用的代碼;在一種產(chǎn)生一套用于一個(gè)圖形對(duì)象的單元的方法中使用的一個(gè)計(jì)算機(jī)程序產(chǎn)品,包含用于定義一組為該圖形對(duì)象的實(shí)例所共用的固定單元、以及用于定義一組可重復(fù)單元的代碼;在一種在一個(gè)圖形用戶界面中顯示一個(gè)圖形對(duì)象表現(xiàn)的方法中使用的一個(gè)計(jì)算機(jī)程序產(chǎn)品,包含用于組合多個(gè)圖形對(duì)象單元的代碼;在一種在一個(gè)GUI中控制一個(gè)圖形對(duì)象外觀的方法中使用的一個(gè)計(jì)算機(jī)程序產(chǎn)品,包含用于定義一個(gè)圖形對(duì)象第一個(gè)可顯示表現(xiàn)以及用于定義該圖形對(duì)象第二個(gè)可顯示表現(xiàn)的代碼,以及用于緊鄰第一個(gè)表現(xiàn)顯示第二個(gè)表現(xiàn)的代碼;在一種顯示一個(gè)圖形對(duì)象的方法中使用的一個(gè)計(jì)算機(jī)程序產(chǎn)品,包含用于顯示該圖形對(duì)象的第一個(gè)表現(xiàn)、顯示該圖形對(duì)象的第二個(gè)表現(xiàn)、以及顯示鏈接該第一表現(xiàn)和第二個(gè)表現(xiàn)的一個(gè)鏈接單元的代碼;在一種在一個(gè)圖形用戶界面中控制圖形對(duì)象外觀的方法中使用的一個(gè)計(jì)算機(jī)程序產(chǎn)品,包含用于定義一個(gè)圖形對(duì)象鏈接鏈的代碼;用于在一種在一個(gè)圖形用戶界面中控制一個(gè)圖形對(duì)象外觀的方法中使用的一個(gè)計(jì)算機(jī)程序產(chǎn)品,包含用于定義第一個(gè)圖形對(duì)象、定義第二個(gè)圖形對(duì)象以及定義用于鏈接圖形對(duì)象的一個(gè)鏈接單元的代碼;在一種在一個(gè)圖形用戶界面中顯示圖形對(duì)象表現(xiàn)的方法中使用的一個(gè)計(jì)算機(jī)程序產(chǎn)品,包含用于顯示圖形對(duì)象的表現(xiàn)以及用于顯示一個(gè)用于說(shuō)明在圖形對(duì)象之間的一個(gè)鏈接的鏈接單元的表現(xiàn)的代碼;在一種在一個(gè)GUI中控制一個(gè)圖形對(duì)象外觀的方法中使用的一個(gè)計(jì)算機(jī)程序產(chǎn)品,包含用于定義該圖形對(duì)象第一個(gè)表現(xiàn)以及該圖形對(duì)象第二個(gè)表現(xiàn)的代碼,以及用于有選擇地顯示第一個(gè)表現(xiàn)和第二個(gè)表現(xiàn)、更可取地是循環(huán)顯示這些表現(xiàn)的代碼;在一種在一個(gè)GUI中顯示一個(gè)圖形對(duì)象的表現(xiàn)的方法中使用的一個(gè)計(jì)算機(jī)程序產(chǎn)品,包含用于顯示該圖形對(duì)象的第一個(gè)表現(xiàn)、以及用于隨后顯示該圖形對(duì)象的第二個(gè)表現(xiàn)的代碼;以及在這里描述的和一個(gè)接收器/解碼器一起使用的一個(gè)計(jì)算機(jī)程序產(chǎn)品。還提供了一種包含一個(gè)存儲(chǔ)器和處理器的計(jì)算機(jī)程序產(chǎn)品,該存儲(chǔ)器中已經(jīng)存儲(chǔ)了一個(gè)應(yīng)用程序,而且該處理器(在該應(yīng)用程序的控制下)適合于執(zhí)行在這里描述的任何方法;一個(gè)計(jì)算機(jī)程序產(chǎn)品,包含一段用于執(zhí)行在這里描述的任何方法的程序;以及一段用于執(zhí)行在這里描述的任何方法的計(jì)算機(jī)程序。本發(fā)明還提供了一個(gè)在其中已經(jīng)存儲(chǔ)了一段用于執(zhí)行在這里描述的任何方法的程序的計(jì)算機(jī)可讀介質(zhì),以及一個(gè)在其中已經(jīng)存儲(chǔ)了在這里描述的一個(gè)計(jì)算機(jī)程序產(chǎn)品的計(jì)算機(jī)可讀介質(zhì)。還提供了一個(gè)可有形地體現(xiàn)為在這里描述的一個(gè)計(jì)算機(jī)程序產(chǎn)品的信號(hào)。本發(fā)明進(jìn)一步提供了一種實(shí)質(zhì)上在這里通過(guò)參考附圖加以描述并且在附圖中說(shuō)明的方法,以及實(shí)質(zhì)上在這里通過(guò)參考附圖加以描述并且在附圖中說(shuō)明的裝置。在本發(fā)明涉及圖形對(duì)象方面的地方,本發(fā)明提供了一種用于定義該圖形對(duì)象、控制該圖形對(duì)象的外觀以及在一個(gè)適當(dāng)?shù)娘@示器、例如一個(gè)電視屏幕或者一個(gè)移動(dòng)電話的LCD上顯示該圖形對(duì)象的表現(xiàn)的方法。本發(fā)明還提供了用于更可取地使用一個(gè)被適當(dāng)編程的處理器來(lái)實(shí)現(xiàn)本發(fā)明以及本發(fā)明的方法的裝置。更可取地是,本發(fā)明找到了用于數(shù)字電視的應(yīng)用,以及更可取地是用于一個(gè)電視的網(wǎng)絡(luò)瀏覽器。本發(fā)明可以在一個(gè)例如用于一個(gè)數(shù)字電視的接收器/解碼器中體現(xiàn)。如上所述本發(fā)明的方面的特征更可取地是由一個(gè)處理器和/或存儲(chǔ)器、例如該接收器/解碼器中的一個(gè)處理器和存儲(chǔ)器來(lái)提供的。在這里描述的任何方法可以由該接收器/解碼器、諸如一個(gè)數(shù)字或者模擬電視接收器/解碼器實(shí)現(xiàn)。在這里使用的術(shù)語(yǔ)“接收器/解碼器”可以意味著一個(gè)用于接收編碼或者不編碼信號(hào)、例如可以由某些其它裝置廣播或者傳送的電視和/或無(wú)線電信號(hào)的接收器。該術(shù)語(yǔ)還可以意味著用于解碼所接收信號(hào)的一個(gè)解碼器。這樣的接收器/解碼器的實(shí)施例可以包含例如在一個(gè)“機(jī)頂盒”中與接收器集成、用于解碼該接收信號(hào)的解碼器,這樣一個(gè)解碼器與一個(gè)物理上分隔的接收器一起起作用,或者這樣一個(gè)解碼器包含附加功能、諸如一個(gè)網(wǎng)絡(luò)瀏覽器、一個(gè)錄像機(jī)或者一臺(tái)電視。應(yīng)當(dāng)理解在這里僅僅通過(guò)舉例對(duì)本發(fā)明進(jìn)行了描述,而且能夠在本發(fā)明的范圍內(nèi)對(duì)細(xì)節(jié)做出修改。在該說(shuō)明書以及(在適當(dāng)處的)權(quán)利要求和附圖中公開(kāi)的每個(gè)特征,可獨(dú)立地提供或者以任何適當(dāng)組合的形式提供。在這里該裝置的特征被描述為用于一個(gè)特定功能的“裝置”,意圖使那些術(shù)語(yǔ)被廣泛地解釋,而且更可取地是不局限于在這里描述的本發(fā)明的任何特定實(shí)施例。在最佳實(shí)施例中,該裝置的特征由一個(gè)被適當(dāng)編程的一臺(tái)和多臺(tái)計(jì)算機(jī)提供,而且因此該裝置的特征更可取地是由包含一段計(jì)算機(jī)程序的一臺(tái)計(jì)算機(jī)或者一件產(chǎn)品的相關(guān)特征提供。例如,該裝置的特征可以由一個(gè)處理器,或者一臺(tái)計(jì)算機(jī)的其它部分、例如一個(gè)存儲(chǔ)器或者數(shù)據(jù)存儲(chǔ)器提供。一個(gè)方面的特征可以應(yīng)用于任何其它方面;方法特征可以應(yīng)用于裝置方面,反之亦然。下面將僅僅通過(guò)舉例,并結(jié)合附圖對(duì)本發(fā)明的最佳特征進(jìn)行描述,其中圖1a顯示了一個(gè)典型數(shù)字電視系統(tǒng)的一個(gè)概述;圖1b顯示了該交互式電視系統(tǒng)的總體結(jié)構(gòu);圖2a是一個(gè)接收器/解碼器的框圖;圖2b顯示了一個(gè)接收器/解碼器的結(jié)構(gòu);圖2c進(jìn)一步說(shuō)明了該接收器/解碼器的結(jié)構(gòu);圖3是在一個(gè)窗口小部件集合內(nèi)的窗口小部件的部分分級(jí)結(jié)構(gòu)的一個(gè)框圖;圖4是在一個(gè)GUI顯示上顯現(xiàn)的一個(gè)窗口小部件的一個(gè)簡(jiǎn)圖;圖5說(shuō)明了幾個(gè)窗口小部件在存儲(chǔ)器中的位置;圖6a說(shuō)明了該網(wǎng)絡(luò)瀏覽器的一個(gè)屏幕顯示;圖6b顯示了用于導(dǎo)航該網(wǎng)絡(luò)瀏覽器的一個(gè)遙控器;圖7說(shuō)明了該網(wǎng)絡(luò)瀏覽器的一個(gè)進(jìn)一步的屏幕顯示;圖8說(shuō)明了該網(wǎng)絡(luò)瀏覽器的一個(gè)進(jìn)一步的屏幕顯示;圖9說(shuō)明了該網(wǎng)絡(luò)瀏覽器的一個(gè)進(jìn)一步的屏幕顯示;圖10說(shuō)明了該網(wǎng)絡(luò)瀏覽器的一個(gè)進(jìn)一步的屏幕顯示;圖11說(shuō)明了該網(wǎng)絡(luò)瀏覽器的一個(gè)進(jìn)一步的屏幕顯示;圖12說(shuō)明了該網(wǎng)絡(luò)瀏覽器的一個(gè)進(jìn)一步的屏幕顯示;圖13說(shuō)明了該網(wǎng)絡(luò)瀏覽器的一個(gè)進(jìn)一步的屏幕顯示;圖14說(shuō)明了該網(wǎng)絡(luò)瀏覽器的一個(gè)進(jìn)一步的屏幕顯示;圖15說(shuō)明了該網(wǎng)絡(luò)瀏覽器的一個(gè)進(jìn)一步的屏幕顯示;圖16說(shuō)明了該網(wǎng)絡(luò)瀏覽器的一個(gè)進(jìn)一步的屏幕顯示;圖17說(shuō)明了該網(wǎng)絡(luò)瀏覽器的一個(gè)進(jìn)一步的屏幕顯示;圖18說(shuō)明了該網(wǎng)絡(luò)瀏覽器的一個(gè)進(jìn)一步的屏幕顯示;圖19說(shuō)明了該網(wǎng)絡(luò)瀏覽器的一個(gè)進(jìn)一步的屏幕顯示;圖20說(shuō)明了該網(wǎng)絡(luò)瀏覽器的一個(gè)進(jìn)一步的屏幕顯示;圖21說(shuō)明了該網(wǎng)絡(luò)瀏覽器的一個(gè)進(jìn)一步的屏幕顯示;圖22說(shuō)明了該網(wǎng)絡(luò)瀏覽器的一個(gè)進(jìn)一步的屏幕顯示;圖23說(shuō)明了該網(wǎng)絡(luò)瀏覽器的一個(gè)進(jìn)一步的屏幕顯示;圖24說(shuō)明了該網(wǎng)絡(luò)瀏覽器的一個(gè)進(jìn)一步的屏幕顯示;圖25說(shuō)明了該網(wǎng)絡(luò)瀏覽器的一個(gè)進(jìn)一步的屏幕顯示;圖26說(shuō)明了該網(wǎng)絡(luò)瀏覽器的一個(gè)進(jìn)一步的屏幕顯示;圖27說(shuō)明了該網(wǎng)絡(luò)瀏覽器的一個(gè)進(jìn)一步的屏幕顯示;圖28說(shuō)明了該網(wǎng)絡(luò)瀏覽器的一個(gè)進(jìn)一步的屏幕顯示;圖29說(shuō)明了該網(wǎng)絡(luò)瀏覽器的一個(gè)進(jìn)一步的屏幕顯示;圖30說(shuō)明了該網(wǎng)絡(luò)瀏覽器的一個(gè)進(jìn)一步的屏幕顯示;圖31是由并列顯示形成的一個(gè)圖形對(duì)象的一個(gè)示例;圖32是由并列顯示形成的一個(gè)圖形對(duì)象的一個(gè)進(jìn)一步的示例;圖33是由并列顯示形成的一個(gè)圖形對(duì)象的一個(gè)進(jìn)一步的示例;圖34是由并列顯示形成的一個(gè)圖形對(duì)象的一個(gè)進(jìn)一步的示例;圖35是由并列顯示形成的一個(gè)圖形對(duì)象的一個(gè)進(jìn)一步的示例;圖36是由并列顯示形成的一個(gè)圖形對(duì)象的一個(gè)進(jìn)一步的示例;圖37是由并列顯示形成的一個(gè)圖形對(duì)象的一個(gè)進(jìn)一步的示例;圖38是由并列顯示形成的一個(gè)圖形對(duì)象的一個(gè)進(jìn)一步的示例;圖39說(shuō)明了并列顯示圖形對(duì)象的方法;圖40顯示了一個(gè)典型的圖像緩沖區(qū);圖41顯示了一個(gè)并列顯示的圖形對(duì)象的布局;圖42示意地說(shuō)明了一個(gè)虛擬鍵盤的操作;圖43顯示了在一個(gè)虛擬鍵盤上一個(gè)典型的字符到鍵的映射;圖44顯示了一個(gè)虛擬鍵盤的示例;以及圖45顯示了一個(gè)虛擬鍵盤的典型尺寸。一個(gè)數(shù)字電視系統(tǒng)的概述一個(gè)數(shù)字電視系統(tǒng)1的概況如圖1a所示。本發(fā)明包含一個(gè)最傳統(tǒng)的數(shù)字電視系統(tǒng)2,它使用已知的MPEG-2壓縮系統(tǒng)傳送壓縮的數(shù)字信號(hào)。更詳細(xì)地,在一個(gè)廣播中心中MPEG-2壓縮器3接收一個(gè)數(shù)字信號(hào)流(通常是一個(gè)視頻信號(hào)流)。壓縮器3通過(guò)鏈接5與一個(gè)多路復(fù)用器和擾頻器4相鏈。多路復(fù)用器4接收多個(gè)進(jìn)一步的輸入信號(hào),組合傳輸流,并且經(jīng)由鏈接7將壓縮的數(shù)字信號(hào)傳送到廣播中心的一個(gè)發(fā)送器6,當(dāng)然鏈接7能夠采取各式各樣的形式,包括電信鏈路。發(fā)送器6經(jīng)由上行鏈路8向一個(gè)衛(wèi)星應(yīng)答器9傳送電磁信號(hào),它們?cè)谛l(wèi)星應(yīng)答器中被電子地處理,并且通常以終端用戶擁有或租用的一個(gè)反射器的形式,經(jīng)由概念上的下行鏈路10傳播到地面接收器12。其它用于數(shù)據(jù)傳輸?shù)膫鬏斖ǖ喇?dāng)然是可能的,諸如地面廣播、電纜傳輸、組合的衛(wèi)星/電纜鏈路、電話網(wǎng)等。由接收器12接收的信號(hào)被傳送到終端用戶擁有或租用的、并且鏈接到該終端用戶的電視機(jī)14的一個(gè)集成的接收器/解碼器13。接收器/解碼器13解碼所壓縮的MPEG-2信號(hào)成為一個(gè)用于電視機(jī)14的電視信號(hào)。盡管一個(gè)單獨(dú)的接收器/解碼器如圖1a所示,但是該接收器/解碼器也可以是一個(gè)集成數(shù)字電視的一部分。在這里使用的術(shù)語(yǔ)“接收器/解碼器”包含一個(gè)單獨(dú)的接收器/解碼器,諸如一個(gè)機(jī)頂盒,以及一臺(tái)具有一個(gè)與此集成的接收器/解碼器的電視。在一個(gè)多通道系統(tǒng)中,多路復(fù)用器4處理從多個(gè)平行源接收的音頻與視頻信息,并且與發(fā)送器6相互作用以沿著相應(yīng)數(shù)目的通道傳播該信息。除了視聽(tīng)信息之外,消息或應(yīng)用程序或其它任何類別的數(shù)字?jǐn)?shù)據(jù),可以被引入到某些或所有、與傳送的數(shù)字音頻與視頻信息交錯(cuò)的這些通道中。一個(gè)條件訪問(wèn)系統(tǒng)15與多路復(fù)用器4和接收器/解碼器13相鏈,并且部分地位于廣播中心中,部分地位于接收器/解碼器中。它允許終端用戶訪問(wèn)來(lái)自于一個(gè)或多個(gè)廣播供應(yīng)商的數(shù)字電視廣播。一個(gè)能夠解密與商業(yè)供應(yīng)(即,由廣播供應(yīng)商出售的一個(gè)或幾個(gè)電視節(jié)目)有關(guān)的消息的智能卡能夠被插入到接收器/解碼器13中。使用接收器/解碼器13和智能卡,終端用戶可以以一種認(rèn)購(gòu)方式或者以一種按次計(jì)費(fèi)的方式購(gòu)買商業(yè)供應(yīng)。在這里使用的術(shù)語(yǔ)“智能卡”包含,但不局限于任何基于芯片的卡設(shè)備,或者具有類似功能和性能、具有例如微處理器和/或存儲(chǔ)器的對(duì)象。在這個(gè)術(shù)語(yǔ)中包含的設(shè)備具有與一個(gè)卡不同的替換物理形式,例如,諸如經(jīng)常在TV解碼器系統(tǒng)中使用的鑰匙形狀的設(shè)備。如上所述,由系統(tǒng)傳送的節(jié)目在多路復(fù)用器4處被擾頻,應(yīng)用于一個(gè)給定傳輸?shù)臈l件和加密密鑰由訪問(wèn)控制系統(tǒng)15確定。以這種方式傳輸被擾頻的數(shù)據(jù),在計(jì)費(fèi)電視系統(tǒng)領(lǐng)域中是非常公知的。通常,被擾頻數(shù)據(jù)與一個(gè)用于解擾頻該數(shù)據(jù)的控制字一起被傳送,該控制字本身由一個(gè)所謂的使用密鑰加密,并且以加密形式傳送。然后該被擾頻數(shù)據(jù)和加密的控制字由解碼器13接收,該解碼器13能訪問(wèn)存儲(chǔ)在一個(gè)插入到該解碼器中的智能卡上的使用密鑰的一個(gè)等效碼,以解密該加密控制字,爾后解擾頻發(fā)送的數(shù)據(jù)。一個(gè)繳清費(fèi)用的認(rèn)購(gòu)者將,例如在一個(gè)每月廣播一次的ECM(EntitlementControlMessage,權(quán)利控制消息)中,接收解密該加密控制字所必需的使用密鑰,以便允許查看該傳輸。交互系統(tǒng)一個(gè)交互式系統(tǒng)16,也鏈接到多路復(fù)用器4和接收器/解碼器13,而且同樣部分地位于該廣播中心中,部分地位于接收器/解碼器中,以允許終端用戶與各個(gè)應(yīng)用程序經(jīng)由一個(gè)調(diào)制解調(diào)的返回通道17相互作用。調(diào)制解調(diào)的返回通道也可能被用于在條件訪問(wèn)系統(tǒng)15中使用的通信。圖1b顯示了數(shù)字電視系統(tǒng)1的交互式電視系統(tǒng)16的總體結(jié)構(gòu)。例如,該交互系統(tǒng)16允許一個(gè)終端用戶通過(guò)他們的電視機(jī)從在屏幕上的目錄中購(gòu)買物品、根據(jù)需要查閱本地新聞和天氣圖片以及玩游戲。交互系統(tǒng)16主要包含四個(gè)主要部件·在廣播中心或者在別處的一個(gè)創(chuàng)造工具4004,用于允許一個(gè)廣播供應(yīng)者創(chuàng)建、開(kāi)發(fā)、調(diào)試和測(cè)試應(yīng)用程序;·一個(gè)在該廣播中心處的應(yīng)用程序和數(shù)據(jù)服務(wù)器4006,鏈接到創(chuàng)造工具4004用于允許一個(gè)廣播供應(yīng)商籌備、驗(yàn)證和格式化應(yīng)用程序和數(shù)據(jù),以發(fā)送到該多路復(fù)用器和擾頻器4用于插入到MPEG-2傳送流中(一般它的專用段),以廣播到終端用戶?!ひ粋€(gè)包含一個(gè)運(yùn)行時(shí)間引擎(RTE)4008的虛擬機(jī),其是安裝在由終端用戶擁有或者租用的接收器/解碼器13中的一段可執(zhí)行代碼,用于允許一個(gè)終端用戶接收、驗(yàn)證、解壓縮、和加載應(yīng)用程序到該解碼器13的工作存儲(chǔ)器中用于執(zhí)行。引擎4008還運(yùn)行駐留的、通用的應(yīng)用程序。該引擎4008獨(dú)立于硬件和操作系統(tǒng);以及·在接收器/解碼器13和應(yīng)用程序和數(shù)據(jù)服務(wù)器4006之間的調(diào)制解調(diào)的返回通道17,以在終端用戶的請(qǐng)求下啟動(dòng),指示該服務(wù)器4006插入數(shù)據(jù)和應(yīng)用程序到MPEG-2傳輸流中的信號(hào)。該交互式電視系統(tǒng)使用控制該接收器/解碼器以及在其中包含的各種設(shè)備的功能的“應(yīng)用程序”來(lái)進(jìn)行操作。應(yīng)用程序在引擎4008中被表示為“資源文件”。一個(gè)“模塊”是一組資源文件和數(shù)據(jù)。該接收器/解碼器的一個(gè)“存儲(chǔ)器容量”是一個(gè)用于模塊的存儲(chǔ)空間。模塊可以從該MPEG-2傳輸流中下載到接收器/解碼器13中。接收器/解碼器參見(jiàn)圖2a,下面將以功能塊的方式描述接收器/解碼器13的各個(gè)部件。接收器/解碼器13,可以是例如,一個(gè)數(shù)字機(jī)頂盒(DSTB),包含一個(gè)中央處理器220,它包括相關(guān)的存儲(chǔ)單元,而且適于從一個(gè)串行接口221、一個(gè)并行接口222、一個(gè)調(diào)制解調(diào)器223(鏈接到圖1a中的調(diào)制解調(diào)返回通道17)接收輸入數(shù)據(jù);以及在該解碼器的前面板上的切換觸點(diǎn)224。另外,該接收器/解碼器還適于經(jīng)由一個(gè)控制單元226從一個(gè)紅外線遠(yuǎn)程控制225接收輸入,而且還擁有兩個(gè)分別適于讀取銀行卡以及預(yù)定智能卡242、240的智能卡閱讀器227、228。該預(yù)定智能卡閱讀器228與一個(gè)插入的預(yù)定卡240以及一個(gè)條件訪問(wèn)單元229相接合,以提供必要的控制字到一個(gè)多路分用器/解擾器230,以便允許加密的廣播信號(hào)被解擾頻。解碼器還包括一個(gè)傳統(tǒng)的調(diào)諧器231和解調(diào)制器232,以在被單元230濾波和多路分解之前接收和解調(diào)制該衛(wèi)星傳輸。在該接收器/解碼器內(nèi)的數(shù)據(jù)處理通常由該中央處理機(jī)220處理。圖2b說(shuō)明了該接收器/解碼器的中央處理器220的軟件體系結(jié)構(gòu)。參考圖2b,該軟件體系結(jié)構(gòu)包含一個(gè)運(yùn)行時(shí)間引擎(Run-Time-Engine)4008、一個(gè)設(shè)備管理程序(DeviceManager)4068、以及多個(gè)用于運(yùn)行一個(gè)或多個(gè)應(yīng)用程序4056的設(shè)備4062(Device)和設(shè)備驅(qū)動(dòng)程序(DeviceDriver)4066。如在這個(gè)說(shuō)明書中使用的那樣,一個(gè)應(yīng)用程序最好是一段用于控制該接收器/解碼器13的高級(jí)功能的計(jì)算機(jī)代碼。例如,當(dāng)終端用戶把遙控器225的焦點(diǎn)定位在在電視機(jī)14的屏幕上看到的一個(gè)按鈕對(duì)象上、并且按下一個(gè)確認(rèn)鍵時(shí),運(yùn)行與該按鈕有關(guān)的指令序列。一個(gè)交互式應(yīng)用程序應(yīng)終端用戶的請(qǐng)求提出菜單且執(zhí)行指令,并且提供與該應(yīng)用程序目的有關(guān)的數(shù)據(jù)。應(yīng)用程序可以是駐留的應(yīng)用程序,即存儲(chǔ)在接收器/解碼器13的ROM(或FLASH(閃速存儲(chǔ)器),或其它非易失性存儲(chǔ)器)中,或是被廣播和下載到接收器/解碼器13的RAM或者FLASH存儲(chǔ)器里。應(yīng)用程序被存儲(chǔ)在接收器/解碼器13中的存儲(chǔ)單元內(nèi),而且被表示為資源文件。如在上述專利說(shuō)明書中更詳細(xì)描述的那樣,該資源文件包含圖形對(duì)象描述單元文件,變量塊單元文件、指令序列文件、應(yīng)用程序文件和數(shù)據(jù)文件。接收器/解碼器包含被分成一個(gè)RAM部分、一個(gè)FLASH部分、和一個(gè)ROM部分的存儲(chǔ)器,但是這個(gè)物理結(jié)構(gòu)不同于邏輯結(jié)構(gòu)。該存儲(chǔ)器可以被進(jìn)一步分成與各個(gè)接口有關(guān)的存儲(chǔ)器部分。從一個(gè)觀點(diǎn)來(lái)說(shuō),該存儲(chǔ)器能夠被認(rèn)為是硬件的一部分;從另一個(gè)觀點(diǎn)來(lái)說(shuō),該存儲(chǔ)器能夠被認(rèn)為是支持或包含除硬件之外所顯示的整個(gè)系統(tǒng)。軟件體系結(jié)構(gòu)中央處理器220能夠被認(rèn)為是集中在一個(gè)形成一個(gè)虛擬機(jī)4007一部分的運(yùn)行時(shí)間引擎4008上。這在一端(“高級(jí)”端)與應(yīng)用程序相鏈,而在另一端(“低級(jí)”端),經(jīng)由以下討論的各種中間邏輯單元,連接到該接收器/解碼器硬件4061,其包含如上討論的各種端口(這就是說(shuō),例如,串行接口221、并行接口222、調(diào)制解調(diào)器223、以及控制單元226)。具體參考圖2b,各種應(yīng)用程序4057與虛擬機(jī)4007相連;一些更一般使用的應(yīng)用程序可以或多或少地永久駐留在該系統(tǒng)中,如在4057處指示,而其它將按要求,例如從MPEG數(shù)據(jù)流或者從其它端口中下載到該系統(tǒng)中。除了運(yùn)行時(shí)間引擎4008之外,虛擬機(jī)4007還包含,某些包括一個(gè)工具箱4058在內(nèi)的駐留庫(kù)函數(shù)4006。該庫(kù)包含由引擎4008使用的以C語(yǔ)言編寫的各種函數(shù)。這些包括諸如壓縮、擴(kuò)展或者比較數(shù)據(jù)結(jié)構(gòu)等的數(shù)據(jù)操作、畫線,等。庫(kù)4006還包括有關(guān)在該接收器/解碼器13中的固件的信息,諸如硬件和軟件版本號(hào)以及可用的RAM空間,以及當(dāng)下載一個(gè)新設(shè)備4062時(shí)使用的一個(gè)函數(shù)。函數(shù)能夠被下載到該庫(kù)中,并被保存在FLASH或者RAM存儲(chǔ)器中。運(yùn)行時(shí)間引擎4008與一個(gè)設(shè)備管理器4068相連,該設(shè)備管理器4068與一組設(shè)備4062相鏈,該設(shè)備和設(shè)備驅(qū)動(dòng)程序4060相鏈,這些設(shè)備驅(qū)動(dòng)程序4060反過(guò)來(lái)與端口或者接口相鏈。在廣義的術(shù)語(yǔ)中,一個(gè)設(shè)備驅(qū)動(dòng)程序能夠被認(rèn)為是定義了一個(gè)邏輯接口,所以兩個(gè)不同的設(shè)備驅(qū)動(dòng)程序可以與一個(gè)公共的物理端口相鏈。一個(gè)設(shè)備通常將與多于一個(gè)的設(shè)備驅(qū)動(dòng)程序相連;如果一個(gè)設(shè)備與單個(gè)設(shè)備驅(qū)動(dòng)程序相鏈的話,則該設(shè)備通常將被設(shè)計(jì)為包括通信需要的所有功能,所以排除了需要一個(gè)單獨(dú)的設(shè)備驅(qū)動(dòng)程序的必要。某些設(shè)備可以在它們自己之中進(jìn)行通信。該接收器/解碼器13的每個(gè)功能都被表示為在該接收器/解碼器13的軟件體系結(jié)構(gòu)中的一個(gè)4062。設(shè)備能夠是本地或者遠(yuǎn)程的。本地設(shè)備4064包括智能卡、SCART鏈接器信號(hào)、調(diào)制解調(diào)器、串行和并行接口、一個(gè)MPEG視頻和音頻播放器、以及一個(gè)MPEG部分和表格提取器。在一個(gè)遠(yuǎn)處執(zhí)行的遠(yuǎn)程設(shè)備4066,不同于本地設(shè)備之處在于必須由該系統(tǒng)管理機(jī)構(gòu)或者設(shè)計(jì)者定義一個(gè)端口和過(guò)程,而不是由一個(gè)由接收器/解碼器廠商提供和設(shè)計(jì)的一個(gè)設(shè)備和設(shè)備驅(qū)動(dòng)程序定義一個(gè)端口和過(guò)程。運(yùn)行時(shí)間引擎4008在一個(gè)微處理器以及一個(gè)公共應(yīng)用程序編程接口(API)的控制下運(yùn)行。它們被安裝在每個(gè)接收器/解碼器13中,以便從該應(yīng)用程序角度來(lái)看,所有的接收器/解碼器13是一樣的。引擎4008在接收器/解碼器13上運(yùn)行應(yīng)用程序4056。它執(zhí)行交互式應(yīng)用程序4056,并且從接收器/解碼器13的外面接收事件,顯示圖形和文本,調(diào)用用于服務(wù)的設(shè)備,以及使用鏈接到引擎4008的庫(kù)4006中的函數(shù)用于具體的計(jì)算。運(yùn)行時(shí)間引擎4008是安裝在每個(gè)接收器/解碼器13中的一段可執(zhí)行代碼,并且包括一個(gè)用于解釋和運(yùn)行應(yīng)用程序的解釋器。引擎4008適合于任何操作系統(tǒng),包含單任務(wù)操作系統(tǒng)(諸如MSDOS)。該引擎4008基于進(jìn)程定序器單元(其使用諸如一個(gè)鍵按壓的各種事件,來(lái)執(zhí)行各種動(dòng)作),并且包含它自己的調(diào)度表來(lái)管理來(lái)自于不同硬件接口的事件隊(duì)列。它還處理圖形和文字的顯示。一個(gè)進(jìn)程定序器單元包含一組動(dòng)作組。每個(gè)事件,取決于該事件的特性,導(dǎo)致該進(jìn)程定序器單元從它當(dāng)前的動(dòng)作組移動(dòng)到另一個(gè)動(dòng)作組,并且執(zhí)行該新動(dòng)作組的動(dòng)作。引擎4008包含一個(gè)代碼加載器來(lái)加載和下載應(yīng)用程序4056到該接收器/解碼器的存儲(chǔ)器中。為了確保最優(yōu)使用,只有必要的代碼被載入到RAM或者FLASH存儲(chǔ)器中。所下載的數(shù)據(jù)由一個(gè)驗(yàn)證裝置進(jìn)行驗(yàn)證以防止對(duì)一個(gè)應(yīng)用程序4056的任何修改或者任何未被授權(quán)的應(yīng)用程序的執(zhí)行。引擎4008進(jìn)一步包含一個(gè)解壓縮器。因?yàn)闉榱斯?jié)省空間和從該MPEG流或者經(jīng)由一個(gè)嵌入接收器/解碼器模式中快速下載,而壓縮該應(yīng)用程序代碼(一種中間代碼形式),所以在代碼被載入到RAM中之前必須被解壓縮。引擎4008還包含一個(gè)解釋該應(yīng)用程序代碼以更新各種變量值和確定狀態(tài)改變的解釋器,以及一個(gè)錯(cuò)誤檢測(cè)器。接收器/解碼器結(jié)構(gòu)接收器/解碼器包含五個(gè)這樣組織的軟件層,以便使該軟件能夠在任何接收器/解碼器中以及利用任何操作系統(tǒng)實(shí)現(xiàn)。參見(jiàn)圖2c,各個(gè)軟件層是應(yīng)用層250、應(yīng)用程序編程接口(API)層252、虛擬機(jī)層254、設(shè)備層256和系統(tǒng)軟件/硬件層258。應(yīng)用層250包含駐留在接收器/解碼器中或是被下載到該接收器/解碼器中的應(yīng)用程序。它們可以是由客戶使用的交互式應(yīng)用程序,例如用Java、HTML、MHEG-5或其它語(yǔ)言編寫,或者它們可以是由接收器/解碼器使用以運(yùn)行這種應(yīng)用程序的應(yīng)用程序。這個(gè)層基于由虛擬機(jī)層提供的一組開(kāi)放的應(yīng)用程序編程接口(APIs)。這個(gè)系統(tǒng)允許應(yīng)用程序在運(yùn)行時(shí)或被要求時(shí)被下載到接收器/解碼器的閃存或RAM存儲(chǔ)器中。能夠使用諸如數(shù)據(jù)存儲(chǔ)媒體指令與控制(DSMCC)、網(wǎng)絡(luò)文件服務(wù)程序(NFS)或其它協(xié)議的協(xié)議,以壓縮的或未壓縮的格式傳送該應(yīng)用程序代碼。交互式應(yīng)用程序是用戶與其相互作用、例如以獲得諸如電子程序指南、遠(yuǎn)程銀行事務(wù)應(yīng)用程序和游戲等的產(chǎn)品和服務(wù)、的應(yīng)用程序。提供了各種安全特征用于這些下載的應(yīng)用程序和數(shù)據(jù),如下所述·如果沒(méi)有被首先為指定網(wǎng)絡(luò)進(jìn)行驗(yàn)證,則不能下載任何內(nèi)容到接收器/解碼器,這防止了任何未登記的軟件在該接收器/解碼器中運(yùn)行。這意味著在該接收器/解碼器中運(yùn)行的任何軟件被識(shí)別了,而且已經(jīng)被完全地檢測(cè)了?!ひ粋€(gè)安全管理器限制應(yīng)用程序?qū)Ω鱾€(gè)存儲(chǔ)器區(qū)域的訪問(wèn),因此保證了數(shù)據(jù)完整性?!ぴ撓到y(tǒng)能夠與任何利用安全處理器(例如,插入在接收器/解碼器中的智能卡)的條件訪問(wèn)系統(tǒng)相接口。下列駐留的應(yīng)用程序被用來(lái)管理交互式應(yīng)用程序·Boot(啟動(dòng))。Boot應(yīng)用程序260是當(dāng)接收器/解碼器通電時(shí)啟動(dòng)的第一個(gè)應(yīng)用程序。Boot應(yīng)用程序起動(dòng)在虛擬機(jī)中不同的“管理程序”,其中第一個(gè)是應(yīng)用程序管理程序?!?yīng)用程序管理程序。應(yīng)用程序管理程序262管理在接收器/解碼器中運(yùn)行的交互式應(yīng)用程序,即它開(kāi)始、停止、中止、恢復(fù)、處理事件和處理在應(yīng)用程序之間的通信。它允許多個(gè)應(yīng)用程序同時(shí)運(yùn)行,因此涉及它們當(dāng)中的資源分配。這個(gè)應(yīng)用程序?qū)τ脩羰峭耆该鞯??!etUp(設(shè)置)。設(shè)置(SetUp)應(yīng)用程序的目的是配置接收器/解碼器,主要是在它被第一次使用時(shí)。它執(zhí)行諸如搜索電視頻道、設(shè)置日期與時(shí)間、建立用戶偏愛(ài)項(xiàng)等動(dòng)作。然而,設(shè)置(SetUp)應(yīng)用程序能被用戶隨時(shí)使用以改變接收器/解碼器的配置?!apping(頻道轉(zhuǎn)換)。頻道轉(zhuǎn)換應(yīng)用程序268被用來(lái)使用Program-up(上一個(gè)頻道)、Program-down(下一個(gè)頻道)和數(shù)字鍵變換頻道。當(dāng)另一個(gè)形式的頻道轉(zhuǎn)換被使用、例如通過(guò)一個(gè)標(biāo)題(導(dǎo)向)應(yīng)用程序使用時(shí),該頻道轉(zhuǎn)換應(yīng)用程序被停止?!せ卣{(diào)(Callback)。該回調(diào)應(yīng)用程序用來(lái)提取保存在該接收器/解碼器存儲(chǔ)器中的各種參數(shù)的值,并且經(jīng)由調(diào)制解調(diào)的返回通道17,或者通過(guò)其它方式返回這些值到商業(yè)操作員。API層252提供了用于交互式應(yīng)用程序開(kāi)發(fā)的高級(jí)工具。它包括幾個(gè)構(gòu)成這個(gè)高級(jí)API的程序包。程序包提供了運(yùn)行交互式應(yīng)用程序所必需的全部功能。該程序包可由應(yīng)用程序訪問(wèn)。在一個(gè)最佳實(shí)施例中,該API適于運(yùn)行用Java編程語(yǔ)言編寫的應(yīng)用程序。此外,它能夠解釋HTML及其它格式、諸如MHEG-5。除這些解釋程序之外,它還包含按照規(guī)定要求可分離和可擴(kuò)展的其它程序包和服務(wù)模塊。虛擬機(jī)層254由語(yǔ)言解釋器和各種模塊和系統(tǒng)組成。它包含了在接收器/解碼器中接收和執(zhí)行交互式應(yīng)用程序所必需的所有事物,包括下列內(nèi)容·LanguageInterpreters(語(yǔ)言解釋器)。能夠安裝不同的解釋器以便符合將被讀取的應(yīng)用程序類型。這些包括Java、HTML、MHEG-5和其它?!erviceInformation(SI)Engine(服務(wù)信息引擎(SI))。SIEngine加載并監(jiān)視公用的數(shù)字視頻廣播(DigitalVideoBroadcasting,DVB)或程序系統(tǒng)信息協(xié)議(ProgramSystemInformationProtocol,PSIP)表,并把它們放置到一個(gè)高速緩存中。它允許需要在它們中包含的數(shù)據(jù)的應(yīng)用程序訪問(wèn)這些表。·Scheduler(調(diào)度器)。這個(gè)模塊允許預(yù)先為空的、多線程的調(diào)度,其中每個(gè)線程都具有它自己的事件隊(duì)列。·MemoryManager(存儲(chǔ)器管理程序)。這個(gè)模塊管理對(duì)存儲(chǔ)器的訪問(wèn)。當(dāng)必要時(shí)它還自動(dòng)地壓縮在存儲(chǔ)器中的數(shù)據(jù),并且執(zhí)行自動(dòng)的垃圾收集?!ventManager(事件管理程序)。這個(gè)模塊允許依據(jù)優(yōu)先級(jí)觸發(fā)事件。它管理定時(shí)器和事件抓取,并且允許應(yīng)用程序彼此發(fā)送事件?!ynamicLinker(動(dòng)態(tài)鏈接器)。這個(gè)模塊允許解決從本地Java函數(shù)中產(chǎn)生的地址,從下載到RAM里的一個(gè)Java類中加載本地方法,并且解決從下載的本地代碼到ROM的調(diào)用。·Downloader(下載程序)。這個(gè)模塊使用從一個(gè)遠(yuǎn)程DSMCC圓盤傳送帶或通過(guò)NFS協(xié)議加載的自動(dòng)數(shù)據(jù),使下載的文件以與駐留文件同樣的方式被訪問(wèn)。還提供了存儲(chǔ)器清除、壓縮和驗(yàn)證?!lassManager(類管理程序)。這個(gè)模塊加載類,并且解決任何類引用問(wèn)題。·FileSystem(文件系統(tǒng))。這個(gè)模塊是緊湊的,而且被優(yōu)化用以管理一個(gè)具有多個(gè)ROM、閃速存儲(chǔ)器、RAM和DSMCC部分的分級(jí)文件系統(tǒng)。保證閃速存儲(chǔ)器的完整性以不受任何事故的影響。·SecurityManager(安全管理程序)。這個(gè)模塊驗(yàn)證應(yīng)用程序,并且控制應(yīng)用程序?qū)γ舾械拇鎯?chǔ)器及其它機(jī)頂盒區(qū)域的訪問(wèn)?!raphicsSystem(圖形系統(tǒng))。這個(gè)系統(tǒng)是面向?qū)ο蟮?,而且被?yōu)化了。它包含圖形窗口和對(duì)象管理,以及一個(gè)具有多種語(yǔ)言支持的矢量字體引擎。此外,支持DAVIC資源通知模型以便有效地管理客戶資源。設(shè)備接口層256包含一個(gè)設(shè)備管理程序和設(shè)備。設(shè)備是包含管理外部事件和物理接口所必需的邏輯資源的軟件模塊。設(shè)備層管理在驅(qū)動(dòng)程序和應(yīng)用程序之間的通信通道,并且提供增強(qiáng)的錯(cuò)誤異常檢查。某些被管理的設(shè)備的示例是卡閱讀器、調(diào)制解調(diào)器、網(wǎng)絡(luò)、PCMCIA(PersonalComputerMemoryCardInternationalAssociation,個(gè)人計(jì)算機(jī)存儲(chǔ)器卡國(guó)際聯(lián)合會(huì))、LED(發(fā)光二極管)顯示器等等。由于API層從上面控制這些設(shè)備,所以程序設(shè)計(jì)員不必直接處理這個(gè)層。系統(tǒng)軟件/硬件層258由接收器/解碼器的制造商提供。由于該系統(tǒng)的模塊化,以及由于由OS提供的服務(wù)(諸如事件調(diào)度和存儲(chǔ)器管理)是虛擬機(jī)的一部分,所以較高層不依賴于一個(gè)特定的實(shí)時(shí)操作系統(tǒng)(RTOS)或一個(gè)特定的處理器。窗口小部件集合在一個(gè)最佳實(shí)施例中,提供了用于在一個(gè)圖形用戶界面(GUI)中運(yùn)行的應(yīng)用程序中使用的一個(gè)窗口小部件集合。這樣一個(gè)窗口小部件集合的一個(gè)特定應(yīng)用是在一個(gè)數(shù)字電視接收器/解碼器的一個(gè)GUI顯示中提供窗口小部件。每個(gè)窗口小部件都被實(shí)現(xiàn)為一個(gè)面向?qū)ο蟮哪K,從而使得對(duì)于每個(gè)窗口小部件來(lái)說(shuō)都有一個(gè)相應(yīng)的窗口小部件類。因此,任何窗口小部件都可以通過(guò)繼承或者聚集其它窗口小部件類,從更簡(jiǎn)單的組件窗口小部件中構(gòu)成。圖3是在一個(gè)窗口小部件集合內(nèi)該窗口小部件分級(jí)結(jié)構(gòu)的一個(gè)簡(jiǎn)圖。在這個(gè)實(shí)施例中,該窗口小部件集合包含一組基本的窗口小部件類410,在其它當(dāng)中包含窗口和對(duì)話框框架、一個(gè)滑動(dòng)塊控制、一個(gè)按鈕、一個(gè)復(fù)選框、一個(gè)文本域、以及一個(gè)文本編輯框。在下一個(gè)復(fù)雜等級(jí)中,有組合幾個(gè)基本的窗口小部件類或者修改一個(gè)基本窗口小部件的行為的類420。例如,諸如一個(gè)列表框的窗口小部件可以從一個(gè)文本編輯框類中創(chuàng)建可編輯的列表項(xiàng),并且允許一個(gè)用戶使用從一個(gè)滑動(dòng)塊控制類中導(dǎo)出的一個(gè)滾動(dòng)條來(lái)滾動(dòng)該列表。在還有一個(gè)較高復(fù)雜等級(jí)中,該窗口小部件集合包含諸如一個(gè)文件選擇對(duì)話框的聚集窗口小部件430,該文件選擇對(duì)話框包含按鈕、可滾動(dòng)列表、文本區(qū)域以及文本編輯框,所有這些在該窗口小部件集合的其它類中定義。每一窗口小部件類都實(shí)現(xiàn)了方法和事件處理程序,以控制該窗口小部件的操作。該窗口小部件類也可以包含用于繪制該窗口小部件某些部分的方法。然而,為了為該窗口小部件提供一個(gè)特定外貌或者″外觀″,該窗口小部件類調(diào)用與該窗口小部件類相關(guān)的一個(gè)外觀對(duì)象類的繪制方法。這將在下面進(jìn)行進(jìn)一步的詳細(xì)描述。外觀類的公共方法以及API為了讓該外觀對(duì)象類和窗口小部件類能夠相互作用,有必要讓該外觀對(duì)象類具有一個(gè)一致的公共方法集合,該方法集合保證可以由該窗口小部件類使用。特別地,該外觀對(duì)象類必須提供一個(gè)標(biāo)準(zhǔn)的API,其包含該窗口小部件類能夠調(diào)用以便在一個(gè)GUI顯示上繪制它本身的方法。由窗口小部件使用的API在一個(gè)基類中定義,從該基類中導(dǎo)出所有的外觀類。該API包含以下單元1.一般的顯示方法2.特定的顯示方法3.創(chuàng)建和破壞實(shí)例的控制4.邊界控制5.修改控制一般的顯示方法是那些對(duì)于所有窗口小部件都可以用的方法,而特定的顯示方法是某些類型的窗口小部件所特有的方法。使用一個(gè)分層體系結(jié)構(gòu)構(gòu)造外觀。通過(guò)從導(dǎo)出它的類中繼承屬性、方法和缺省值,然后增加新的屬性、方法和缺省值,或者覆蓋那些繼承的東西中的某些或者全部,來(lái)創(chuàng)建一個(gè)新的外觀類。一個(gè)外觀類被組織為一個(gè)包含指向公共方法的指針表格。從另一個(gè)外觀類中導(dǎo)出的一個(gè)外觀類可以因此通過(guò)改變相關(guān)的指針以便指向另一個(gè)方法而重新定義一個(gè)方法。一般地,一個(gè)外觀類僅僅實(shí)現(xiàn)一些可用的公共方法。在一個(gè)實(shí)現(xiàn)中,提供了稱為偽方法的公共方法,其僅僅返回這個(gè)調(diào)用。如果一個(gè)沒(méi)有被該外觀類實(shí)現(xiàn)的方法被該窗口小部件調(diào)用了的話,則調(diào)用一個(gè)偽方法。這樣做是為了確保即使當(dāng)該方法事實(shí)上沒(méi)有被實(shí)現(xiàn)時(shí),方法調(diào)用的無(wú)錯(cuò)誤功能。調(diào)用偽方法的一個(gè)缺點(diǎn)是在調(diào)用一個(gè)無(wú)所作為方法中的時(shí)間浪費(fèi)。在另一個(gè)實(shí)現(xiàn)中,外觀類具有驗(yàn)證掩碼。一個(gè)驗(yàn)證掩碼定義哪個(gè)方法能夠被該外觀類調(diào)用,而使得沒(méi)有被實(shí)現(xiàn)的方法不被調(diào)用。一個(gè)窗口小部件能夠訪問(wèn)一個(gè)外觀類的驗(yàn)證掩碼以優(yōu)化該窗口小部件的繪制。在這種情況下,該窗口小部件知道沒(méi)有被實(shí)現(xiàn)的方法,因此該窗口小部件將避免產(chǎn)生到這些方法的調(diào)用。以這種方式,有可能防止在調(diào)用偽方法中浪費(fèi)的時(shí)間。一個(gè)外觀類可以從兩個(gè)或更多其他類中導(dǎo)出(多種繼承)。這能夠允許創(chuàng)建一個(gè)是兩個(gè)或更多其他外觀類的結(jié)合的外觀類。如上所述,當(dāng)創(chuàng)建一個(gè)外觀類時(shí),它采納了在從中導(dǎo)出它的外觀類中的屬性、方法和缺省值。為了實(shí)現(xiàn)多種繼承,該外觀還包含一個(gè)或多個(gè)指向從中導(dǎo)出它的屬性、方法和缺省值的附加類的指針。該外觀能因此訪問(wèn)那些屬性、方法和缺省值,而不用不得不復(fù)制或者創(chuàng)建它們本身。在另一個(gè)實(shí)施例中,當(dāng)創(chuàng)建一個(gè)外觀類時(shí),它采用了在從中導(dǎo)出它的所有外觀類中的屬性、方法和缺省值。多種繼承的原理在要設(shè)計(jì)不標(biāo)準(zhǔn)窗口小部件的情況下也是有用的,其可能要求該外觀實(shí)現(xiàn)非標(biāo)準(zhǔn)的方法。在該外觀中的一個(gè)指針能夠指向包含顯示該窗口小部件所需要的非標(biāo)準(zhǔn)方法的一個(gè)第二外觀類。確保從中導(dǎo)出一個(gè)外觀的各種外觀類不相互沖突是重要的。這能夠通過(guò)保證該附加外觀類僅僅包含不在從中導(dǎo)出該外觀的主外觀類中的方法,或者向各個(gè)類給定一個(gè)優(yōu)先級(jí)次序,來(lái)完成。一個(gè)外觀對(duì)象類的公共方法的示例如下所示。/*實(shí)例初始化*/MhwWgtLookInitDefault(MhwWgtLookclass*MhwWgtLookAtts*);MhwWgtLookInitClass(Void);MhwWgtLookResetDefault(MhwWgtLookclass*);MhwWgtLookAttsGetDefault(MhwWgtLookClass*,MhwWgtLookAtts*);MhwWgtLookAttslnit(MhwWgtLookAtts*);/*檢索和設(shè)置邊界尺寸*/MhwWgtLookAttsGetBorderwidthBottotm(MhwWgtLookAtts*,Card8*);MhwWgtLookAttsGetBorderWidthLeft(MhwWgtLookAtts*,Card8*);MhwWgtLookAttsGetBorderWidthRight(MhwWgtLookAtts*,Card8*);MhwWgtLookAttsGetBorderWidthTop(MhwWgtLookAtts*,Card8*);MhwWgtLookAttsSetBorderwidthBottom(MhwWgtLookAtts*,Card8);MhwWgtLookAttsSetBorderWidthLeft(MhwWgtLookAtts*,Card8);MhwWgtLookAttsSetBorderwidthRight(MhwWgtLookAtts*,Card8);MhwWgtLookAttsSetBorderWidthTop(MhwWgtLookAtts*,Card8);/*檢索和設(shè)置顏色*/MhwWgtLookAttsGetColorBackground(MhwWgtLookAtts*,MhwWgtColor*);MhwWgtLookAttsGetColorBlack(MhwWgtLookAtts*,MhwWgtColor*);MhwWgtLookAttsGetColorDarkGray(MhwWgtLookAtts*,MhwWgtColor*);MhwWgtLookAttsGetColorForeground(MhwWgtLookAtts*,MhwWgtColor*);MhwWgtLookAttsGetColorHighlight(MhwWgtLookAtts*,MhwWgtColor*);MhwWgtLookAttsGetColorLightGray(MhwWgtLookAtts*,MhwWgtColor*);MhwWgtLookAttsGetColorMapAndVisual(MhwWgtLookAtts*,MhwWgtColorMapId*,MhwWgtVisual*);MhwWgtLookAttsGetColorMiddleGray(MhwWgtLookAtts*,MhwWgtColor*);MhwWgtLookAttsGetColorTransparent(MhwWgtLookAtts*,MhwWgtColor*);MhwWgtLookAttsGetColorVeryLightGray(MhwWgtLookAtts*,MhwWgtColor*);MhwWgtLookAttsGetColorWhite(MhwWgtLookAtts*,MhwWgtColor*);MhwWgtLookAttsSetColorBackground(MhwWgtLookAtts*,MhwWgtColor*);MhwWgtLookAttsSetColorBlack(MhwWgtLookAtts*,MhwWgtColor*);MhwWgtLookAttsSetColorDarkGray(MhwWgtLookAtts*,MhwWgtColor*);MhwWgtLookAttsSetColorForeground(MhwWgtLookAtts*,MhwWgtColor*);MhwWgtLookAttsSetColorHighlight(MhwWgtLookAtts*,MhwWgtColor*);MhwWgtLookAttsSetColorLightGray(MhwWgtLookAtts*,MhwWgtColor*);MhwWgtLookAttsSetColorMapAndVisual(MhwWgtLookAtts*,MhwWgtColorMapId,MhwWgtVisual);MhwWgtLookAttsSetColorMiddleGray(MhwWgtLookAtts*,MhwWgtColor);MhwWgtLookAttsSetColorTransparent(MhwWgtLookAtts*,MhwWgtColor);MhwWgtLookAttsSetColorVeryLightGray(MhwWgtLookAtts*,MhwWgtColor);MhwWgtLookAttsSetColorWhite(MhwWgtLookAtts*,MhwWgtColor);/*檢索和設(shè)置繼承數(shù)據(jù)*/MhwWgtLookAttsGetHeritageDatal(MhwWgtLookAtts*,Void**);MhwWgtLookAttsSetHeritageDatal(MhwWgtLookAtts*,Void*);/*構(gòu)造器*/MhwWgtLookNew(MhwWgtLookAtts*);/*析構(gòu)器*/MhwWgtLookDelete(anObject)/*標(biāo)準(zhǔn)API*/MhwWgtLookDrawAnchor(anObject,aWidget,aX,aY,aW,aH,aText,aLength,anAscent,aState)MhwWgtLookDrawBackground(anObject,aWidget,aX,aY,aW,aH)MhwWgtLookDrawCheckSymbol(anObject,aWidget,aX,aY,aW,aH,aState,aSymbol)MhwWgtLookDrawChoiceSymbol(anObject,awidget,aX,aY,aW,aH)MhwWgtLookDrawCross(anObject,awidget,aX,aY,aW,aH)MhwWgtLookDrawCursor(anObject,aWidget,aX,aY,anAscent,aH)MhwWgtLookDrawForeground(anObject,aWidget,ax1aY1aW,aH)MhwWgtLookDrawFocus(anObject,aWidget,aX,aY,aW,aH)MhwWgtLookDrawHighlight(anObject,aWidget,aX,aY,aW,aH)MhwWgtLookDrawInset(anObject,awidget1aX,aY,aW,aH)MhwWgtLookDrawIterm(anObject,aWid9et,aX,aY,aW,aH,aText,aTextLength,anAscent,aState)MhwWgtLookDrawOutset(anObject,aWidget,aX,aY,aW,aH)MhwWgtLookDrawRelief(anObject,aWidget,aX,aY,aW,aH,aRelief)MhwWgtLookDrawSelectedBG(anObject,aWidget,aX,aY,aW,aH)MhwWgtLookDrawSlidArrow(anObject,aWidget,aX,aY,aW,aH,aDirection)MhwWgtLookDrawSlidLift(anObject,awidget,aX,aY,aW,aH)MhwWgtLookDrawString(anObject,aWidget,aX,aY,aText,aLength,anAscent)MhwWgtLookGetBorderWidth(anObject,aBorder)MhwWgtLookGetClassId(anObject)MhwWgtLookGetClassName(anObject)MhwWgtLookGetItemBorderWidth(anObject)MhwWgtLookGetMethodMask(anObject)MhwWgtLookGetPreferredSizeArrow(anObject)MhwWgtLookGetPreferredSizeCheck(anObject)MhwWgtLookGetPreferredSizeChoice(anObject)MhwWgtLookGetPreferredSizeCross(anObject)MhwwgtLookGetUpdateCounter(anObject)MhwWgtLookIsInstanceOf(anObject,aClassId)MhwWgtLookReDrawItem(anObject,awidget,aX1aY,aW,aH,aText,aLength,anAscent,aState)MhwWgtLookRef(anObject)MhwWgtLookSetBorderWidth(anObject,aBorder,aWidth)MhwWgtLockUnDrawCross(anObject,aWidget,aX,aY,aW,aH)MhwWgtLookUnDrawCursor(anObject,awidget,aX,aYanAscent,aH)MhwWgtLookunDrawFocus(anObject,awidget,aX,aY,aW,aH)MhwwgtLookunDrawHighlight(anObject,aWidget,aX,aY,aW,aH)MhwWgtLookunDrawRelief(anObject,awidget,aX,aY,aW,aH)MhwWgtLookunRef(anObject)MhwWgtLookGetBackground(anObject)MhwWgtLookGetColorBlack(anObject)MhwWgtLookGetColorDarkGray(anObject)MhwWgtLookGetColorHighlight(anObject)MhwWgtLookGetColorLightGray(anObject)MhwWgtLookGetColorMap(anObject)MhwWgtLookGetColorMiddleGray(anObject)MhwWgtLookGetColorTransparent(anObject)MhwWgtLookGetColorVeryLightGray(anObject)MhwWgtLookGetColorWhite(anObject)MhwWgtLookGetColorForeground(anObject)MhwWgtLookGetColorHeritageDatal(anObject)MhwWgtLookGetColorHeritageLinkl(anObject)創(chuàng)建和顯示一個(gè)窗口小部件當(dāng)一個(gè)應(yīng)用程序要求在一個(gè)GUI的顯示上顯現(xiàn)一個(gè)窗口小部件時(shí),它必須執(zhí)行的第一個(gè)任務(wù)是構(gòu)造該窗口小部件類的一個(gè)實(shí)例。在創(chuàng)建該窗口小部件實(shí)例期間,一個(gè)外觀類實(shí)例變得與該窗口小部件類實(shí)例相關(guān)聯(lián)。如下所述選擇該特定外觀1.如果一個(gè)外觀類實(shí)例由該應(yīng)用程序傳遞到該構(gòu)造器,則使用它。2.否則,如果有一個(gè)缺省外觀的話,則使用該為正創(chuàng)建的窗口小部件類指定的缺省外觀。3.否則,如果有一個(gè)缺省外觀的話,則使用為該窗口小部件環(huán)境指定的缺省外觀。4.否則,使用用于該窗口小部件集合的缺省外觀。一旦已經(jīng)實(shí)例化了該窗口小部件類,則該應(yīng)用程序能夠激活它的公共方法中的適當(dāng)一個(gè)以顯示它。該窗口小部件類更可取地是還向能夠被調(diào)用的一個(gè)公共方法提供一個(gè)指向一個(gè)外觀類實(shí)例的指針,而且因此外觀類實(shí)例變得與該窗口小部件類實(shí)例相關(guān)聯(lián)。這導(dǎo)致該窗口小部件的外觀根據(jù)該新關(guān)聯(lián)的外觀類實(shí)例而改變。應(yīng)當(dāng)理解“關(guān)聯(lián)”,實(shí)際上只不過(guò)是設(shè)置在該窗口小部件類實(shí)例中的一個(gè)字段的值。在最簡(jiǎn)單的實(shí)施例中,僅僅通過(guò)做出對(duì)該字段的一個(gè)賦值就能夠進(jìn)行該窗口小部件與一個(gè)不同外觀類的關(guān)聯(lián)。(然而,參見(jiàn)在下面有關(guān)存儲(chǔ)器管理和方法MhwWgtXxxSetLook的注釋)此外,許多窗口小部件類實(shí)例可以與一個(gè)外觀類實(shí)例相關(guān)聯(lián)。這在圖5中圖解說(shuō)明了。當(dāng)調(diào)用一個(gè)窗口小部件類方法,以在一個(gè)GUI顯示上繪制該窗口小部件時(shí),它按以下順序構(gòu)造該窗口小部件的圖像1.該窗口小部件的背景(例如,一個(gè)背景色或者一幅圖像)。2.背景覆蓋(例如,一個(gè)商標(biāo))3.該窗口小部件的前景4.前景覆蓋(例如,一個(gè)商標(biāo))5.該窗口小部件邊界。6.突出顯示7.輸入焦點(diǎn)。對(duì)于一個(gè)給定的窗口小部件,某些部分可能是不存在的。該窗口小部件一部分的存在與否取決于以下條件。1.硬編碼。一些沒(méi)有為窗口小部件的某些類定義的部分。2.可選部分。例如,借助于該窗口小部件的一個(gè)公共屬性,可以隨意禁止焦點(diǎn)、凸起和突出顯示。3.外觀定義。一個(gè)外觀能夠省略一個(gè)或多個(gè)部分。在一個(gè)典型實(shí)例中,執(zhí)行以下步驟。首先由該窗口小部件類方法本身繪制該窗口小部件的背景,例如,通過(guò)涂抹一個(gè)背景色、一個(gè)背景模式或者一幅圖像來(lái)完成。然后通過(guò)激活關(guān)聯(lián)的外觀實(shí)例的公共方法MhwWgtLookDrawBackground、指定該窗口小部件在該顯示上的高度、寬度和位置的適當(dāng)參數(shù),來(lái)繪制該背景覆蓋。因此由該外觀,例如通過(guò)覆蓋一個(gè)商標(biāo)來(lái)修改該背景外觀。該窗口小部件類方法然后必須構(gòu)造該窗口小部件的前景;這就是說(shuō),它創(chuàng)建實(shí)際上由一個(gè)用戶操作或者當(dāng)使用該窗口小部件時(shí)顯示信息的圖像對(duì)象。例如,該窗口小部件可以實(shí)現(xiàn)一個(gè)復(fù)選框,而在這樣情況下它激活該外觀類方法MhwWgtLookDrawCheckSymbol。該外觀然后可以例如通過(guò)覆蓋一個(gè)商標(biāo),來(lái)修改前景。然后繪制該窗口小部件的邊界區(qū)域,如將在下面描述的那樣。如果該窗口小部件類確定在該窗口小部件中的一個(gè)對(duì)象具有輸入焦點(diǎn),則它激活該外觀類方法MhwWgtLookDrawFocus以在該顯示的窗口小部件中指示這個(gè)。類似地,如果部分該窗口小部件被突出顯示,則該窗口小部件類調(diào)用外觀類方法MhwWgtLookDrawHighlight。窗口小部件邊界管理該外觀在一個(gè)GUI顯示上控制該窗口小部件外觀的方法的一個(gè)具體示例是邊界的管理。在圖4中顯示了在一個(gè)GUI顯示上,具有邊界處于它最一般形式的一個(gè)窗口小部件的外觀。窗口小部件500在一個(gè)GUI顯示中占據(jù)一個(gè)矩形區(qū)域。由該窗口小部件占據(jù)的區(qū)域包含兩個(gè)區(qū)域一個(gè)由一個(gè)邊界區(qū)域圍繞的內(nèi)部操作區(qū)域510。該邊界區(qū)域一般不對(duì)該窗口小部件的功能有所幫助(雖然它可以,有時(shí)候由一個(gè)用戶使用來(lái)移動(dòng)和/或重新調(diào)整該窗口小部件大小)。因此,根據(jù)一個(gè)用戶的希望,該邊界區(qū)域的外觀變化有相當(dāng)大的范圍。例如,顏色,寬度、背景模式全部能夠被選擇以吸引一個(gè)用戶或者提供一個(gè)一致的外觀。因此,繪制該邊界的職責(zé)被給予該外觀類。該外觀維護(hù)四個(gè)尺寸以指定該邊界寬度。這些指定從該操作區(qū)域510的左邊、右邊、頂端和底端到該窗口小部件邊緣的距離。這些尺寸分別在圖4中以L、R、T、和B指示。這些尺寸值在缺省的外觀中指定。一個(gè)應(yīng)用程序可以定義一個(gè)從該缺省外觀類中導(dǎo)出的類,在該類中覆蓋這些值以創(chuàng)建一個(gè)外觀,該外觀創(chuàng)建具有一個(gè)不標(biāo)準(zhǔn)寬度邊界的窗口小部件。一個(gè)應(yīng)用程序(例如,一個(gè)外觀管理器)還能夠在運(yùn)行時(shí)間通過(guò)調(diào)用外觀方法MhwWgtLookAttsSetBorderwidthBottom,MhwWgtLookAttsSetBorderWidthLeft,MhwWgtLookAttsSetBorderwidthRight,或者M(jìn)hwWgtLookAttaSetBorderWidthTop來(lái)改變?cè)撔┲?。在該外觀類中,具有依據(jù)由該窗口小部件類傳遞到該外觀類的值,控制一個(gè)邊界的詳細(xì)布局的代碼。窗口小部件顏色管理一個(gè)外觀還包含一個(gè)顏色定義,以便使與一個(gè)特定外觀實(shí)例有關(guān)的任何窗口小部件實(shí)例將使用在那個(gè)外觀實(shí)例中定義的顏色。在一個(gè)實(shí)施例中,一個(gè)外觀定義了以下顏色·黑色·暗灰色·中灰色·淺灰色·非常淺灰色·白色·透明·突出顯示顏色當(dāng)繪制一個(gè)窗口小部件時(shí)使用在該外觀中的顏色定義。例如,如果當(dāng)顯示一個(gè)窗口小部件時(shí)將繪制一條黑線,則將使用已經(jīng)被定義為“黑色”的顏色。例如,如果該外觀將具有一個(gè)紅色調(diào),則“黑色”可能定義為暗紅,而“白色”可能被定義為亮粉紅色,并且兩者之間定義紅色的各種色調(diào)。在這個(gè)示例中,通常將繪制一條黑線的一個(gè)繪制操作將被代之以繪制一條暗紅線,等等。此外,該外觀定義了一個(gè)顏色映射,其設(shè)置了當(dāng)在一個(gè)GUI的顯示上顯示任何特定顏色時(shí)要被使用的實(shí)際色值。創(chuàng)建一個(gè)修改的窗口小部件假如該缺省外觀的方法MhwWgtLookDrawCheckSymbol繪制了一個(gè)矩形方框,該方框取決于它的狀態(tài)是空的或者包含一個(gè)小的點(diǎn)符號(hào),且這個(gè)在一個(gè)GUI中定義了一個(gè)正常復(fù)選框的外觀。現(xiàn)在假定要求在其中顯示一個(gè)點(diǎn)或者一個(gè)交叉的另一個(gè)窗口小部件。由于該外觀由該外觀類完全控制,所以僅僅需要改變?cè)撏庥^類。此外,實(shí)現(xiàn)這個(gè)行為的一個(gè)新外觀類能夠從存在的外觀類中導(dǎo)出,并且提供僅僅一個(gè)方法MhwWgtLookDrawCheckSymbol來(lái)覆蓋在該基外觀類中同名的方法。此外,當(dāng)用參數(shù)aState設(shè)置為真來(lái)調(diào)用方法MhwWgtLookDrawCheckSymbol時(shí),能夠調(diào)用基類的方法MhwWgtLookDrawCheckSymbol來(lái)繪制一個(gè)點(diǎn)。需要編寫的新代碼僅僅需要處理其中將要繪制一個(gè)交叉的情況。因此能夠用最少的編程努力來(lái)創(chuàng)建一個(gè)新的窗口小部件。應(yīng)當(dāng)理解這個(gè)過(guò)程不改變?cè)袕?fù)選框窗口小部件的外觀;這個(gè)窗口小部件使用沒(méi)有被修改的基本外觀類。為了在一個(gè)應(yīng)用程序中對(duì)原有復(fù)選框窗口小部件的外觀實(shí)施一個(gè)改變,必須修改在該基本外觀類中的方法MhwWgtLookDrawCheckSymbol在該外觀類和該應(yīng)用程序鏈接的下一個(gè)時(shí)機(jī)(在編譯時(shí)、或者運(yùn)行時(shí)、看情況而定)之后,從那個(gè)類導(dǎo)出的全部復(fù)選框窗口小部件然后將改變它們的外觀。該窗口小部件類原理上將協(xié)作以創(chuàng)建一個(gè)窗口小部件,該窗口小部件具有任何具有一個(gè)適當(dāng)公共方法和屬性組的類作為一個(gè)外觀類。然而,從盡可能小數(shù)量的公用基類,以及最理想是只有一個(gè)基類,中導(dǎo)出全部外觀類是有利的。那些熟悉面向?qū)ο缶幊痰娜藢⒗斫膺@將最小化由該外觀類使用的存儲(chǔ)器及其他資源。一個(gè)導(dǎo)出的類具有一個(gè)指向它的基類的指針,以便它能夠訪問(wèn)該基類的方法代碼和靜態(tài)資料而不用在存儲(chǔ)器中復(fù)制這樣的代碼或者數(shù)據(jù)。版本控制可能某些窗口小部件實(shí)例具有一個(gè)非常長(zhǎng)的壽命。例如,一個(gè)窗口管理程序的根窗口、在一個(gè)工作站顯示屏中的任務(wù)條窗口小部件、等等。在這樣的情況下,該外觀類在該窗口小部件的生命期間被更新具有一個(gè)強(qiáng)烈的可能性。當(dāng)這發(fā)生時(shí),必須導(dǎo)致該窗口小部件類被本身重新繪制。一種實(shí)現(xiàn)這個(gè)的方法是向每個(gè)外觀類給定一個(gè)更新計(jì)數(shù)器,其作為一個(gè)公共屬性導(dǎo)出或者可通過(guò)一個(gè)公共方法進(jìn)行訪問(wèn)。當(dāng)實(shí)例化一個(gè)窗口小部件類時(shí),該窗口小部件類實(shí)例查詢關(guān)聯(lián)外觀的更新計(jì)數(shù)器,并且在該窗口小部件類實(shí)例的本地存儲(chǔ)器中存儲(chǔ)該更新計(jì)數(shù)器的值。如果該外觀類的實(shí)例被隨后更新了,通過(guò)比較保存在它的本機(jī)存儲(chǔ)器中的值和在該外觀類實(shí)例中更新計(jì)數(shù)器的值,該窗口小部件類實(shí)例能夠檢測(cè)到這個(gè)改變。如果該外觀類實(shí)例已經(jīng)被更新了,則該窗口小部件能因此使用該外觀類的方法重新繪制它本身構(gòu)造和析構(gòu)外觀類實(shí)例通常,每個(gè)外觀類的實(shí)例要比每個(gè)窗口小部件類的實(shí)例少。在某些情況下,在一個(gè)應(yīng)用程序中,可能僅僅只有一個(gè)外觀基類實(shí)例被全部窗口小部件類的實(shí)例所引用。還有可能有導(dǎo)出的外觀類的實(shí)例被一個(gè)應(yīng)用程序的某些窗口小部件類實(shí)例所引用。然而,一個(gè)窗口小部件類不能假定在該窗口小部件類正在實(shí)例化的時(shí)候總是存在一個(gè)外觀類實(shí)例;該窗口小部件實(shí)例可能是第一個(gè)要求與一個(gè)特定外觀類關(guān)聯(lián)的實(shí)例。因此,建議在實(shí)例化每個(gè)窗口小部件類期間,該窗口小部件類構(gòu)造器激活關(guān)聯(lián)外觀類的構(gòu)造器MhwWgtLookNew。如果沒(méi)有該外觀類的實(shí)例存在,則創(chuàng)建一個(gè)新的實(shí)例。然后值1被保存在一個(gè)引用計(jì)數(shù)器中,該計(jì)數(shù)器保持在該外觀類實(shí)例的局部存儲(chǔ)器中。如果已經(jīng)存在了該外觀類的一個(gè)實(shí)例,則該外觀類構(gòu)造器返回一個(gè)指向它的指針,并且遞增該引用計(jì)數(shù)器。在析構(gòu)每個(gè)窗口小部件類實(shí)例期間,該窗口小部件類的析構(gòu)器調(diào)用用于關(guān)聯(lián)外觀類實(shí)例的析構(gòu)器MhwWgtLookDelete。該析構(gòu)器MhwWgtLookDelete遞減該引用計(jì)數(shù)器。如果該計(jì)數(shù)器保持大于零,則該析構(gòu)器簡(jiǎn)單地返回。然而,如果該析構(gòu)器達(dá)到零,則沒(méi)有窗口小部件類實(shí)例(除了那個(gè)進(jìn)行析構(gòu)的以外)與那個(gè)外觀類實(shí)例相關(guān)聯(lián),而在這樣情況下該外觀類析構(gòu)器繼續(xù)從存儲(chǔ)器中刪除該外觀類實(shí)例。能夠調(diào)用該窗口小部件類方法MhwWgtXxxSetLook來(lái)改變與一個(gè)特定窗口小部件類實(shí)例關(guān)聯(lián)的外觀。在這個(gè)方法中,首先進(jìn)行對(duì)不要的外觀類實(shí)例的析構(gòu)器的調(diào)用,并且然后進(jìn)行一個(gè)對(duì)該新外觀類的引用函數(shù)的調(diào)用以獲得一個(gè)指向一個(gè)類實(shí)例的指針。這個(gè)確保該外觀類的引用計(jì)數(shù)器被正確地更新。還必須規(guī)定,即使已經(jīng)存在一個(gè)實(shí)例還要?jiǎng)?chuàng)建一個(gè)外觀類的一個(gè)新實(shí)例。這允許一個(gè)應(yīng)用程序具有任何給定外觀類的多于一個(gè)實(shí)例,并且在不同的實(shí)例中設(shè)置不同的屬性。例如可能有同一個(gè)外觀類的兩個(gè)實(shí)例,它們?cè)谒蟹矫娑际窍嗤?,除了一個(gè)具有根據(jù)它們的缺省值保持全部屬性,而另一個(gè)具有分配給它的一個(gè)或多個(gè)屬性的不同值(邊界寬度、顏色、等等)。外觀管理程序應(yīng)當(dāng)理解,外觀類和實(shí)例的系統(tǒng)允許非常詳細(xì)地控制一個(gè)應(yīng)用程序的整體外觀。例如,任何外觀的僅僅一個(gè)屬性能夠被改變,以對(duì)一個(gè)應(yīng)用程序的外觀實(shí)施一個(gè)較小的改變。因此,可以提供一個(gè)外觀管理器應(yīng)用程序以允許一個(gè)用戶按要求改變這些屬性。這樣一個(gè)應(yīng)用程序一般包含一個(gè)GUI顯示,該顯示包含體現(xiàn)本發(fā)明的窗口小部件,以便該用戶能夠立即看見(jiàn)改變?cè)谠摯翱谛〔考耐庥^上的外觀屬性的效果。網(wǎng)絡(luò)瀏覽器現(xiàn)在將參考附圖描述該國(guó)際互鏈網(wǎng)導(dǎo)航界面。圖6a顯示了一個(gè)國(guó)際互鏈網(wǎng)瀏覽器的主要屏幕導(dǎo)航顯示屏的一個(gè)屏幕截圖。該主要屏幕顯示了一個(gè)包含該主菜單的垂直鏈1100,其中該主菜單包含作為一個(gè)鏈接表的各個(gè)按鈕。按鈕通過(guò)該鏈的鏈接單元進(jìn)行鏈接。在圖6a的鏈1100中顯示的按鈕包含RELOADSTOP按鈕1110、PREVIOUS按鈕1120,NEXT按鈕1130、HISTORY按鈕1140、BOOKMARK按鈕1150、SETTINGS按鈕1160以及QUIT按鈕1170。該主菜單鏈1100被安排以附加在要在屏幕1101上顯示的超文本標(biāo)志語(yǔ)言文件(HTML)上。在圖6a中,沒(méi)有HTML文件被顯示,而且除了該主菜單鏈1100之外,屏幕1101為空。該網(wǎng)絡(luò)瀏覽器包含幾個(gè)能夠由該用戶設(shè)置的首選項(xiàng)。該瀏覽器包含一個(gè)設(shè)備用于設(shè)置幾個(gè)用戶簡(jiǎn)檔表。該用戶具有一個(gè)控制器,利用該控制器他能夠在在該屏幕1101上的對(duì)象之間定位,突出顯示對(duì)象并且選定對(duì)象。在本示例中,使用的控制器是一個(gè)電視遙控裝置1180。數(shù)字鍵1181用來(lái)輸入數(shù)據(jù);光標(biāo)小鍵盤1182用來(lái)沿著該屏幕導(dǎo)航。光標(biāo)小鍵盤1182包含一個(gè)UP鍵1183、一個(gè)DOWN鍵1184、一個(gè)LEFT鍵1185和一個(gè)RIGHT鍵1187。該光標(biāo)小鍵盤1182還包含一個(gè)SELECT鍵1186用來(lái)在該屏幕上選擇對(duì)象。UP鍵1183和DOWN鍵1184用來(lái)移動(dòng)一個(gè)焦點(diǎn),在這個(gè)示例中是在鏈1100中上下移動(dòng)的突出顯示,以有選擇地突出顯示按鈕1110、1120、1130、1140、1150、1160和1170。當(dāng)一個(gè)按鈕被突出顯示時(shí),它能夠使用選擇鍵1186被選擇。當(dāng)顯示一個(gè)HTML頁(yè)時(shí),遙控器的任何按鈕調(diào)用鏈1100(工具條)。鏈1100還能夠由該用戶打開(kāi)和關(guān)閉。在一個(gè)設(shè)置選項(xiàng)中,當(dāng)顯示一個(gè)新HTML頁(yè)時(shí)自動(dòng)地隱藏鏈1100,當(dāng)用戶想要移動(dòng)到另一個(gè)HTML頁(yè)時(shí),他調(diào)用鏈1100。圖7顯示了具有一個(gè)HTML文件打開(kāi)的圖6a的屏幕,有關(guān)該打開(kāi)文檔的信息在一個(gè)在該鏈中、鏈接到該RELOAD/STOP按鈕1110的文本框1112中給出。將看到在按鈕之間的鏈鏈接1114向該用戶可視地指示他能夠沿鏈接的方向在按鈕之間移動(dòng)。圖6a顯示了突出顯示的RELOAD/STOP按鈕(該突出顯示的RELOAD/STOP圖標(biāo)是在一個(gè)黑暗背景上的白色,而不是如在圖7中它沒(méi)有被突出顯示時(shí)所示,在一個(gè)白色背景上的暗色)。當(dāng)該RELOAD/STOP按鈕被突出顯示時(shí),能夠通過(guò)按下選擇鍵1186來(lái)重新加載該HTML文檔。該用戶使用DOWN鍵1184沿著鏈1100向下移動(dòng)該突出顯示。在圖7中,現(xiàn)在PREVIOUS按鈕1120被突出顯示。圖8顯示了,當(dāng)突出顯示在PREVIOUS按鈕1120上時(shí),包含一個(gè)文本框1122的″工具提示″如何能在該屏幕出現(xiàn)。在本示例中,一旦相關(guān)的圖標(biāo)被突出顯示時(shí),就顯示該工具提示。能夠設(shè)置這個(gè)首選項(xiàng)以便當(dāng)該按鈕被突出顯示時(shí),在一個(gè)延遲之后顯示該工具提示。文本框1122包含詞″前面″,以指示PREVIOUS按鈕1120的功能。通過(guò)激活該P(yáng)REVIOUS按鈕,以及通過(guò)按下SELECT鍵1186,瀏覽器轉(zhuǎn)移到查看過(guò)的前一頁(yè)。在圖9中,該突出顯示向下移動(dòng)到NEXT按鈕1130,并且在一個(gè)短時(shí)間之后,顯現(xiàn)一個(gè)包含一個(gè)文本框1132的工具提示以幫助該用戶,該文本框1132包含單詞“下一個(gè)”。在圖10中,HISTORY按鈕1140被突出顯示并且顯現(xiàn)具有單詞“歷史記錄”的相關(guān)工具提示1142。HISTORY按鈕1140具有多于一個(gè)的功能,因此通過(guò)按下在該控制小鍵盤上的SELECT鍵激活該按鈕,以導(dǎo)致顯現(xiàn)一個(gè)子鏈1144,其給定與該歷史記錄功能有關(guān)的進(jìn)一步選項(xiàng)。在圖11中顯示了子鏈1144。子鏈1144包含附加的按鈕,這些按鈕包括一個(gè)VIEW按鈕1146和一個(gè)ADD按鈕1148。該用戶使用RIGHT和LEFT鍵1187、1185沿著子鏈1144移動(dòng)。在圖11的屏幕顯示中,突出顯示VIEW按鈕,并且顯現(xiàn)一個(gè)工具提示1147以告訴該用戶突出顯示的按鈕是VIEW。應(yīng)當(dāng)注意到,附著于主鏈1100的工具提示顯示在鏈1100的右手側(cè);用于子鏈的工具提示顯示在該子鏈的上面。用于該工具提示的方框尺寸與要被顯示的一個(gè)或者多個(gè)單詞的長(zhǎng)度相配。能夠設(shè)置不同的語(yǔ)言首選項(xiàng),用于該工具提示的方框尺寸更可取地是與在選擇語(yǔ)言中的單詞長(zhǎng)度相匹配。圖12顯示了當(dāng)選擇VIEW按鈕時(shí)獲得的顯示。一個(gè)VIEWHISTORY窗口1141能夠在該屏幕上顯示,其具有一個(gè)標(biāo)題1143(在這里已經(jīng)選擇了用于該標(biāo)題的法語(yǔ)語(yǔ)言選項(xiàng))以及由該用戶查看過(guò)的前一頁(yè)的詳細(xì)數(shù)據(jù)1145。該用戶可以使用該SELECT鍵1186上下滾動(dòng)該文本并且突出顯示詳細(xì)資料1145的一個(gè)。該LEFT和RIGHT鍵用來(lái)突出顯示OKCANCEL鍵1149、1149。圖13顯示了突出顯示的ADD按鈕1148以及它相關(guān)的工具提示。ADD按鈕1148用來(lái)把當(dāng)前顯示頁(yè)增加要?dú)v史列表1145中。圖14顯示了突出顯示的BOOKMARK按鈕1150以及它相關(guān)的工具提示1151。在圖15中,已經(jīng)選擇了BOOKMARK按鈕1150而且顯示了包含工具提示1151、VIEW、ADD、DELETE以及EDIT按鈕1153、1154、1155、1156的書簽子鏈1152。在圖15中,突出顯示了VIEW按鈕1153以及它顯示的工具提示。VIEW按鈕1153被選擇而且顯示了VIEW窗口1157(參見(jiàn)圖16)。(將可以看到,為了清楚起見(jiàn),當(dāng)該查看窗口1157在該屏幕上時(shí)不顯示書簽子鏈1152。)VIEW窗口1157包含一個(gè)標(biāo)題,以及一個(gè)可滾動(dòng)文本框列表書簽。對(duì)于VIEWHISTORY窗口,該窗口還包含OK和CANCEL鍵。該光標(biāo)小鍵盤1182用來(lái)導(dǎo)航該窗口以及如果期望的話,選擇一個(gè)書簽。在圖17中,突出顯示了ADD按鈕1154而且顯示了它的工具提示。如果選擇了ADD按鈕,則顯示ADD窗口(參見(jiàn)圖18)。該ADD窗口1158包含兩個(gè)用于文本輸入的方框,以輸入該書簽的URL以及它的標(biāo)題。使用數(shù)字鍵1181(例如使用在這里描述的在屏幕上鍵盤)把數(shù)據(jù)輸入到該窗口中。該窗口還包含如上所述的OK和CANCEL鍵。該用戶使用光標(biāo)1182在文本輸入框和OK以及CANCEL鍵之間導(dǎo)航。圖19顯示了突出顯示的DELETE按鈕1155以及它的工具提示。通過(guò)選擇DELETE按鈕1155,可以刪除書簽。圖20顯示了突出顯示的EDIT按鈕1156以及它的工具提示。通過(guò)選擇EDIT按鈕1156,可以編輯書簽。圖21顯示了書簽子鏈1152的一種替換形式,其中不顯示書簽工具提示1151。這個(gè)能夠保存在該屏幕上的空間,特別地如果該子鏈?zhǔn)情L(zhǎng)的話。該工具提示的外觀是一個(gè)能夠由該用戶選擇的選項(xiàng)。圖22顯示了突出顯示的SETTINGS按鈕以及它的工具提示1161。當(dāng)選擇SETTINGS時(shí),顯示該驗(yàn)證窗口1165(參見(jiàn)圖22)以提示該用戶在能夠改變?cè)O(shè)置之前標(biāo)識(shí)他自己并且給出該用戶口令。該驗(yàn)證窗口1165包含兩個(gè)文本輸入框用于使用數(shù)字鍵1181以及OK和CANCEL按鈕輸入該用戶名和口令。一旦正確的用戶名和口令已經(jīng)輸入到該驗(yàn)證窗口1165中并且選擇了OK按鈕,就顯示了設(shè)置子鏈1162,參見(jiàn)圖24。該設(shè)置子鏈1162包含MODEM按鈕1163以及BROWSER按鈕1164。圖24顯示了突出顯示的MODEM按鈕1163以及它相關(guān)的工具提示。通過(guò)選擇MODEM按鈕1163,可以改變調(diào)制解調(diào)器的設(shè)置。圖25顯示了突出顯示的BROWSER按鈕1164以及它相關(guān)的工具提示。當(dāng)選擇BROWSER按鈕1164時(shí),顯示瀏覽器窗口1166,參見(jiàn)圖26。再次,用戶使用光標(biāo)鍵1182沿著在該窗口中的對(duì)象進(jìn)行導(dǎo)航。在該瀏覽器窗口中的對(duì)象包含一個(gè)COLOUR下拉列表1167。通過(guò)使用該光標(biāo)鍵1182突出顯示該列表標(biāo)題以及選擇它,顯現(xiàn)該列表的條目而且用戶能夠使用該光標(biāo)上下移動(dòng)該列表以及選擇一個(gè)新的瀏覽器顏色。類似地,使用該下拉列表1168能夠改變?cè)摓g覽器的文本語(yǔ)言。通過(guò)移動(dòng)該突出顯示到工具提示選擇1169并且按下該選擇按鈕1186,該工具提示能夠被打開(kāi)和關(guān)閉。該窗口如前所述,包含OK和CANCEL按鈕。圖27顯示了突出顯示的QUIT按鈕1170以及它的相關(guān)工具提示1171。如果選擇了QUIT按鈕1170,則顯現(xiàn)該退出子鏈1172(圖28)。在圖28中,突出顯示了CONFIRM按鈕1173并且顯示了它的工具提示。如果該用戶希望退出該網(wǎng)絡(luò)瀏覽器,則他選擇CONFIRM按鈕1173。如果該用戶想要取消該退出選擇,則他選擇CANCEL按鈕1174,在圖29中突出顯示了按該鈕并且顯示了它的工具提示??梢允褂迷撝鞑藛捂?100的替換設(shè)計(jì),借此更可取地是能夠單獨(dú)改變按鈕的形狀以及紋理而不改變?cè)撴湹恼w形狀。顏色也可以被改變。這些改變能夠作為在該設(shè)置菜單中的選項(xiàng)而變得可用,該鏈的形狀和紋理作為一個(gè)整體被改變,從而給出用于該瀏覽器的一個(gè)相關(guān)設(shè)計(jì)(外殼)。例如,該按鈕可以具有正方形、圓形、菱形或者其他形狀,一個(gè)紋理更可取地是被設(shè)計(jì)為給出一個(gè)三維外觀。在按鈕之間的鏈接的外觀可以被設(shè)計(jì)為匹配該按鈕的外觀,或者做為選擇補(bǔ)充它。還可以選擇該鏈接的外觀以便給出結(jié)構(gòu)上完整的外觀,以增加用戶認(rèn)為該按鈕是有意義互鏈的感覺(jué)。在圖6-30中顯示的鏈的弧形狀是由開(kāi)發(fā)者選擇的,而且更可取地是不可由該用戶改變。該按鈕鏈和子鏈的其他配置,諸如一個(gè)直鏈或者一個(gè)半圓形鏈,是可能的。在其他實(shí)施例中,該按鈕鏈和子鏈的按鈕次序和配置可以由該用戶修改。該接收器/解碼器提供了國(guó)際互鏈網(wǎng)導(dǎo)航和讀取電子郵件功能。現(xiàn)在討論用于為一個(gè)導(dǎo)航器建模的圖形工作室。用于為一個(gè)導(dǎo)航器建模的圖形是一個(gè)基本圖形對(duì)象的組合或者集合。每個(gè)圖形對(duì)象都是該導(dǎo)航器的一個(gè)功能在一個(gè)電視屏幕上的圖示表現(xiàn)。該導(dǎo)航器的每個(gè)功能都能夠由一個(gè)圖形對(duì)象表示,或者由一個(gè)圖形對(duì)象的一序列圖像(一個(gè)動(dòng)畫),或者一個(gè)圖形對(duì)象集合(例如,一個(gè)在該屏幕背景中的圖像或者在一個(gè)對(duì)話框背景中的圖像,其它圖像能夠附著于該圖像上)來(lái)表示。有兩種用于圖像的內(nèi)部格式MPEG2和PIXMAP-GRL。PNG格式用于表示該“導(dǎo)航系統(tǒng)”功能的基本圖形對(duì)象加載、鏈接、前一個(gè)文檔、下一個(gè)文檔、退出、等。為了在該圖形平面上加印一個(gè)非矩形圖像,必須使用一個(gè)定義該可見(jiàn)(有效)區(qū)域的剪輯掩碼。這個(gè)掩碼必須由該設(shè)計(jì)者以一個(gè)位圖的形式提供由于性能限制,這個(gè)掩碼不由該程序計(jì)算。用于增加一個(gè)剪輯掩碼的兩個(gè)階段是首先顯示一個(gè)圖像,然后,在該圖形平面中,用透明顏色填充與該圖像尺寸和位置相同的一個(gè)矩形,同時(shí)應(yīng)用該剪輯掩碼以使該圖像的有用部分變得可見(jiàn)。PIXMAP-GRL圖像格式用于表示該導(dǎo)航器資源或者用戶界面的圖形對(duì)象垂直卷動(dòng)條,表格,單選,多重選擇,等。該P(yáng)IXMAP類型的對(duì)象具有可變的尺寸(每個(gè)圖形對(duì)象或者模型被分解成簡(jiǎn)單的基本對(duì)象)以及是可變色的(改變顏色)。該P(yáng)IXMAP-GRL圖像格式可以通過(guò)使用眾所周知的方法轉(zhuǎn)換任何其他圖形格式(諸如BMP、JPEG、GIF、PNG、等)來(lái)獲得。依據(jù)一個(gè)矩陣(例如3×3、4×4或者1×4)實(shí)施把一個(gè)圖形對(duì)象分解成圖形單元,該矩陣取決于被顯示的對(duì)象類型。調(diào)色板包含256種顏色。這個(gè)調(diào)色板應(yīng)用于PIXMAP和PNG類型的圖形對(duì)象。在一個(gè)調(diào)色板中有兩個(gè)部分。第一部分包含26種保留便于該應(yīng)用程序顯示和設(shè)計(jì)的顏色。第二部分包含230種可以由該應(yīng)用程序使用的不可修改的顏色。該屏幕的最大尺寸是720像素寬576像素高。為了保證該屏幕在每個(gè)低檔電視機(jī)上可見(jiàn),必須限制該尺寸到592像素寬和480個(gè)像素高。為了利用高檔電視機(jī),用戶將具有調(diào)整該屏幕尺寸的選項(xiàng)。對(duì)于一個(gè)國(guó)際互鏈網(wǎng)導(dǎo)航器,站點(diǎn)通常把它們的網(wǎng)頁(yè)設(shè)計(jì)成600像素寬、400像素高?,F(xiàn)在詳細(xì)地討論一個(gè)圖形對(duì)象的一般屬性。一個(gè)圖形對(duì)象(依據(jù)它表示什么)具有一個(gè)精確的尺寸。該確切尺寸由設(shè)計(jì)者定義并且起用于該顯示的一個(gè)指導(dǎo)作用。每個(gè)圖形對(duì)象都是可調(diào)整大小的。依據(jù)圖形對(duì)象的類型,有可能調(diào)整寬度和/或高度的大小。調(diào)整一個(gè)PIXMAP-GRL圖形對(duì)象大小的方法遵循分解一個(gè)圖形對(duì)象的建議。稍后進(jìn)一步討論繪制可變尺寸圖形對(duì)象的方法。該圖形對(duì)象在該屏幕上的圖像由一個(gè)多色彩形狀表示;如果可能的話,該背景圖像將具有一個(gè)顏色范圍(不固定,粘土模型的效果)。該圖形對(duì)象的圖像不必依據(jù)它的位置(一致),或者依據(jù)在該屏幕上下面或者前面對(duì)象的次序進(jìn)行繪制該對(duì)象一個(gè)浮動(dòng)位置的概念。每個(gè)對(duì)象都與另一個(gè)對(duì)象無(wú)關(guān)進(jìn)行定義(除一個(gè)背景圖像之外)。依據(jù)選擇的語(yǔ)言由該程序打印該文本。這意味著將沒(méi)有圖像包含文字。一個(gè)對(duì)象的設(shè)計(jì)掌握在設(shè)計(jì)者的手中。該一般外觀能夠遵循一個(gè)特定的主題(例如Startrek、007、Simpsons)。焦點(diǎn)方面能夠由幾種方法表示一個(gè)在該圖形對(duì)象上的矩形焦點(diǎn);一個(gè)突出顯示(用另一種顏色)該圖形對(duì)象背景的焦點(diǎn)、或者一個(gè)以該圖形對(duì)象的形式著色的焦點(diǎn)。該標(biāo)準(zhǔn)狀態(tài)(沒(méi)有焦點(diǎn)、有效、沒(méi)有按下)是一個(gè)基本的圖形對(duì)象。一個(gè)圖形對(duì)象的禁止?fàn)顟B(tài)能夠由幾種方法表示在灰色中的對(duì)象形狀(或者虛光);在議論中的圖形對(duì)象上覆蓋一個(gè)特殊的禁止符號(hào);設(shè)置該對(duì)象的背景到單色、或者使該對(duì)象看不見(jiàn)。一個(gè)圖形對(duì)象的按下?tīng)顟B(tài)是一種具有焦點(diǎn)的對(duì)象在被點(diǎn)擊之后但是在該按鈕被釋放之前的圖形表示。這個(gè)表現(xiàn)能夠是該對(duì)象的一個(gè)反相顯示或者它能夠與聚焦?fàn)顟B(tài)相同。關(guān)于該翻滾(頭尾相接)顯示效果,一個(gè)圖像或者圖標(biāo)可以包含兩個(gè)視覺(jué)方面一個(gè)表示文字(背面,例如,或者一個(gè)Euro硬幣的“尾”側(cè)),另一個(gè)表示一個(gè)符號(hào)(面部,或者“標(biāo)題”側(cè))。這個(gè)視覺(jué)效應(yīng)由一個(gè)運(yùn)行在一個(gè)計(jì)時(shí)器上的程序動(dòng)畫制作;在顯示第一個(gè)圖標(biāo)處啟動(dòng)一個(gè)計(jì)時(shí)器并且一旦該計(jì)時(shí)器達(dá)到一個(gè)預(yù)定值,發(fā)生圖標(biāo)的改變要么顯示第二個(gè)圖標(biāo)、要么顯示一序列顯示一個(gè)順序改變的圖標(biāo)?,F(xiàn)在參考圖31到38描述一個(gè)PIXMAP-GRL類型的圖形對(duì)象的分解。這些圖顯示了在矩陣分解法中使用的基本圖形對(duì)象的示例(1201-1209,1211-1219,等),以及當(dāng)該基本對(duì)象以適當(dāng)方式組合時(shí)形成的相應(yīng)圖形對(duì)象(1210、1220,等)。這些圖已經(jīng)被放大了大約4倍。為了能夠調(diào)整一個(gè)圖形對(duì)象大小(增或者減),每個(gè)圖形對(duì)象(由該圖形畫家創(chuàng)建的一個(gè)設(shè)計(jì))被分解成圖形單元的一個(gè)矩陣形式中,其類似于一個(gè)拼板的碎片。每個(gè)單元然后依據(jù)四個(gè)主要邊角和中心被索引(北、南、東、西、中心、東北、西北、東南、西南、中心的中心)。該矩陣的寬度和高度取決于對(duì)象的類型。某些圖形單元(玩具碎片)僅僅被打印一次(邊角)。為了使該對(duì)象更寬或者更高,某些單元以一種重復(fù)的方式被打印(分別為該單元的n倍寬度或者高度)?,F(xiàn)在列出由該矩陣分解(或者并列顯示)方法形成或者形成一部分的圖形對(duì)象。這些圖形對(duì)象在該HTML文檔區(qū)域中繪制?!ぴ诨顒?dòng)狀態(tài)有/沒(méi)有文本的按鈕(1210)3×3矩陣(1201-1209);單元尺寸4像素寬和高;調(diào)整寬度大小的單元北中(1202)、正中(1205)、南中(1208);調(diào)整高度大小的單元西中(1204)、正中(1205)、東中(1206)?!ぴ诨顒?dòng)中有/沒(méi)有文本的按鈕,按下?tīng)顟B(tài)(1220)3×3矩陣(1211-1219);單元尺寸4像素寬和高;調(diào)整寬度大小的單元北中(1212)、正中(1215)、南中(1218);調(diào)整高度大小的單元西中(1214)、正中(1215)、東中(1216)。·在不活動(dòng)中有/沒(méi)有文本的按鈕,灰色狀態(tài)(1230)3×3矩陣(1221-1229);單元尺寸4像素寬和高;調(diào)整寬度大小的單元北中(1222)、正中(1225)、南中(1228);調(diào)整高度大小的單元西中(1224)、正中(1225)、東中(1226)?!ぁ皬?fù)選框”,有/沒(méi)有焦點(diǎn),交叉/不交叉(圖34)1×1矩陣;單元尺寸16像素寬和高;要調(diào)整寬度大小的單元沒(méi)有;要調(diào)整高度大小的單元沒(méi)有?!みx項(xiàng)列表,用于單一或者多重選擇(1252、1253、1254)3×3矩陣(1241-1249);單元尺寸4像素寬和高;調(diào)整寬度大小的單元北中(1242)、正中(1245)、南中(1248);調(diào)整高度大小的單元西中(1244)、正中(1245)、東中(1246);能夠包含一個(gè)向上(1250)和/或向下指示符(1251);位置起始x,y+該向上指示符的寬度和高度。·向上指示符(1250)1×1矩陣;單元尺寸16像素寬和8像素高;要調(diào)整寬度大小的單元沒(méi)有;調(diào)整高度大小的單元沒(méi)有;位置起始y,寬度的中心。·向下指示符(1251)1×1矩陣;單元尺寸16像素寬和8像素高;要調(diào)整寬度大小的單元沒(méi)有;調(diào)整高度大小的單元沒(méi)有;位置起始y+向上指示符的高度+列表高度,寬度中心?!け砀?用于繪制窗體)(1260)3×3矩陣(1270);單元尺寸2像素寬和高;要調(diào)整寬度大小的單元北中、正中、南中;要調(diào)整高度大小的單元西中、正中、東中;能夠包含一個(gè)單元?!卧?用于繪制在一個(gè)窗體中的一個(gè)條目)(1280)3×3矩陣(1290);單元尺寸2像素寬和高;要調(diào)整寬度大小的單元北中、正中、南中;要調(diào)整高度大小的單元西中、正中、東中;能夠包含文本或者一個(gè)圖像;位置起始x,y+該表格邊界的厚度?!び锌蚣艿奈谋?文本區(qū)域)(1300)3x3矩陣(1310);單元尺寸2像素寬和高;要調(diào)整寬度大小的單元北中、正中、南中;要調(diào)整高度大小的單元西中、正中、東中;能夠包含文本。·框架(1320)3×3矩陣(325);單元尺寸4像素寬和高;要調(diào)整寬度大小的單元北中、正中、南中;要調(diào)整高度大小的單元西中、正中、東中。·垂直卷動(dòng)條(1330)1×3矩陣;單元尺寸8像素寬和高;要調(diào)整寬度大小的單元沒(méi)有;要調(diào)整高度大小的單元正中;附著于該框架上(取決于該框架對(duì)象的位置);包含相對(duì)于高度的索引的指示符圖形對(duì)象。·水平卷動(dòng)條(1340)3×1矩陣;單元尺寸8像素寬和高;要調(diào)整寬度大小的單元正中;要調(diào)整高度大小的單元沒(méi)有;附著于該框架上(取決于該框架對(duì)象的位置);包含相對(duì)于寬度的索引的指示符圖形對(duì)象?!に骄€1×1矩陣;單元尺寸4像素寬和高?!ご怪本€1×1矩陣;單元尺寸4像素寬和高?,F(xiàn)在給出在該網(wǎng)絡(luò)瀏覽器界面中的全部圖形對(duì)象以及它們相關(guān)功能的摘要。下列所述是圖形對(duì)象的一個(gè)不詳盡清單,這些為在該解碼器中構(gòu)造一個(gè)導(dǎo)航器模型所必需。在這里給出的表格逐個(gè)單元列出這些對(duì)象,以及由幾個(gè)圖形單元組成的對(duì)象列表。以下表格描述了形成一個(gè)能夠在該圖形表示中具有一個(gè)可變尺寸的圖形對(duì)象的、不同的基本圖形對(duì)象。并置基本對(duì)象以形成一個(gè)合成對(duì)象受到該程序的影響(重新組成拼板)。這些對(duì)象具有PⅨMAP格式。導(dǎo)航器功能現(xiàn)在描述用于網(wǎng)絡(luò)瀏覽器的JavaAPI。下面列出在該解碼器中的導(dǎo)航器應(yīng)用程序級(jí)別處使用的JAVA包列表。這個(gè)列表被分成兩個(gè)部分JDK1.1的AWT(抽象窗口工具包)類,以及以本地C語(yǔ)言代碼編寫的不同服務(wù)的JAVA接口類。導(dǎo)航器包,稱為瀏覽器程序包,它把不同的包組合在一起,這些包為browser.drawer包,提供允許取出一個(gè)HTML文檔、以及在該文檔瀏覽器內(nèi)導(dǎo)航的服務(wù);以及mediawebtv包,允許與該用戶驗(yàn)證機(jī)構(gòu)建立一個(gè)Internet聯(lián)接?,F(xiàn)在描述該browser.drawer.MhwBookmark類的結(jié)構(gòu)。一個(gè)書簽列表與一個(gè)用戶相關(guān)聯(lián)。在該書簽列表內(nèi)沒(méi)有分級(jí)結(jié)構(gòu)。構(gòu)造器MhwBookmark(subscriberId)打開(kāi)一個(gè)存在的書簽列表構(gòu)造器MhwBookmark(subscriberId)創(chuàng)建一個(gè)新的書簽列表deleteBookmark()破壞一個(gè)書簽列表add(URL,name)添加一個(gè)條目remove(itemNumber)刪除一個(gè)條目modify(itemNumber,URL,name)修改一個(gè)存在的條目getList()返回一個(gè)在該書簽列表中的條目列表(不分級(jí))getItemCount()返回在該書簽列表中的條目數(shù)目isFull()布爾值-列表是滿的?isEmpty()布爾值-列表是空的?setHomePage(itemNumber)getHomePage()itemNumbergoToURL(sessionNumber)加載對(duì)應(yīng)于選擇的條目的文檔如果發(fā)生失敗,由方法add()、remove()、modify()、getList()、setHomePage()返回一個(gè)錯(cuò)誤信息(或者發(fā)生是異步的話則返回一個(gè)事件)。該browser.drawer.MhwHistory類允許在一個(gè)先前顯示的文檔列表中,從一個(gè)文檔導(dǎo)航到另一個(gè)文檔。在該歷史列表中沒(méi)有分級(jí)結(jié)構(gòu)?,F(xiàn)在給出該類的詳細(xì)資料。構(gòu)造器MhwHistory(sessionNumber)getList()返回該歷史列表(沒(méi)有分級(jí)結(jié)構(gòu))getCurrent()獲得當(dāng)前的URLsetCurrent(indexNumber)改變當(dāng)前的URLgetNext()獲取下一個(gè)條目的URLgetPrevious()獲取前一個(gè)條目的URLgetItemCount()返回在該歷史中的條目數(shù)目addEventsRegister()訂閱該歷史列表的錯(cuò)誤事件removeEventsRegister()如果發(fā)生失敗,則由方法getList()、getNext()、getPrevious()、setCurrent返回一個(gè)錯(cuò)誤信息(或者發(fā)生是異步的話則返回一個(gè)事件)。這些事件是addEventsRegister(sessionNumber)[訂閱該歷史列表錯(cuò)誤事件];以及removeEventsRegister(sessionNumber)[取消]。browser.drawer.MhwDocument類允許在該解碼器中加載和顯示一個(gè)HTML文檔?,F(xiàn)在給出該類的詳細(xì)信息。構(gòu)造器MhwDocument(sessionNumber)freeze()停止當(dāng)前文檔的顯示(繼續(xù)加載該文檔)unfreeze()重新開(kāi)始當(dāng)前文檔的顯示isPending()該文檔當(dāng)前是否正在加載stop()停止當(dāng)前文檔的加載reload()重新加載該文檔getDocumentInfo()返回該文檔的標(biāo)題和URLaddStatusRegister()訂閱有關(guān)該狀態(tài)的信息以及結(jié)束加載goToURL(url)加載一個(gè)網(wǎng)頁(yè)submit(login,password,URL)提交用于加載一個(gè)網(wǎng)頁(yè)的驗(yàn)證getStatisticsDocument()返回進(jìn)行中的請(qǐng)求數(shù)目以及當(dāng)前正加載文檔的URLbrowser.mediawebtv.MhwConnection類把用戶鏈接和驗(yàn)證功能集合在一起?,F(xiàn)在給出該類的詳細(xì)信息。構(gòu)造器MhwConnection(subscriberId)start()請(qǐng)求鏈接stop()請(qǐng)求斷開(kāi)cancel()取消鏈接setAuthentificationType(type)設(shè)置驗(yàn)證模式到CANAL+模式(最高有效位/口令)或者通過(guò)登錄名/口令getAttributes()返回該鏈接屬性setAttributes(attributes)修改該鏈接屬性setPassword(password)修改口令getPassword(password)獲取口令setAutoCheckPassword(bAutoCheck)設(shè)置該口令是否自動(dòng)地用確認(rèn)口令驗(yàn)證getAutoCheckPassword(bAutoCheck)讀取該口令是否自動(dòng)地用確認(rèn)口令驗(yàn)證getIPClient(ipaddress,netmask)讀取選擇的IP和網(wǎng)絡(luò)掩碼對(duì)setIPClient(ipaddress,netmask)修改該IP和網(wǎng)絡(luò)掩碼對(duì)getDNS(dns1,dns2)讀取主要和輔助DNS地址setDNS(dns1,dns2)修改該主要和輔助DNS地址getURLConfigServer(url)讀取該配置服務(wù)器的地址setURLConfigServer(url)修改該配置服務(wù)器的地址getQueryCommand(queryCmd,typeOfQuery)按類型讀取要被發(fā)送給該配置服務(wù)器的請(qǐng)求setQueryCommand(queryCmd,typeOfQuery)按類型修改該請(qǐng)求queryAcquisitions(tableAcquisitions,typeOfAcquisition,NumberOfAcquisitions)讀取獲取的列表startAcquisition(acquisitionId)開(kāi)始一次獲取(數(shù)據(jù)/視頻)stopAcquisition(acquisitionId)停止一次獲取(數(shù)據(jù)/視頻)addStatusRegister()鏈接狀態(tài)的被通知的訂閱這些事件是鏈接失敗;當(dāng)前鏈接;建立的鏈接;鏈接確認(rèn)請(qǐng)求;鏈接錯(cuò)誤;調(diào)制解調(diào)器狀態(tài)打開(kāi)/關(guān)閉;在進(jìn)行初始化;在進(jìn)行撥號(hào);錯(cuò)誤但是調(diào)制解調(diào)器是打開(kāi)的;服務(wù)器狀態(tài)無(wú)效端口、無(wú)效的URL;登錄錯(cuò)誤不能識(shí)別的登錄;以及無(wú)效口令。removeStatusRegister()取消訂閱網(wǎng)絡(luò)鏈接狀態(tài)isConnectedsubscriberId()返回給出調(diào)制解調(diào)器鏈接/斷開(kāi)狀態(tài)的布爾值isPending()返回用于調(diào)制解調(diào)器當(dāng)前建立鏈接的布爾值getExtendedProviderUrl(providerUrl)讀取當(dāng)前預(yù)訂的提供者setExtendedProviderUrl(providerUrl)修改當(dāng)前預(yù)訂的提供者browser.mediawebtv.mhwconfiguration類管理每個(gè)用戶的簡(jiǎn)檔表以及他或者她的參數(shù)選擇?,F(xiàn)在給出該類的詳細(xì)信息。構(gòu)造器MhwConfiguration()readProfile(subscriberId)讀取簡(jiǎn)檔表writeProfile(subscriberId,profile)寫簡(jiǎn)檔表readDefaultProfile()讀取缺省的簡(jiǎn)檔表writeDefaultProfile(profile)修改缺省的簡(jiǎn)檔表getUserCount()用戶數(shù)量newUser(profile)標(biāo)識(shí)一個(gè)新用戶getLastConnect()最近的鏈接用戶簡(jiǎn)檔表的最大數(shù)當(dāng)前被固定為5,但是這不表示一個(gè)嚴(yán)格的限制;如果必要的話可以存儲(chǔ)更多數(shù)量的簡(jiǎn)檔表。在失敗的情況下,由WriteProfile()和wrlteDefaultProfile()方法返回一個(gè)錯(cuò)誤信息(如果該事故是異步的則返回一個(gè)事件)。browser.mediawebtv.MhwMultiSession類選擇一個(gè)導(dǎo)航器會(huì)話。一個(gè)會(huì)話是由另一個(gè)實(shí)例自動(dòng)啟動(dòng)的一個(gè)導(dǎo)航器實(shí)例。當(dāng)啟動(dòng)該導(dǎo)航器時(shí),緊接著一個(gè)驗(yàn)證鏈接的建立創(chuàng)建一個(gè)會(huì)話?,F(xiàn)在給出該類的詳細(xì)信息。構(gòu)造器MhwMultiSessiongetCurrentSessionNumber()setCurrentSessionNumber(intnumber)getPreviousSession()addSession()返回創(chuàng)建的會(huì)話數(shù)目removeSession(intnumSession)現(xiàn)在參考圖6a和7-30,更詳細(xì)地描述用于該解碼器的導(dǎo)航器模型。在這里給出的模型是一個(gè)導(dǎo)航器的一個(gè)簡(jiǎn)單示例,并且給出該主要功能的大意。它在圖形表示級(jí)別處給出完全的自由度。唯一重要的特征是其中同樣類型的功能被組合在一起的區(qū)域或者屏幕,以及通用的用戶界面。該導(dǎo)航器使用該圖形工作室全部可用的圖形(MPEG、PIXMAP)。這個(gè)模型的屏幕以樹形結(jié)構(gòu)組織起來(lái),并且每個(gè)都把一個(gè)必需功能的集合組合在一起。通過(guò)借助于箭頭按鈕(在遙控器上)移動(dòng)一個(gè)焦點(diǎn)或者通過(guò)使用一個(gè)帶有光標(biāo)/指針的小鍵盤,可以訪問(wèn)在一個(gè)屏幕中的每個(gè)功能或者選項(xiàng)。一個(gè)動(dòng)作的選擇由一個(gè)控制器點(diǎn)擊或者通過(guò)一個(gè)預(yù)定義的按鈕(例如“OK”)來(lái)實(shí)現(xiàn)。在沒(méi)有一個(gè)物理鍵盤的情況下,要用遙控器輸入文字,就必須提供一個(gè)虛擬鍵盤。這可以通過(guò)用一種快速輕敲可能性來(lái)移動(dòng)焦點(diǎn)、通過(guò)把遙控器的按鈕映射到該虛擬鍵盤上來(lái)實(shí)現(xiàn);換句話說(shuō),在遙控器上的按鈕圖像,以其輪廓的形式或者稍微不透明地,在該虛擬鍵盤的圖片上是可見(jiàn)的(以跟蹤的形式)。該虛擬鍵盤隨后在這個(gè)文檔中進(jìn)行更深入的討論。圖30顯示了導(dǎo)航器功能按鈕(1410)的最高級(jí)鏈,并且看得見(jiàn)在它下面的一部分網(wǎng)頁(yè)(1411)?,F(xiàn)在具體參考圖30,描述主要的導(dǎo)航器畫面。該導(dǎo)航器功能被組合到幾個(gè)層中。該主屏幕顯示一個(gè)垂直條(主菜單),其由一系列按鈕組成Reload(重載)/Stop(停止)(1401)、前一頁(yè)(1402)、下一頁(yè)(1403)、最近訪問(wèn)站點(diǎn)的歷史記錄、書簽、鏈接/斷開(kāi)、配置、退出導(dǎo)航器(1408)。當(dāng)按壓一個(gè)功能鍵(要么在遙控器上要么在該鍵盤上)時(shí),顯示該導(dǎo)航器GUI(主要的屏幕)。當(dāng)該GUI在該電視屏幕上是可見(jiàn)時(shí),HTML文檔(1411)(該GUI覆蓋在其上面)繼續(xù)被載入到存儲(chǔ)器中,但是該文檔的刷新被中止了以便不影響該GUI的顯示性能。當(dāng)該導(dǎo)航器GUI被取消了時(shí)重新顯示該HTML文檔。如果最終能夠滿足性能的話,則將取消該限制,由此允許同時(shí)顯示該HTML文檔和GUI。通過(guò)按下一個(gè)功能鍵(在遙控器或者鍵盤上),或者通過(guò)在GUI按鈕區(qū)域外面點(diǎn)擊,可以從該電視屏幕中取消該GUI。然后開(kāi)始或者重新開(kāi)始顯示當(dāng)前正被加載或者保存在該高速緩沖存儲(chǔ)器中的HTML文檔。一個(gè)按鈕實(shí)際上是一個(gè)長(zhǎng)方形或者正方形區(qū)域(例如,32×32像素)。當(dāng)該圖形光標(biāo)進(jìn)入一個(gè)區(qū)域時(shí),那個(gè)區(qū)域(窗口)接收該焦點(diǎn)(參看EnterNotify(WindowId)函數(shù))。例如,如果該按鈕圖形是一個(gè)輪胎,則必須檢測(cè)該圖形光標(biāo)的實(shí)際位置實(shí)際上是否覆疊該輪胎的像素。為此,必須找到在該鼠標(biāo)指針熱點(diǎn)處的像素在該按鈕的剪輯掩碼中的值(通過(guò)計(jì)算相對(duì)位置,在剪輯掩碼中g(shù)etpixel(),然后測(cè)試該像素值)。這個(gè)檢測(cè)方法允許改善檢測(cè)在啟動(dòng)該按鈕的功能之前是否實(shí)施了一次點(diǎn)擊。當(dāng)該鼠標(biāo)指針離開(kāi)該按鈕的矩形或者正方形區(qū)域時(shí),該區(qū)域失去該焦點(diǎn)(參看LeaveNotify(WindowId))?,F(xiàn)在更詳細(xì)地描述描述性的按鈕總結(jié)。當(dāng)該鼠標(biāo)指針或者矩形焦點(diǎn)與表示一個(gè)功能的按鈕重合時(shí),橫向或者縱向顯示一個(gè)短的詞語(yǔ)(工具提示),來(lái)描述那個(gè)按鈕的功能。當(dāng)該按鈕通過(guò)一次鼠標(biāo)點(diǎn)擊或者通過(guò)一個(gè)功能鍵被選擇時(shí),顯現(xiàn)包含子菜單選項(xiàng)的一個(gè)按鈕列表。短的描述詞語(yǔ)(工具提示)系統(tǒng)還用于該子菜單按鈕。利用在遙控器上或者在鍵盤上的箭頭鍵可以實(shí)現(xiàn)菜單選項(xiàng)的導(dǎo)航。記錄在該主要屏幕上具有焦點(diǎn)的最后一個(gè)按鈕,用于下一次顯示該主屏幕?,F(xiàn)在參考圖42-45更詳細(xì)地討論虛擬鍵盤。圖42示意地顯示了當(dāng)前可見(jiàn)的虛擬鍵盤(1501)如何映射到在下面的虛擬鍵盤“網(wǎng)格”上(1501,1506)。圖43顯示了一個(gè)典型的字符到在一個(gè)虛擬鍵盤上的鍵的映射。圖44顯示了用于虛擬鍵盤的圖像,其中第一(1545)和第二(1546)號(hào)塊分別具有焦點(diǎn)(還顯示了兩個(gè)不同類型的遙控裝置1542和1543)。圖45顯示了具有典型尺寸標(biāo)注的一個(gè)典型虛擬鍵盤布局。首先,該虛擬鍵盤被認(rèn)為是一個(gè)與使用它的應(yīng)用程序無(wú)關(guān)的工具。這就是說(shuō),它能夠在“WebBrowser(網(wǎng)絡(luò)瀏覽器)”應(yīng)用程序中使用以及同樣地在“Mail(郵件)”應(yīng)用程序中使用。此外,它的“外觀”完全獨(dú)立于涉及的應(yīng)用程序的“外觀”。從不具有一個(gè)物理鍵盤或者不具有一個(gè)帶有鍵盤的遙控裝置的用戶選擇該屏幕的一個(gè)可編輯區(qū)域那一刻開(kāi)始就顯示該虛擬鍵盤。該焦點(diǎn)定位于在該可編輯區(qū)域中文字的結(jié)尾處。按壓“OK”(在遙控器上或者在虛擬鍵盤上)或者“Cancel”(在該虛擬鍵盤上)就會(huì)取消它。在屏幕1501)上可見(jiàn)的虛擬鍵盤由三決并排(1502,1503,1504)的十個(gè)按鍵(表示遙控器的三個(gè)數(shù)字塊)組成。用戶能夠使用在遙控器上的箭頭從一個(gè)塊傳遞焦點(diǎn)(1505)到另一塊。在選擇一塊之后,按下在遙控器數(shù)字塊上的一個(gè)按鈕鍵入顯示在虛擬鍵盤上的相應(yīng)字符。用戶還可以使用向上和向下箭頭鍵。這產(chǎn)生在該屏幕上相同的虛擬鍵盤但是具有不同的字符在該鍵上(1506)。因此,在一組5個(gè)虛擬鍵盤之間進(jìn)行切換,一個(gè)人就能夠顯示在一個(gè)西方計(jì)算機(jī)鍵盤上的所有字符。還有可能隨著需要的增加而增加其他鍵盤。參考圖44,為了允許在遙控器數(shù)字塊和在該虛擬鍵盤上的焦點(diǎn)之間進(jìn)行一個(gè)即時(shí)關(guān)聯(lián),遙控器的一個(gè)重疊圖像指示該焦點(diǎn)(1542,1543)。因此該用戶能夠容易地目測(cè)僅僅具有焦點(diǎn)的鍵盤的一個(gè)部分,而且其余的字符能夠通過(guò)用箭頭鍵移動(dòng)焦點(diǎn)而到達(dá)。該鍵盤被設(shè)計(jì)為著眼于具有隨后幾點(diǎn)。該虛擬鍵盤解決方案占據(jù)少量的銀幕高度,并且允許容易地?cái)U(kuò)展可用的字符數(shù)目。缺省時(shí),它是具有顯示的小型字母表的虛擬鍵盤。某些按鈕具有重要的特定功能-·在遙控器上的“OK”,用于確認(rèn)當(dāng)前選擇(如果該字段僅僅具有一行,字符還用于驗(yàn)證,或者做為選擇可能被選定為根本沒(méi)有效果;否則,它僅僅相應(yīng)于一個(gè)回車)。·在虛擬鍵盤上的“Cancel”(1522),其不確認(rèn)就退出該工具(在打開(kāi)該鍵盤之后進(jìn)行的修改將丟失)?!ぴ谠撎摂M鍵盤上的“BackSpace”(1523),其擦除最后鍵入的字符?!ぴ撋?、下、左和右箭頭符號(hào)鍵,用于在該編輯區(qū)域內(nèi)部移動(dòng)?!ぴ谠撎摂M鍵盤上的“Tab”(1520),其一次插入一個(gè)可配置數(shù)目的空格符(缺省時(shí)為四個(gè)空格符)。該鍵盤總是處于“插入”模式中。圖中給出了一個(gè)鍵盤的示例,其將在下面被進(jìn)一步討論。利用在圖43中顯示的5個(gè)鍵盤(5×3),以及為WebBrowser應(yīng)用程序安裝的兩種字體(Arialweb和Courier),就能夠覆蓋一個(gè)傳統(tǒng)鍵盤的所有字符。該在屏幕上鍵盤的尺寸是272像素寬184像素高。該虛擬鍵盤以及關(guān)于它在各種應(yīng)用程序中使用的功能鏈接包含在包“canalplus.virtualkbd”中。包含在該包內(nèi)的類包含“MhwVirtualKbd”(虛擬鍵盤圖形描述和行為類)、“MhwVkTextField”(從‘java.awt.TextField’中導(dǎo)出的類,其允許在全局應(yīng)用程序內(nèi)定義一個(gè)虛擬鍵盤,以共享TextField來(lái)控制事件)以及“MhwTextArea”(從‘java.awt.TextArea’繼承的一個(gè)類,允許在全局應(yīng)用程序內(nèi)定義一個(gè)虛擬鍵盤,以使用TextArea類來(lái)控制事件)。現(xiàn)在更詳細(xì)地描述類MhwVirtualKbd。類“MhwVirtualKbd”的構(gòu)造器定義為‘私有’。因此,當(dāng)啟動(dòng)可能需要使用虛擬鍵盤的主應(yīng)用程序(例如,在沒(méi)有一個(gè)物理鍵盤的情況下)時(shí),僅僅能夠構(gòu)造一個(gè)唯一的虛擬鍵盤。因此其目的是給出一個(gè)特別為當(dāng)前應(yīng)用程序配置的鍵盤,而且當(dāng)該用戶進(jìn)入一個(gè)文本域(單行或者多行)時(shí)顯現(xiàn)它。當(dāng)創(chuàng)建該鍵盤時(shí),將已經(jīng)設(shè)置了能夠被配置的四個(gè)主(靜態(tài))變量·母體容器,該虛擬鍵盤的‘母體’,當(dāng)創(chuàng)建該鍵盤的時(shí)候,該‘母體’本身必須存在。它使用方法“setParent”設(shè)置,如果在參數(shù)中傳遞的‘母體’是‘空’,則該方法返回一個(gè)‘NullPointerException’。·描述文件描述該鍵盤的ASCII碼文件,關(guān)于在該圖像之后的圖形、其涉及當(dāng)使用該虛擬鍵盤時(shí)獲得的各種‘鍵盤’,以及關(guān)于打印在該鍵上的標(biāo)簽。字符用它們的雙字節(jié)字符集代碼表示。該描述文件的名稱能夠使用方法“setScreensFile”來(lái)設(shè)置?!て聊坏臄?shù)目由該虛擬鍵盤‘初始化’和使用的‘?dāng)?shù)字塊’數(shù)目。這個(gè)數(shù)目,使用“setScreensNumber”設(shè)置,相應(yīng)于鍵盤的數(shù)目,鍵盤的特征從上面詳細(xì)描述的描述文件中讀取。·初始坐標(biāo)這些是該鍵盤的背景圖像的左上角在母體容器(如上所述)的坐標(biāo)。這使用方法“setCoordInit”設(shè)置。一旦創(chuàng)建了該鍵盤,通過(guò)使用方法“getInstance”能夠確定是否來(lái)使用它,如果存在的話,該方法查找當(dāng)前應(yīng)用程序的鍵盤(如果該應(yīng)用程序的虛擬鍵盤還沒(méi)有存在,而且如果該應(yīng)用程序使用它,方法“getInstance”使用已經(jīng)為它設(shè)置的變量[先前描述的四個(gè)]來(lái)創(chuàng)建一個(gè))。現(xiàn)在描述事件管理。依據(jù)前面的描述,一旦顯示了該虛擬鍵盤,其僅僅通過(guò)解釋發(fā)送給它的事件起作用,這些事件通過(guò)下列來(lái)發(fā)送數(shù)字塊、“OK”按鈕、以及在遙控器上的四個(gè)箭頭方向鍵。這些按鈕對(duì)于使用中的鍵盤將具有具體的作用?!癘K”按鈕具有一個(gè)重要的作用,因?yàn)樗试S用戶做兩件事情‘返回’到該文本域以輸入信息,然后顯示并且啟動(dòng)該虛擬鍵盤的操作;以及‘離開(kāi)’該正文區(qū)域,保存該改變。箭頭鍵‘右’和‘左’箭頭允許遙控器的圖像(指示具有‘焦點(diǎn)’的數(shù)字塊)在在該虛擬鍵盤上表示的三個(gè)數(shù)字塊上移動(dòng)。取決于具有焦點(diǎn)的‘鍵盤’,在遙控器上的數(shù)字塊的鍵因此被‘綁定’到各種字符的顯示。在大多數(shù)公共情況中,當(dāng)該虛擬鍵盤是有效時(shí),在這些按鈕上‘輕敲’導(dǎo)致自動(dòng)地在那個(gè)鍵展示的字符插入到在當(dāng)前文本域中、由光標(biāo)指示的位置處。對(duì)于字符,六個(gè)能夠被認(rèn)為是‘特定’的字符,并且沒(méi)有直接導(dǎo)致在該鍵上顯示的字符被顯示在文本域中退格‘&lt;’(1520)當(dāng)在遙控器上對(duì)應(yīng)于這個(gè)字符的按鈕被按下時(shí),在當(dāng)前文本域中緊貼著光標(biāo)位置左側(cè)的字符被擦除了。Tab‘&gt;&gt;’當(dāng)在遙控器上對(duì)應(yīng)于這個(gè)符號(hào)的按鈕被按下時(shí),一個(gè)可配置數(shù)目的空格符(‘’),缺省時(shí)為4個(gè),被插入在當(dāng)前光標(biāo)位置處。回車(1521)當(dāng)在遙控器上對(duì)應(yīng)于這個(gè)字符的按鈕被按下時(shí),在該光標(biāo)位置處插入一個(gè)‘換行’。事實(shí)上,如果當(dāng)前文本域是類‘MhwVkTextField’的一個(gè)實(shí)例,即僅僅具有一個(gè)可編輯行時(shí),則輕敲這個(gè)按鈕將要么沒(méi)有效果要么導(dǎo)致驗(yàn)證該域。相反地,如果這個(gè)文本域是類‘MhwVkTextArea’的一個(gè)實(shí)例,它包含幾個(gè)可編輯行,則這個(gè)字符導(dǎo)致一個(gè)‘換行’(如果該光標(biāo)定位在最后可編輯行上,輕敲這個(gè)按鈕將沒(méi)有效果)。Cancel(1522)當(dāng)在遙控器上對(duì)應(yīng)于這個(gè)字符的按鈕被按下時(shí),所有在打開(kāi)該虛擬鍵盤之后對(duì)當(dāng)前文本域進(jìn)行的修改被取消了。換句話說(shuō),它的內(nèi)容返回到它在進(jìn)行該修改之前具有的值,而且‘退出’該虛擬鍵盤。左箭頭鍵當(dāng)在遙控器上對(duì)應(yīng)于這個(gè)字符的按鈕被按下時(shí),在當(dāng)前文本域中的光標(biāo)向左邊移動(dòng)一個(gè)位置。如果該光標(biāo)已經(jīng)在‘零’位置(不可能進(jìn)一步向左移動(dòng)),這個(gè)按鈕沒(méi)有效果。右箭頭鍵當(dāng)在遙控器上對(duì)應(yīng)于這個(gè)字符的按鈕被按下時(shí),在當(dāng)前文本域中的光標(biāo)向右邊移動(dòng)一個(gè)位置。如果該光標(biāo)已經(jīng)位于該文本域中最后一個(gè)字符之后(而且不能更進(jìn)一步向右移動(dòng)),這個(gè)按鈕沒(méi)有效果。向上箭頭鍵當(dāng)在遙控器上對(duì)應(yīng)于這個(gè)字符的按鈕被按下時(shí),在當(dāng)前文本域中的光標(biāo)向上邊移動(dòng)一個(gè)位置。如果該光標(biāo)已經(jīng)在該文本域的第一行中(或者如果當(dāng)前文本域僅僅具有一行MhwVkTextField),這個(gè)按鈕沒(méi)有效果。向下箭頭鍵當(dāng)在遙控器上對(duì)應(yīng)于這個(gè)字符的按鈕被按下時(shí),在當(dāng)前文本域中的光標(biāo)向下邊移動(dòng)一個(gè)位置。如果該光標(biāo)已經(jīng)在該文本域的最后一行中(或者如果當(dāng)前文本域僅僅具有一行MhwVkTextField),這個(gè)按鈕沒(méi)有效果。方法“findLocation”確定該虛擬鍵盤在該屏幕上的位置,以設(shè)法最小化被“裁切”的表面。類MhwVkTextField僅僅是在包“java.awt”中的類“TextField”的一個(gè)特例化。它另外管理一個(gè)指定該虛擬鍵盤使用(與否)的布爾值。構(gòu)造器與那些在包“java.awt”中的類“TextField”完全相同,除了一個(gè)簡(jiǎn)單附加的參數(shù)一個(gè)指定該虛擬鍵盤使用的布爾值之外。如果該布爾值是“真”,則創(chuàng)建類“TextField”的一個(gè)‘基本’實(shí)例,并且同時(shí)使用方法“addKeyListener”添加一個(gè)在當(dāng)前應(yīng)用程序中可用的一個(gè)虛擬鍵盤收聽(tīng)器。如果不是的話,創(chuàng)建一個(gè)‘標(biāo)準(zhǔn)’的TextField。當(dāng)該TextField具有焦點(diǎn)時(shí),如果該用戶按壓‘OK’并且該布爾值指定虛擬鍵盤的使用時(shí),顯示該虛擬鍵盤并且獲得該焦點(diǎn)。它管理所有該事件并且能夠填充該文本域。如果該用戶再次按壓‘OK’,確認(rèn)它的文字,并且該鍵盤返回焦點(diǎn)。如果不設(shè)想虛擬鍵盤的使用(布爾值=錯(cuò)誤)的話,則該“TextField”具有和在“java.awt”中的一個(gè)標(biāo)準(zhǔn)TextField相同的‘行為’。MhwVkTextArea類僅僅是在包“java.awt”中的類“TextArea”的一個(gè)特例化。它另外管理一個(gè)指定該虛擬鍵盤使用(與否)的布爾值。構(gòu)造器與那些在包“java.awt”中的類“TextArea”完全相同,除了一個(gè)簡(jiǎn)單附加的參數(shù)一個(gè)指定該虛擬鍵盤使用的布爾值之外。如果該布爾值是“真”,則創(chuàng)建類“TextArea”的一個(gè)‘基本’實(shí)例,并且同時(shí)使用方法“addKeyListener”添加一個(gè)在當(dāng)前應(yīng)用程序中可用的一個(gè)虛擬鍵盤收聽(tīng)器。如果不是的話,創(chuàng)建一個(gè)‘標(biāo)準(zhǔn)’的TextArea。當(dāng)該TextArea具有焦點(diǎn)時(shí),如果該用戶按壓‘OK’并且該布爾值指定虛擬鍵盤的使用時(shí),顯示該虛擬鍵盤并且該虛擬鍵盤獲得該焦點(diǎn)。它管理所有的事件并且能夠填充該文本域。如果該用戶再次按壓‘OK’,就確認(rèn)它的文字,并且該鍵盤返回焦點(diǎn)。如果不設(shè)想虛擬鍵盤的使用(布爾值-錯(cuò)誤)的話,則該“TextArea”具有和在“java.awt”中的一個(gè)標(biāo)準(zhǔn)TextArea相同的‘行為’。以下部分進(jìn)一步描述如上所述的特征的實(shí)現(xiàn),尤其是從一組圖形單元中重構(gòu)圖形對(duì)象(例如文本域、按鈕、滑動(dòng)塊、列表檢查框、選擇等)。圖39顯示了一個(gè)例如由9個(gè)單元組成的按鈕四個(gè)角(NW2100、NE2101、SW、SE2103),四個(gè)邊(N2104、E2105、W2106、S2107)以及中心(C2108)。一般地、但不是必需的,這個(gè)單元都是正方形的(4×4像素、8×8像素、16×16像素)。塊N、E、W、S和C單元在要求的區(qū)域(由該組件的尺寸定義,其邊界由外觀定義)內(nèi)并列顯示。這些區(qū)域不必是該單元尺寸的一個(gè)倍數(shù)。當(dāng)前,該并列顯示從左至右或者從上到下進(jìn)行,所以任何不完全繪制的單元出現(xiàn)在底端和右手邊。如果感覺(jué)″居中″和″向右″對(duì)齊并列顯示規(guī)則是有用的話,能夠設(shè)想添加這些。通常,NW、NE、SW和SE單元和邊界一樣大小所以并列顯示不是必要的。然而如果它們小于所要求的,則自動(dòng)地執(zhí)行并列顯示。接著簡(jiǎn)要地描述如何實(shí)現(xiàn)這些。該工作被分成三個(gè)方面構(gòu)造在本地WGT模塊中的機(jī)制,以允許創(chuàng)建和分配不同的外觀到不同的WGT窗口小部件;本地“LookPixmap”模塊的開(kāi)發(fā),在該模塊中包含了用于繪制組件的不同圖形特征的函數(shù);以及用于與本機(jī)代碼接口的mhw.awtJava包的開(kāi)發(fā)。在以后幾節(jié)里描述這三個(gè)方面的開(kāi)發(fā)?,F(xiàn)在將參考圖40和41描述WGT模塊外觀機(jī)制。本節(jié)的目的是描述如何對(duì)WGT模塊進(jìn)行修改以便能夠控制被管理的各種圖形對(duì)象的‘外觀’。能夠在新類中定義的新外觀能夠在必要時(shí)被添加,而讓W(xué)GT模塊不受改變。缺省時(shí)向窗口小部件提供、實(shí)例化和歸屬一個(gè)標(biāo)準(zhǔn)的WGT外觀(LookWgt),以便使得不希望使用這個(gè)功能的應(yīng)用程序不需要使用它。以下特征是必需的能夠?yàn)槊總€(gè)對(duì)象類型定義許多不同的外觀;一個(gè)不同的外觀能夠獨(dú)立地給予每個(gè)對(duì)象;以及缺省時(shí),由當(dāng)前WGT定義的外觀施加到對(duì)象上。兩種用于繪制一個(gè)對(duì)象外觀的不同技術(shù)必定是可能的位圖和矢量。在位圖技術(shù)中,通過(guò)組合許多預(yù)定義的位圖單元來(lái)創(chuàng)建單個(gè)隨后繪制的位圖,來(lái)繪制該對(duì)象。為了創(chuàng)建可變尺寸的對(duì)象,例如單元能夠沿著側(cè)邊重復(fù),以便構(gòu)造一個(gè)所需尺寸的對(duì)象。這些單元中間每一個(gè)的尺寸和精確排列都沒(méi)有被定義。該想法是讓這個(gè)盡可能地自由以便使得新外觀的創(chuàng)造不過(guò)度地受WGT的限制。該外觀類必須定義位圖單元以及用于把它們裝配在一起的規(guī)則作為該對(duì)象所需尺寸的一個(gè)函數(shù)。稍后描述的類LookPixmap(本地)和PixmapLook(Java)專門使用這個(gè)方法。這并不阻止開(kāi)發(fā)者,無(wú)論是否從LookPixmap中導(dǎo)出,使用矢量方法來(lái)創(chuàng)建他們自己的外觀。在矢量技術(shù)中,對(duì)象使用一系列基本繪制操作諸如DrawRectancle()、DrawArc()來(lái)繪制。該外觀類必須定義用于繪制該對(duì)象的規(guī)則作為該對(duì)象所需尺寸的一個(gè)函數(shù)。完全有可能設(shè)想一個(gè)外觀類組合了Bitmap(位圖)和Vectorial(矢量)技術(shù)。例如,位圖方法能被用于一個(gè)按鈕的基本形式,而矢量方法能夠提供突出顯示?,F(xiàn)在更詳細(xì)地討論WGT模塊外觀機(jī)制已經(jīng)包括了以下機(jī)制·把當(dāng)前用于每個(gè)對(duì)象的繪制方法劃分到七個(gè)函數(shù)中,其中的某些包含在歸屬于該對(duì)象的外觀類中DrawBackground();MhwWgtLookDrawBackground();DrawForeground();MhwWgtLookDrawForeground();MhwWgtLookDrawRelief();MhwWgtLookDrawFocus();MhwWgtLookHighlight()·創(chuàng)建一個(gè)抽象類MhwWgtLook。·創(chuàng)建一個(gè)從MhwWgtLook中導(dǎo)出的類MhwWgtLookWgt,并且當(dāng)初始化WGT時(shí)實(shí)例化之。·添加一個(gè)全局變量g_TheDefaultLook,該變量用于當(dāng)創(chuàng)建一個(gè)對(duì)象時(shí)如果沒(méi)有一個(gè)具體的外觀歸屬于MhwWgtXXXAttsSetLook,則設(shè)置將歸屬于每個(gè)對(duì)象的外觀?!ぬ砑右粋€(gè)用于改變對(duì)象缺省外觀的公共方法MhwWgtSetDefaultLook(context)?!ぬ砑觾蓚€(gè)公共方法到該對(duì)象類中MhwWgtSetXXXAttrLook(*object,*look)以及MhwWgtGetXXXAttsLook(*object)。這些方面,從用于繪制的方法開(kāi)始,在以后幾節(jié)里給出。每個(gè)繪制函數(shù)當(dāng)它被調(diào)用時(shí)調(diào)用以下方法DrawBackground();MhwWgtLookDrawBackground();DrawForeground();MhwWgtLookDrawForeground();MhwWgtLookDrawRelief();MhwWgtLookDrawFocus();以及MhwWgtLookHighlight()。這兩個(gè)方法DrawBackground()和DrawForeground()屬于WGT,其與該外觀無(wú)關(guān)而被調(diào)用。其它實(shí)際上是,指向與計(jì)論中的窗口小部件相關(guān)聯(lián)的外觀類中的相應(yīng)函數(shù)的指針。以這種方式,該外觀類實(shí)現(xiàn)了用于這些部分的繪制函數(shù)。Background這允許該外觀在整個(gè)窗口小部件后面繪制。Foreground這可用于在該窗口小部件中心部分(除邊界以外)之上繪制其他圖形的一個(gè)圖像。Relief如果該窗口小部件的凸起標(biāo)記被設(shè)置了則調(diào)用這個(gè),以及用來(lái)繪制用于該窗口小部件的邊界或者凸起。Focus如果該窗口小部件具有焦點(diǎn)則調(diào)用這個(gè)。它可用于圖形化地指示這個(gè)。Highlight如果該窗口小部件被突出顯示了則調(diào)用這個(gè)。它可用于圖形化地指示這個(gè)。定義了抽象類MhwWgtLook并且其包含以下內(nèi)容WgtCoreLookClassMethod;WgtCoreLookClassField;WgtCoreLookClass;WgtCoreLookPart;以及WgtCoreLookObject。這些被描述如下。<prelisting-type="program-listing"><![CDATA[FIELDSMhwWgtLookClass*extends;Int32classId;StringClassName;Card16mask;Card8borderwidthTop;Card8borderwidthBottomCard8borderwidthLeft;Card8borderwidthRight;MhwWgtColorMapIdColormapMhwWgtVisualvisual;Card32blackPixel;Card32whitePixel;Card32transparentPixel;MhwWgtColorverylightGray;MhwWgtColorlightGray;MhwWgtColormiddleGray;MhwWgtColordarkGray;MhwWgtColorhighlight;MhwWgtColorb1ackColor;MhwWgtColorwhiteColor;METHODTABLE(settopointtotheoverloadedmethodsinderivedclasses)MhwWgtError(*delete)(MhwWgtLook);MhwWgtErrox(*free)(MhwWgtLook);MhwWgtError(*reference)(MhwWgtLook);Card8(*getBorderWidth)(MhwWgtLook,MhwWgtWidget,  MhwWgtLookBorder);MhwWgtError(*getBorderWidth)(MhwWgtLook,MhwWgtLookBorder,  Card8);Bool(*isInstanceOf)(MhwWgtLook,Int32);MhwWgtError(*drawBackground)(MhwWgtLook,MhwWgtWidget,Int16, Int16,Card16,Card16);MhwWgtError(*drawForeground)(MhwWgtLook,MhwWgtWidget,Int16, Int16,Card16,Card16);MhwWgtError(*drawRelief)(MhwWgtLook,MhwWgtWidget,Int16, Int16,Card16,Card16, MhwWgtLookRelief);MhwWgtError(*unDrawRelief)(MhwWgtLook,MhwWgtWidget,Int16, Int16,Card16,Card16)MhwWgtError(*drawFocus)(MhwWgtLook,MhwWgtWidget,Int16, Int16,Card16,Card16);MhwWgtError(*unDrawFocus)(MhwWgtLook,MhwWgtWidget,Int16,  Int16,Card16,Card16);MhwWgtError(*drawHighlight)(MhwWgtLook,MhwWgtWidget,Int16, Int16,Card16,Card16);MhwWgtError(*unDrawHighlight)(MhwWgtLook,MhwWgtWidget,Int16,Int16,Card16,Card16);MhwWgtError(*drawInset)(MhwWgtLook,MhwWgtWidget,Int16, Int16,Card16,Card16);MhwWgtError(*drawOutset)(MhwWgtLook,MhwWgtWidget,Int16, Int16,Card16,Card16).MhwWgtError(*drawSelectedBG)(MhwWgtLook,MhwWgtWidget,Int16, Int16,Card16,Card16);MhwWgtError(*drawCheckSymbol)(MhwWgtLook,MhwWgtWidget,Int16, Int16,Card16,Card16,Boo1, MhwWgtCheckStyle)MhwWgtError(*drawChoiceSymbol)(MhwWgtLook,MhwWgtWidget,Int16, Int16,Card16,Card16);MhwWgtError(*drawAnchor)(MhwWgtLook,MhwWgtWidget,Int16, Int16,Card16,Card16,String, Card32,Int8,MhwWgtLookItemFlag, MhwWgtColor);MhwWgtError(*drawCross)(MhwWgtLook,MhwWgtWidget,Int16, Int16,Card16,Card16);MhwWgtError(*unDrawCross)(MnwWgtLook,MhwWgtWidget,Int16, Int16,Card16,Card16);MhwWgtError(*drawltem)(MhwWgtLook,MhwWgtWidget,Int16, Int16,Card16,Card16,String. Card32,Int8,MhwWgtLookItemFlag);MhwWgtError(*reDrawltem)(MhwWgtLook,MhwWgtWidget,Int16, Int16,Card16,Card16,String, Card32,Int8,MhwWgtLookltemFlag, Bool);MhwWgtError(*drawSlidArrow)(MhwWgtLook,MhwWgtWidget,Int16, Int16,Card16,Card16, MhwWgtSlidDirection);MhwWgtError(*drawSlidLift)(MhwWgtLook.MhwWgtWidget.Int16, Int16,Card16,Card16);MhwWgtError(*drawCursor)(MhwWgtLook,MhwWgtWidget,Int16. Int16,Card16,Card16);MhwWgtError(*unDrawCursor)(MhwWgtLook,MhwWgtWidget,Int16, Int16,Card16,Card16);MhwWgtError(*drawString)(MhwWgtLook,MhwWgtWidget,Int16,Int16,string,Card32,Int8);  MhwWgtDimension(*getPreferredSizeArrow)(MhwWgtLook);  MhwWgtDimension(*getPreferredSizeCheck)(MhwWgtLook);  MhwWgtDimension(*getPreferredSizeChoice)(MhwWgtLook);  MhwWgtDimension(*getPreferredSizeCross)(MhwWgtLook);  Card8(*getItemBorderwidth)(MhwWgtLook);]]></pre>(Card8、Card16等數(shù)據(jù)類型是用于具有指示位數(shù)的數(shù)字類型的別名,例如Card8相當(dāng)于一個(gè)‘char’,Card16相當(dāng)于一個(gè)‘short’,等)。對(duì)于每個(gè)對(duì)象類型,每種繪制方法都是一樣的。對(duì)于需要一種不同的方法用于每種方法、或者至少用于某些方法的外觀,在該外觀類中的方法必須標(biāo)識(shí)該窗口小部件類型并且據(jù)此作用。注意方法DrawNothing()的目的。如果調(diào)用它的話,就簡(jiǎn)單地返回OK。某些特征在一個(gè)給定的外觀中是不必要被實(shí)現(xiàn)的。因此WGT不必要必須檢測(cè)一個(gè)給定函數(shù)的存在,任何未實(shí)現(xiàn)的函數(shù)都將指向這個(gè)方法。還要注意掩碼。這是一個(gè)私有、只讀的布爾數(shù)組,其中的每個(gè)元素對(duì)應(yīng)于上述方法中的一個(gè)。如果一個(gè)元素設(shè)置為1,則重新定義該相應(yīng)的方法。否則,該方法沒(méi)有被重新定義。以這種方式,如果WGT想要的話,它就能夠發(fā)現(xiàn)在一次操作中它必須調(diào)用哪些方法。該外觀類用來(lái)定義在任何外觀定義和WGT之間的接口。WGT僅僅使用這些方法來(lái)顯示需要的外觀。如果一個(gè)外觀需要附加的功能,則它能夠被合并到一個(gè)擴(kuò)展的外觀結(jié)構(gòu)中,但是由該應(yīng)用程序而非WGT來(lái)考慮這些方法/參數(shù)。以這種方式,能夠添加附加的屬性和方法。一個(gè)導(dǎo)出的外觀結(jié)構(gòu)必須包含所有這些方法和屬性,而且它還可以添加它自己的方法和屬性。然而WGT將僅僅考慮在MhwWgtLook結(jié)構(gòu)中定義的那些方法?,F(xiàn)在討論類MhwWgtLookWgt。所以現(xiàn)有的應(yīng)用程序不必進(jìn)行修改就可以保持與修改版本的WGT兼容,一個(gè)定義WGT對(duì)象當(dāng)前所具有的外觀的基本外觀類由WGT創(chuàng)建和實(shí)例化。它是MhwWgtLook的一個(gè)子類并且被稱作MhwWgtLookWgt。當(dāng)這類被初始化時(shí),在該結(jié)構(gòu)中所有指針的值被設(shè)置為指向WGT定義的方法。這些基本類不包含別的-它僅僅定義WGT當(dāng)前提供的外觀。<prelisting-type="program-listing"><![CDATA[  FIELDS  Card8reliefWidth  MhwWgtColorreliefColorWhite;  MhwWgtColorreliefColorBlack;  Card8focusWidth;  MhwWgtColorfocusColor;  Card8highlightWidth;  MhwWgtColorhighlightColor;  MhwWgtColoranchorColorBGNormal;  MhwWgtColoranchorColorFGVisited  MhwWgtColoranchorColorBGCurrent  Card16mask;  Card8reliefWidth;  MhwWgtColorreliefColorWhite;  MhwWgtColorreliefColorBlack;  Card8focusWidth;  MhwWgtColorfocusColor;  Card8highlightWidth;  MhwWgtColorhighlightColor;  MhwWgtColoranchorColorBGNormal;  MhwWgtColoranchorColorFGVisited;  MhwWgtColoranchorColorBGCurrent;  MhwWgtColorMapIdcolorMap;  Card32blackPixel;  Card32whitePixel;  Card32transparentPixel;  MhwWgtColorverylightGray;  MhwWgtColorlightGray;  MhwWgtColormiddleGray;  MhwWgtColordarkGray  MhwWgtColorhighlight;  MhwWgtColorblackColor;  MhwWgtColorwhiteColor;  METHODTABLE  MhwWgtError(*setReliefWidth)(MhwWgtLkWgt,Card8);  MhwWgtError(*setReliefColorBlack)(MhwWgtLkWgt,MhwWgtColor);  MhwWgtError(*setReliefColorWhite)(MhwWgtLkWgt,MhwWgtColor);MhwWgtError(*setFocusWidth)(MhWWgtLkWgt,Card8);  MhwWgtError(*setFocusColor)(MhwWgtLkWgt,MhwWgtColor);  MhwWgtError(*setHighlightWidth)(MhwWgtLkWgt,Card8);  MhwWgtError(*setHighlightColor)(MhwWgtLkWgt,MhwWgtColor);  MhwWgtError(*setAnchorColorBGNormal)(MhwWgtLkWgt,MhwWgtColor);  MhwWgtError(*setAnchorColorFGVisited)(MhwWgtLkWgt,MhwWgtColor);  MhwWgtError(*setAnchorColorBGCurrent)(MhwWgtLkWgt,MhwWgtColor);]]></pre>對(duì)于WGT初始化,當(dāng)啟動(dòng)該WGT時(shí)必須創(chuàng)建類MhwWgtLookwgt的一個(gè)實(shí)例。如果該應(yīng)用程序沒(méi)有指定一個(gè)不同的外觀的話,WGT將因此能訪問(wèn)這些方法。g_TheDefaultLook全局變量(如下所述)最初必須被設(shè)置為指向這個(gè)外觀?,F(xiàn)在描述定義新外觀和設(shè)置缺省外觀的過(guò)程。WGT不負(fù)責(zé)定義或者實(shí)例化新的外觀對(duì)象。應(yīng)用程序必須自己執(zhí)行這個(gè)。所有創(chuàng)建的外觀對(duì)象在一個(gè)MhwWgtLook結(jié)構(gòu)中必須是可塑的,參看在下面的外觀管理。對(duì)于缺省的外觀,字段MhwWgtLook*DefaultLook必須被添加到MhwWgtContext對(duì)象中,以指向要施加到從這個(gè)環(huán)境中創(chuàng)建的任何新對(duì)象的MhwWgtLook實(shí)例。當(dāng)創(chuàng)建一個(gè)新的WGT環(huán)境時(shí),這個(gè)字段必須被設(shè)置為指向WgtBasicLook。對(duì)于設(shè)置用于一個(gè)環(huán)境的缺省外觀,提供了一個(gè)公共方法MgwWgtSetDefaultLook(MhwWgtContext,aContext,MhwWqtLookaLook)以設(shè)置在aContext中的DefaultLook字段以指向aLook。為了將一個(gè)外觀與一個(gè)對(duì)象關(guān)聯(lián),以下的屬性被添加到在該核心類中的coreAtts結(jié)構(gòu)中MhwWgtLook*Look這個(gè)屬性因此為每個(gè)創(chuàng)建的對(duì)象而創(chuàng)建。每當(dāng)一個(gè)對(duì)象被實(shí)例化時(shí),外觀被設(shè)置為指向DefaultLook全局變量。兩個(gè)新的公共方法MhwWgtSetXXXAttsLook(MhwWgtWidgetanObject,MhWWgtLookaLook)和MhwWgtGetXXXAttsLook(MhwWgtWidgetanObject,MhwWgtLook*aLook)將被添加到該核心類中,以允許改變與該對(duì)象相聯(lián)系的外觀實(shí)例?,F(xiàn)在討論外觀的管理。WGT不提供任何外觀管理。為了使用一個(gè)不同于該缺省的外觀,一個(gè)應(yīng)用程序首先必須確保一個(gè)或多個(gè)外觀類被實(shí)例化和初始化了,然后每當(dāng)它創(chuàng)建一個(gè)新的WGT對(duì)象時(shí),使用MhwWgtSetCoreAttsLook()方法來(lái)把期望的外觀與對(duì)象相關(guān)聯(lián)。如果它希望使用一個(gè)給定的外觀用于所有將來(lái)的窗口小部件,它能夠使用如上所述的MhwWgtSetDefaultLook()方法。一個(gè)希望使用任何不同于缺省時(shí)定義的一個(gè)外觀的應(yīng)用程序負(fù)責(zé)創(chuàng)建和實(shí)例化該外觀。在本發(fā)明的另一個(gè)實(shí)施例中,一個(gè)應(yīng)用程序可以遠(yuǎn)程下載外觀。然而,在這種情況下,應(yīng)用程序本身必須提供從MhwWgtLook導(dǎo)出的、需要的類。一個(gè)外觀不能由創(chuàng)建它的應(yīng)用程序破壞直到所有使用它的窗口小部件都已經(jīng)被破壞了為止。這需要添加一個(gè)refCounter字段來(lái)計(jì)數(shù)“客戶”的數(shù)目。look=MhwNewLook()MhwLookRef(look);MhwLookUnref(look);Look=0;這替換了free(look)。當(dāng)它的refCounter字段等于0時(shí)實(shí)際上將破壞該外觀。setXxxLook(widget,look){if(widget-&gt;core.look)MhwLookUnref(widget-&gt;core.look);widget-&gt;core.look=look;if(look)MhwLookRef(look);}用于實(shí)現(xiàn)外觀的WGT模塊API列表在這里給出<prelisting-type="program-listing"><![CDATA[externMhwWgtErrorMhwWgtLookInitDefault(MhwWgtLookClass*,  MhwWgtLookAtts*);externMhwWgtErrorMhwWgtLookinitClass(Void);externMhwWgtErrorMhwWgtLookResetDefault(MnwWgtLookClass*);externMhwWgtErrorMhwWgtLookAttsGetBorderWidthBTLR(MhwWgtLookAtts*, Card8*,Card8*,Card8*,Card8*);externMhwWgtErrorMhwWgtLookAttsGetBorderWidthBottom  (MhwWgtLookAtts*,Card8*);externMhwWgtErrorMhwWgtLookAtt3GetBorderWidthLeft(MhwWgtLookAtts*,  Card8*);externMhwWgtErrorMhwWgtLookAttsGetaorderWidthRight(MhwWgtLookAtts*, Card8*);externMhwWgtErrorMhwWgtLookAttsGetBorderWidthTop(MhwWgtLookAtts*,Card8*);externMhwWgtErrorMhwWgtLookAttsGetDefault(MhwWgtLookClass*,MhwWgtLookAtts*)externMhwWgtErrorMhwWgtLookAttsInit(MhwWgtLookAtts*);externMhwWgtErrorMhwWgtLookAttsSetBorderWidthBTLR(MhwWgtLookAtts*, Card8,Card8,Card8,Card8);externMhwWgtErrorMhwWgtLookAttsSetBorderWidthBottom  (MhwWgtLookAtts*,Card8);extetnMhwWgtErrorMhwWgtLookAttsSetBorderWidthLeft(MhwWgtLookAtts*, Card8);externMhwWgtErrorMhwWgtLookAttsSetBorderWidthRight(MhwWgtLookAtts*, Card8);externMhwWgtErrorMhwWgtLookAttsSetBorderWidthTop(MhwWgtLookAtts*,Card8);]]></pre>現(xiàn)在將更詳細(xì)地描述Look/LookPixmap模塊。類MhwWgtbookPixmap從如上所述的類MhwWgtLook中導(dǎo)出。如上所述,實(shí)質(zhì)上它通過(guò)重構(gòu)每個(gè)組件的各種單元來(lái)創(chuàng)建一個(gè)所需尺寸的圖形圖像來(lái)進(jìn)行工作。這些圖像在下列中使用按鈕背景;凸起(例如,就是沿著文本區(qū)域活動(dòng)區(qū)的邊界);一個(gè)用于(選擇)組件的符號(hào);復(fù)選框;滑動(dòng)塊;和滑動(dòng)塊的移動(dòng)按鈕。參考圖40,為了減少初始化時(shí)間,圖像不被壓縮,但是以一種設(shè)計(jì)成盡可能最小化所占據(jù)空間的特定格式進(jìn)行保存。每一個(gè)像素(2152)的顏色在單個(gè)字節(jié)中描述,其為在當(dāng)前顏色映射中顏色的索引號(hào)(2151)。圖40顯示了一個(gè)示例緩沖區(qū),image,其包含一個(gè)4×4圖像(2153)。在圖40中的圖像(2153)將如下所示存儲(chǔ)Card8slidLiftSeVrImage4[4][4]={{0,0,0,1},{0,0,1,2},{0,1,2,3},{1,2,3,4}};現(xiàn)在將描述LookPixMap圖像結(jié)構(gòu)。為了識(shí)別一個(gè)圖像緩沖區(qū)的尺寸,結(jié)構(gòu)LookPixmapImage被定義為包含如上所述的圖像緩沖區(qū),鏈同該圖像的寬度和高度。這個(gè)在下面定義的結(jié)構(gòu)用來(lái)包含用于每個(gè)圖形元素的數(shù)據(jù)。typedefstruct{Card8*imageData;包含該圖像的緩沖區(qū)。它是Card8的二維數(shù)組,其中的每個(gè)單元都包含要在該數(shù)組中該位置處顯示的顏色在該顏色調(diào)色板中的索引號(hào)。Card8*maskData;包含該掩碼的緩沖區(qū)。它是一維Card8數(shù)組,每個(gè)像素一位(和由該圖像模塊返回的格式相同)。Card16width;圖像的寬度。Card16height;圖像的高度。Card8isOpaque;如果圖像包含任何透明元素則為0,如果完全不透明為1。}LookPixmapImage;圖像能夠具有不同的尺寸,雖然對(duì)于一個(gè)給定類型的單元,它們通常將是相同的。然而中心單元(xxxxxC)經(jīng)常為尺寸1×1。MhwWgtLookPixmapAllImages結(jié)構(gòu)把所有圖像單元集合起來(lái),其如下所示<prelisting-type="program-listing"><![CDATA[  typedefstruct  {  LookPixmapImage*relnoNW;NorthWestcornerofrelicf-state  Normal  LookPixmapImage*relnoSW;SouthWestcornerofrelicf-state  Normal  LookPixmapImage*relnoNE;NorthEastcornerofrelief-statc  NormalLookPixmapImage*relnoSE;SouthEastcornerofrelief-state  NormalLookPixmapImage*relnoN;Northedgeofrelief-stateNormalLookPixmapImage*relnoW;Westedgeofrelief-stateNormalLookPixmapImage*relnoE;Eastedgeofrelief-stateNormalLookPixmapImage*relnoSSouthedgeofrelief-stateNormalLookPixmapImage*relnoC;Centralareaofrelief-stateNormalLookPixmapImage*relfoNW;State-FocusonlyLookPixmapImage*relfoSW;LookPixmapImage*relfcNW;LookPixmapImage*relfoSE;LookPixmapImage*relfoN;LookPixmapImage*relfoW;LookPixmapImage*relfoE;LookPixmapImage*relfoS;LookPixmapImage*relfoC;LookPixmapImage*relhiNW;State-HighlightonlyLookPixmapImage*relhiSW;LookPixmapImage*relhiNE;LookPixmapImage*reihiSE;LookPixmapImage*relhiN;LookPixmapImage*relhiW;LookPixmapImage*relhiE;LookPixmapImage*relhiS;LookPixmapImage*relhiC;LookPixmapImage*relfhNW;State-FocusandHighlightLookPixmapImage*relfhSW;LookPixmapImage*rolfhNE;LookPixmapImage*relfhSE;LookPixmapImage*relfhN;LookPixmapImage*relfhW;LookPixmapImage*relfhE;LookPixmapImage*relfhSLookPixmapImage*relfhC;LookPixmapImage*butnoNW;ButtonelementsLookPixmapImage*butnoSWLookPixmapImage*butnoNE;LookPixmapImage*butnoSE;LookPixmapImage*butnoN;LookPixmapImage*butnoWLookPixmapImage*butnoELookPixmapImage*butnoS;LookPixmapImage*butnoC;LookPixmapImage*butfoNW;LookPixmapImage*butfoSW;LookPixmapImage*butfoNE;LookPixmapImage*butfoSE;LookPixmapImage*butfoN;LookPixmapImage*butfoW;LookPixmapImage*butfoE;LookPixmapImage*butfoS;LookPixmapImage*butfoC;  LookPixmapImage*buthiNW;  LookPixmapImage*buthiSW;  LookPixmapImage*buthiNE;  LookPixmapImage*buthiSE;  LookPixmapImage*buthiN;  LookPixmapImage*buthiW;  LookPixmapImage*buthiE;  LookPixmapImage*buthiS;  LookPixmapImage*buthiC;  LookPixmapImage*butfhNW;  LookPixmapImage*butfhSW;  LookPixmapImage*butfhNE;  LookPixmapImage*butfhSE;  LookPixmapImage*butfhN;  LookPixmapImage*butfhw;  LookPixmapImage*butfhE;  LookPixmapImage*butfhS;  LookPixmapImage*butfhC;  LookPixmapImage*choice;ChoiceSymbol  LookPixmapImage*chck1na,Checkboxsymbol-Type1notselected  nofocus  LookPixmapImage*chck1a;Checkboxsymbol-Typc1selectedno  focus  LookPixmapImage*chckf1na;Checkboxsymbol-Type1notselected  focus  LookPixmapImage*chckf1aCheckboxsymbol-Type1selected  focus  LookPixmapImage*chck2na;Checkboxsymbol-Type2notselected nofocus  LookPixmapImage*chck2a;Checkboxsymbol-Type2selectedno  focus  LookPixmapImage*chckf2na;Checkboxsymbol-Type2notselected  focus  LookPixmapImage*chckf2a;Checkboxsymbol-Type2selected  focus  LookPixmapImage*slidNeVr;Sliderbackgroundelements  LookPixmapImage*slidEVr;  LookPixmapImage*slidSeVr  LookPixmapImage*slidSwHr  LookPixmapImage*slidSHr;  LookPixmapImage*slidSeHr;  LookPixmapImage*slidSeVrHr;  LookPixmapImage*slidLiftNeVr;Sliderliftelements  LookPixmapImage*slidLiftEVr;  LookPixmapImage*slidLiftSeVr,  LookPixmapImage*slidliftSwHr;  LookPixmapImage*slidLiftSHr;  LookPuxnaoImage*slidLiftSeHr;}  MhwWgtLookPixmapAllImages;]]></pre>本節(jié)描述了LookPixmap模塊,其包含類LookPixmap,已經(jīng)創(chuàng)建了該類以允許一組不同的外觀應(yīng)用到網(wǎng)絡(luò)瀏覽器上。這個(gè)模塊包含下列源文件MhwWgtLookPixmap.h;MhwWgtLookPixmapStruct.h;WgtLookPixmapClass.c;MhwWgtLookPixmapImages.h;MhwWgtLookPixmapImages2.h;MhwWgtLookPixmapImages3.h;MhwWgtLookPixmapImages4.h;MhwWgtLookPixmapImages5.h;以及MhwWgtLookPixmapImages6.h?,F(xiàn)在將描述LookPixmap模塊,包含創(chuàng)建和使用LookPixmap對(duì)象的最佳方法的詳情。任何使用WGT用于創(chuàng)建和管理窗口小部件的軟件能夠使用該LookPixmap模塊以提供可替換的外觀到該WGT窗口小部件。對(duì)于一個(gè)使用該LookPixmap外觀的應(yīng)用程序,必須創(chuàng)建一個(gè)LookPixmap對(duì)象。這能夠使用以下代碼來(lái)執(zhí)行MhwWgtLkWebClassPixmapLook;MhwWgtLkWebPixmapLookObject;MhwWgtLkWebAttsLookPixmapValues;MhwWgtErrorWgtErr;WgtErr=MhwWgtLkWebInitClass();WgtErr=MhwWgtLkWebAttsInit(&amp;LookPixmapValues);WgtErr=MhwWgtLkWebInitDefault(&amp;PixmapLook,&amp;LookPixmapvalues);PixmapLookObject=MhwWgtLkWebNew(&amp;LookPixMapValues);現(xiàn)在描述一種用于設(shè)置該缺省外觀的方法。一個(gè)應(yīng)用程序缺省時(shí)能夠使用一個(gè)給定的外觀對(duì)象。缺省時(shí),該缺省外觀是由WGT創(chuàng)建的LookWgt對(duì)象。為了設(shè)置另一個(gè)缺省外觀,在它已經(jīng)如上所述被創(chuàng)建了的情況下,能夠使用下列函數(shù)MhwWgtSetDefaultLook((MhwWgtLook)PixmapLookObject);所有后續(xù)創(chuàng)建的WGT窗口小部件將與該LookPixmap外觀類相關(guān)聯(lián),而不是與WGT缺省的LookWgt相關(guān)聯(lián)。一個(gè)應(yīng)用程序能夠選擇或者設(shè)置用于一個(gè)給定類型的窗口小部件、或者一個(gè)給定窗口小部件的外觀,如現(xiàn)在將描述的那樣。當(dāng)創(chuàng)建該窗口小部件時(shí),一個(gè)應(yīng)用程序能夠設(shè)置用于一個(gè)給定窗口小部件的外觀,這是通過(guò)就在創(chuàng)建該窗口小部件之前調(diào)用以下函數(shù)來(lái)完成MhwWgtXXXAttsSetLook(MhwWgtXXXAtts*,MhwWgtLook);它還可以在創(chuàng)建一個(gè)對(duì)象之后設(shè)置一個(gè)對(duì)象的外觀,這使用以下函數(shù)MhwWgtXXXSetLook(MhwWgtXXXWidget*,MhwWgtLook);(其中xxx是窗口小部件的類型-例如LIST)?,F(xiàn)在將描述使用LookPixMap圖像的方法。單個(gè)LookPixmap對(duì)象使用單個(gè)圖像組。你能夠簡(jiǎn)單地通過(guò)改變?cè)搱D像來(lái)顯著明顯地改變?cè)撏庥^。你能夠通過(guò)調(diào)用以下函數(shù)來(lái)改變用于一個(gè)給定LookPixmap的圖像MhwWgtLookPixmapSetImages(MhwWgtLookPixmap*,MhwWgtLookPixmapAllImages*);設(shè)置在所有使用該指定LookPixmap對(duì)象的窗口小部件中使用的圖像到指定的圖像組。MhwWgtLookPixmapSetDefaultImages(MhwWgtLookPixmap*);設(shè)置在所有使用該指定LookPixmap對(duì)象的窗口小部件中使用的圖像到缺省的圖像組。如果你希望使用不同的圖像用于不同的窗口小部件,你必須為每個(gè)需要的圖像組創(chuàng)建一個(gè)LookPixmap對(duì)象。你然后分配每個(gè)圖像組到適當(dāng)?shù)耐庥^,然后將每個(gè)外觀關(guān)聯(lián)到適當(dāng)?shù)拇翱谛〔考,F(xiàn)在將參考圖39和41,描述LookPixmap模塊的API。以下公共的API是可用的MhwWptLookPixmapSetImages()原型MhwWgtErrorMhwWgtLookPixmapSetImages(MhwWgtLkWebaLook,MhwWgtLookpixmapAllImages*someImages);描述把由aLook使用的圖像組設(shè)置為由someImages指向的圖像組。參數(shù)aLookMhwWgtLkWeb對(duì)象,關(guān)聯(lián)圖像someImages到該對(duì)象someImages與aLook關(guān)聯(lián)的圖像組。返回MHW_WGT_SUCCESSMhwWgtLookPixmapSetImagesID()原型MhwWgtErrorMhwWgtLookPixmapSetImagesID(MhwWgtLkWebaLook,Card8anImageID);描述把由aLook使用的圖像組設(shè)置為在MhwWgtLookPixMap中硬編程而且由anImageID標(biāo)識(shí)的圖像組。參數(shù)aLookMhwWgtLkWeb對(duì)象,關(guān)聯(lián)由anImageID標(biāo)識(shí)的圖像到該對(duì)象。anImageID在MhwWgtLookPixmap中硬編程的與aLook關(guān)聯(lián)的圖像組標(biāo)識(shí)符。返回MHW_WGT_SUCCESSMhwWgtLookPixmapSetDefaultImages()原型MhwWgtErrorMhwWgtLookPixmapSetDefaultImages(MhwWgtLkWebaLook);描述把由aLook使用的圖像組設(shè)置為在MhwWgtLookPixMap中硬編程而且由標(biāo)識(shí)符1標(biāo)識(shí)的圖像組。參數(shù)aLookMhwWgtLkWeb對(duì)象,關(guān)聯(lián)由anImageID標(biāo)識(shí)的圖像到該對(duì)象。返回MHW_WGT_SUCCESSMhwWgtLookPixmapLoadImage()原型MhwWgtErrorMhwWgtLookPixmapLoadImage(MhwWgtLkWebaLook,Int32anElementID,Int32aWidth,Int32aHeight,Card8*anImageBuffer);描述用于把由當(dāng)前MhwWgtLookPixmapAllImages結(jié)構(gòu)指向的單個(gè)圖像改變到指向指定的圖像。創(chuàng)建一個(gè)LookPixmapImage結(jié)構(gòu),而且把由aLook指向的當(dāng)前MhwWgtLookPixmapAllImages設(shè)置為指向由anElementID指定單元的LookPixmapImage。參數(shù)aLookMhwWgtLkWeb對(duì)象,關(guān)聯(lián)由anImageID標(biāo)識(shí)的圖像到該對(duì)象。anElementID要改變單元的標(biāo)識(shí)符。aWidth新圖像的寬度,以像素為單位。aHeight新圖像的高度,以像素為單位。anImageBuffer包含該新的圖像數(shù)據(jù)的緩沖區(qū)。返回MHW_WGT_SUCCESSLookPixmapMakeImageFromElements()原型<prelisting-type="program-listing"><![CDATA[  MhwWgtErrorLookPixmapMakeImageFromElements(LookPixmapImage*elemN,  LookPixmapImage*elemE,  LookPixmapImage*elemW,  LookPixmapImage*elemS,  LookPixmapImage*elemNW,  LookPixmapImage*elemE,  LookPixmapImage*elemSW,  LookPixmapImage*elemSE,  LookPixmapImage*elemC,Card16anX,  Card16aY,Card16aWidth,Card16  aHeight,MHWWindowIDaWindow,  LookPixmapDrawModeaDrawMode);]]></pre>描述使用九個(gè)elemX圖像并且在指定的MHW窗口中繪制它們。用于構(gòu)造該圖像的規(guī)則由aDrawMode指定(當(dāng)前僅僅存在MHW_WGT_LIKWEB_DRAW_NORMAL)。在該窗口中繪制的最終圖像的左上角位于(anX,aY)處并且具有尺寸aWidth×aHeight。如果一個(gè)或多個(gè)單元具有零尺寸(要么elemXX.width要么elemXX.height為零),則不繪制這些單元。參數(shù)elemN,elemE,elemW,elemS,elemNW,elemNE,elemSW,elemSE,elemC分別在上面、右邊、左邊、底端、左上角、右上角、左下角、右下角和中間處繪制的圖像。anX在窗口aWindow中,繪制該最終圖像的x位置。aY在窗口aWindow中,繪制該最終圖像的y位置。aWidth新圖像的寬度,以像素為單位。aHeight新圖像的高度,以像素為單位。aWindow在其中繪制該構(gòu)造圖像的窗口。aDrawMode構(gòu)造該圖像的模式。MHW_WGT_LKWEB_DRAW_NORMAL把NW(2100)、NE(2101)、SW(2102)和SE(2103)單元放置在四角(2200、2201、2202、2203)而不用平鋪。橫向平鋪N和S單元??v向平鋪W和E單元。橫向和縱向平鋪C單元。盡管它對(duì)任何的圖像尺寸都可以用,但是它僅僅保證如果該中心區(qū)域(2208)是矩形時(shí),能夠正確地平鋪該區(qū)域。返回MHW_WGT_SUCCESS現(xiàn)在將描述Mhw.awtJava界面包。已經(jīng)開(kāi)發(fā)了三個(gè)Java類以便在WGT中定義的外觀機(jī)制能夠由java應(yīng)用程序利用。這些是mhw.awt.Look;mhw.awt.WgtLook;和mhw.awt.PixmapLook。該外觀類是對(duì)應(yīng)于如上所述MhwWgtLook類的抽象類。類WgtLook用來(lái)創(chuàng)建和處理WGT類MhwWgtLookWgt的實(shí)例。PixmapLook類用來(lái)存儲(chǔ)由類WgtLook使用的圖像。現(xiàn)在將從構(gòu)造器的詳情開(kāi)始描述Mhw.awt.PixmapLookAPI。PixmapLookpublicPixmapLook()創(chuàng)建一個(gè)PixmapLook對(duì)象的一個(gè)新實(shí)例,讓該圖像被初始化為缺省的圖像(ID=1)PixmapLookpublicPixmapLook(intimageID)創(chuàng)建PixmapLook對(duì)象的一個(gè)新實(shí)例,讓該圖像被初始化為由imageID指定的圖像?,F(xiàn)在將描述方法。SetImagespublicvoidSetImages()把用于該P(yáng)ixmapLook對(duì)象的當(dāng)前圖像設(shè)置為缺省(ID=I)SetImagespublicvoidSetImages(intimageID)把用于該P(yáng)ixmapLook對(duì)象的當(dāng)前圖像設(shè)置為由imageID指定的圖像LoadImagepublicvoidLoadImage(intelementID,intwidth,intheight,byte[]buffer)加載一個(gè)指定的圖像單元。每個(gè)PixmapLook對(duì)象具有一組(94)與它相關(guān)聯(lián)的圖像。這些圖像表示如下的圖形組件單元0relnoNW;1relnoSW;2relnoNE;3relnoSE;4relnoN;5relnoW;6relnoE;7relnoS;8relnoC;9relfoNW;10relfoSW;11relfoNE;12relfoSE,13relfoN;14relfoW;15relfoE;16relfoS;17relfoC;18relhiNW;19relhiSW;20relhiNE;21relhiSE;22relhiN;23relhiW;24relhiE;25relhiS;26relhiC;27relfhNW;28relfhSW;29relfhNE;30relfhSE;31relfhN;32relfhW;33relfhE;34relfhS;35relfhC;36butnoNW;37butnoSW;38butnoNE;39butnoSE;40butnoN;41butnoW;42butnoE;43butnoS;44butnoC;45butfoNW;46butfoSW;47butfoNE;48butfoSE;49butfoN;50butfoW;51butfoE;52butfoS;53butfoC;54buthiNW;55buthiSW;56buthiNE;57buthiSE;58buthiN;59buthiW;60buthiE;61buthiS;62buthiC;63butfhNW;64butfhSW;65butfhNE;66butfhSE;67butfhN;68butfhW;69butfhE;70butfhS;71butfhC;72choice;73chcklno;74chcklse;75chcklfo;76chcklfs;77chck2no;78chcl2se;79chck2fo;80chck2fs;81slidNeVr;82slidEVr;83slidSeVr;84slidSwHr;85slidSHr;86slidSeHr;87slidSeVrHr;88slidLiftNeVr;89slidLiftEVr;90slidLiftSeVr;91slidLiftSwHr;92slidLiftSHr;93slidLiftSeHrwidth指定傳遞的圖像寬度。height指定傳遞的圖像高度。buffer包含該圖像數(shù)據(jù)。這以一個(gè)字節(jié)數(shù)組形式,每個(gè)字節(jié)為每一個(gè)像素給定使用的顏色映射。用于像素(x,y)的索引是緩沖區(qū)[(y*width)+x]。<prelisting-type="program-listing"><![CDATA[  MakelmageFromElements  publicvoidMakeImageFromElements(int[]widths,  int[]heights,  byte[][]buffers,  intanX,  intaY,  intaWidth,  intaHeight,  java.awt.ComponentaComponent)]]></pre>基于9個(gè)單元(N、E、W、S、NW、NE、SW、SE、C)構(gòu)造一個(gè)圖像并且在與組件aComponent相關(guān)聯(lián)的窗口上繪制它,讓它的左上角在(anX,aY)處而且具有尺寸aWidthxaHeight。該圖像緩沖區(qū)作為一個(gè)二維數(shù)組被傳遞,一維給定圖像數(shù)字(對(duì)應(yīng)于N、E、W、S、NW、NE、SW、SE、C的0-8)而且另一維包含數(shù)據(jù)。以數(shù)組寬度和高度給出每個(gè)緩沖區(qū)的寬度和高度。DownloadLookDirpublicjava.lang.StringDownloadLookDir()從MPEG流中下載一個(gè)“外觀”目錄。返回一個(gè)包含有關(guān)每個(gè)能夠被下載的外觀圖像組的信息的字符串,該字符串由換行符分隔。一個(gè)標(biāo)題的行號(hào)(0到n-1)對(duì)應(yīng)于函數(shù)DownLoadLookImages(intImageSet)使用的標(biāo)識(shí)符(ImageSet)。目錄實(shí)際上是包含被返回的字符串的一個(gè)簡(jiǎn)單文本文件。該文件路徑在源文件中被硬編碼-當(dāng)前是/home/users/mstoddar/mhplus/util/looks/images.dir。這能夠被適當(dāng)?shù)馗淖?。這因此能在解碼器中使用,以自動(dòng)地從MPEG流中下載。該文件的格式為&lt;ImageSetTitle1&gt;&lt;\t&gt;&lt;ImageSetDeseription&gt;&lt;\t&gt;&lt;URLResource&gt;&lt;\t&gt;&lt;URLPreview&gt;&lt;\n&gt;&lt;ImageSetTitle2&gt;&lt;\t&gt;&lt;ImageSetDescription&gt;&lt;\t&gt;&lt;URLResource&gt;&lt;\t&gt;&lt;URLPreview&gt;&lt;\n&gt;&lt;ImageSetTitle3&gt;&lt;\t&gt;&lt;ImageSetDescription&gt;&lt;\t&gt;&lt;URLResource&gt;&lt;\t&gt;&lt;URLPreview&gt;&lt;\n&gt;&lt;ImageSetTitle4&gt;&lt;\t&gt;&lt;ImageSetDescription&gt;&lt;\t&gt;&lt;URLResource&gt;&lt;\t&gt;&lt;URLPreview&gt;&lt;\n&gt;如果不成功的話則返回“”。DownloadLookImagespublicvoidDownloadLookImages(intImageSet)從MPEG流下載一個(gè)新的圖像組,由在DownLoadLookDir()中返回的一個(gè)條目中的行號(hào)標(biāo)識(shí),并且把它們歸屬于這個(gè)外觀。該文件包含以以下格式的數(shù)據(jù)WWWWHHHHWWWWHHHH…一系列四字節(jié)字符串(有引導(dǎo)空格)包含所有94個(gè)圖像的寬度和高度的十進(jìn)制數(shù)值(和在方法LoadImage()中的次序相同)。用于每個(gè)圖像的數(shù)據(jù)緩沖區(qū)再次與LoadImage()的格式相同。在圖像之間不進(jìn)行調(diào)準(zhǔn),下一個(gè)圖像的開(kāi)始從接著前一個(gè)圖像的字節(jié)開(kāi)始。該文件路徑在源文件中被硬編碼-當(dāng)前是/home/users/mstoddar/mhplus/util/looks/Images.&lt;ImageSet&gt;。這能夠被適當(dāng)?shù)馗淖?。這因此能在解碼器中使用,以自動(dòng)地從MPEG流中下載。publicvoidDownloadLookImages(stringImageURL)從該MPEG流中下載一個(gè)新的圖像組,其有指定的URL標(biāo)識(shí),而且把它們歸屬于這個(gè)外觀。該文件以上面給定的格式包含數(shù)據(jù)。為了清楚起見(jiàn),在下面給出的文件結(jié)構(gòu)以C語(yǔ)言的語(yǔ)法格式<prelisting-type="program-listing"><![CDATA[  Card8relnoNWwidth[4]Stringrepresentationofdecimalvalue(leading  spaces)  Card8relnoNWheight[4]  Card8relnoSWwidth[4]  Card8relnoSWheight(4]  Card8relnoNEwidth[4]  Card8relnoNEheight[4]  Card8reinoSEwidth[4]Card8relnoSEheight[4]  Card8relnoNwidth[4]  Card8relnoNheight[4]  Card8relnoWwidth[4]  Card8relnoWheight[4]  Card8relnoEwidth[4]  Card8relnoEheight[4]  Card8relnoSwith[4]  Card8relnoSheight[4]  Card8relnoCwidth[4]  Card8relnoCheight[4]  Card8relfoNWwidth[4]  Card8relfoNWheight[4]  Card8relfoSWwidth[4]  Card8relfoSWheight[4]  Card8relfoNEwidth[4]  Card8relfoNEheight[4]  Card8relfoSEwidth[4]  Card8relfoSEheight[4]  Card8relfoNwidth[4]  Card8relfoNheight[4]  Card8relfoWwidth[4]  Card8relfoWheight[4]  Card8relfoEwidth[4]  Card8relfoEheight[4]  Card8relfoSwidth[4]  Card8relfoSheight[4]  Card8relfoCwidth[4]  Card8relfoCheight[4]  Card8relhiNWwidth[4]  Card8relhiNWheight[4]  Card8relhiSWwidth[4]  Card8relhiSWheight[4]  Card8relhiNEwidth[4]  Card8relhiNEheight[4]  Card8relhiSEwidth[4]  Card8relhiSEheight[4]  Card8relhiNwidth[4]  Card8relhiNheight[4]  Card8relhiWwidth[4]  Card8relhiWheight[4]  Card8relhiEwidth[4]  Card8relhiEheight[4]  Card8relhiSwidth[4]  Card8relhiSheight[4]  Card8relhiCwidth[4]  Card8relhiCheight[4]  Card8relfhNWwidth[4]  Card8relfhNWheight[4]  Card8relfhSWwidth[4]  Card8relfhSWheight[4]Card8relfhNEwidth[d]  Card8relfhNEheight[4]  Card8relfhSEwidth[4]  Card8relfhSEheight[4]  Card8relfhNwidth[4]  Card8relfhNheight[4]  Card8relfhWwidth[4]  Card8relfhWheight[4]  Card8relfhEwidth[4]  Card8relfhEheight[4]  Card8relfhSwidth[4]  Card8relfhSheight[4]  Card8relfhCwidth[4]  Card8relfhCheight[4]  Card8butnoNWwidth[4]  Card8butnoNWheight[4]  Card8butnoSWwidth[4]  Card8butnoSWheight[4]  Card8butnoNEwidth[4]  Card8butnoNEheight[4]  Card8butnoSEwidth[4]  Card8butnoSEheight[4]  Card8butnoNwidth[4]  Card8butnoNheight[4]  Card8butnoWwidth[4]  Card8butnoWheight[4]  Card8butnoEwidth[4]  Card8butnoEheight[4]  Card8butnoSwidth[4]  Card8butnoSheight[4]  Card8butnoCwidth[4]  Card8butnoCheight[4]  Card8butfoNWwidth[4]  Card8butfoNWheight[4]  Card8butfoSwwidth[4]  Card8butfoSWheight[4]  Card8butfoNEwidth[4]  Card8butfoNEheight[4]  Card8butfoSEwidth[4]  Card8butfoSEheight[4]  Card8butfoNwidth[4]  Card8butfoNheight[4]  Card8butfoWwidth[4]  Card8butfoWheight[4]  Card8butfoEwidth[4]  Card8butfoEheight[4]  Card8butfoSwidth[4]  Card8butfoSheight[4]  Card8butfoCwidth[4]  Card8butfoCheight[4]  Card8buthiNWwidth[4]Card8buthiNWheight[4]  Card8buthiSWwidth[4]  Card8buthiSWheight[4]  Card8buthiNEwidth[4]  Card8buthiNEheight[4]  Card8buthiSEwidth[4]  Card8buthiSEheight[4]  Card8buthiNwidth[4]  Card8buthiNheight[4]  Card8buthiWwidth[4]  Card8buthiWheight[4]  Card8buthiEwidth[4]  Card8buthiEheight[4]  Card8buthiSwidth[4]  Card8buthiSheight[4]  Card8buthiCwidth[4]  Card8buthiCheight[4]  Card8butfhNWwidth[4]  Card8butfhNWheight[4]  Card8butfhSWwidth[4]  Card8burfhSWheight[4]  Card8butfhNEwidth[4]  Card8butfhNEheight[4]  Card8butfhSEwidth[4]  Card8butfhSEheight[4]  Card8butfhNwidth[4]  Card8butfhNheight[4]  Card8butfhWwidth[4]  Card8butfhWheight[4]  Card8butfhEwidth[4]  Card8butfhEheight[4]  Card8butfhSwidth[4]  Card8butfhSheight[4]  Card8butfhCwidth[4]  Card8butfhCheight[4]  Card8choicewidth[4]  Card8choiceheight[4]  Card8chck1nowidth[4]  Card8chckinoheight[4]  Card8chck1sewidth[4]  Card8chck1seheight[4]  Card8chck1fowidth[4]  Card8chck1foheight[4]  Card8chck1fswidth[4]  Card8chcklfsheight[4]  Card8chck2nowidth[4]  Card8chck2noheight[4]  Card8chck2sewidth[4]  Card8chck2seheight[4]  Card8chck2fowidth[4]  Card8chck2foheight[4]Card8chck2fswidth[4]  Card8chck2faheight[4]  Card8slidNeVrwidth[4]  Card8slidNeVrheight[4]  Card8slidEVrwidth[4]  Card8slidEVrheight[4]  Card8slidSeVrwidth[4]  Card8slidSeVrheight[4]  Card8slidSwHrwidth[4]  Card8slidSwHrheight[4]  Card8slidSHrwidth[4]  Card8slidSHrheight[4]  Card8slidSeHrwidth[4]  Card8slidSeHrheight[4]  Card8slidSeVrHrwidth[4]  Card8slidSeVrHrheight[4]  Card8slidLiftNeVrwidth[4]  Card8slidLiftNeVrheight[4]  Card8slidLiftEVrwidth[4]  Card8slidLiftEVrheight[4]  Card8slidLiftSeVrwidth[4]  Card8slidLiftSeVrheight[4]  Card8slidLiftSwHrwidth[4]  Card8slidLiftSwHrheight[4]  Card8slidLiftSHrwidth[4]  Card8slidLiftSHrheight[4]  Card8slidLiftSeHrwidth[4]  Card8slidLiftSeHrheight[4]  Card8RelnoNWbuffer[width×height]  Card8RelnoSWbuffer[width×height]  Card8RelnoNEbuffer[width×height]  Card8RelnoSEbuffer[width×height]  Card8RelnoNbuffer[width×height]  Card8RelnoWbuffer[width×height]  Card8RelnoEbuffer[width×height]  Card8RelnoSbuffer[width×height]  Card8RelnoCbuffer[width×height]  Card8RelfoNWbuffer[width×height]  Card8RelfoSWbuffer[width×height]  Card8RelfoNEbuffer[width×height]  Card8ReltoSEbuffer[width×height]  Card8RelfoNbuffer[width×height]  Card8Relfowbuffer[width×height]  Card8RelfoEbuffer[width×height]  Card8RelfoSbuffer[width×height]  Card8RelfoCbuffer[width×height]  Card8RelhiNWbuffer[width×height]  Card8RelhiSWbuffer[width×height]  Card8RelhiNEbuffer[width×height]  Card8RelhiSEbuffer[width×height]Card8RelhiNbuffer[width×height]  Card8RelhiWbuffer[width×height]  Card8RelhiEbuffer[width×height]  Card8RelhiSbuffer[width×height]  Card8RelhiCbuffer[width×height]  Card8RelfhNWbuffer[width×height]  Card8RelfhSWbuffer[width×height]  Card8RelfhNEbuffer[width×height]  Card8RelfhSEbuffer[width×height]  Card8RelfhNbuffer[width×height]  Card8RelfhWbuffer[width×height]  Card8RelfhEbuffer[width×height]  Card8RelfhSbuffer[width×height]  Card8RelfhCbuffer[width×height]  Card8ButnoNWbuffer[width×height]  Card8ButnoSWbuffer[width×height]  Card8ButnoNEbuffer[width×height]  Card8ButnoSEbuffer[width×height]  Card8ButnoNbuffer[width×height]  Card8ButnoWbuffer[width×height])  Card8ButnoEbuffer[width×height]  Card8ButnoSbuffer[width×height]  Card8ButnoCbuffer[width×height]  Card8ButfoNWbuffer[width×height]  Card8ButfoSWbuffer[width×height]  Card8ButfoNEbuffer[width×height]  Card8ButfoSEbuffer[width×height]  Card8ButfoNbuffer[width×height]  Card8ButfoWbuffer[width×height]  Card8ButfoEbuffer[width×height]  Card8ButfoSbuffer[width×height]  Card8ButfoCbuffer[width×height]  Card8ButhiNWbuffer[width×height]  Card8ButhiSWbuffer[width×height]  Card8ButhiNEbuffer[width×height]  Card8ButhiSEbuffer[width×height]  Card8ButhiNbuffer[width×height]  Card8ButhiWbuffer[width×height]  Card8ButhiEbuffer[width×height]  Card8ButhiSbuffer[width×height]  Card8ButhiCbuffer[width×height]  Card8ButfhNWbuffer[width×height]  Card8ButfhSWbuffer[width×height]  Card8ButfhNEbuffer[width×height]  Card8ButfhSEbuffer[width×height]  Card8ButfhNbuffer[width×height]  Card8ButfhWbuffer[width×height]  Card8ButfhEbuffer[width×height]  Card8ButfhSbuffer[width×height]  Card8ButfhCbuffer[width×height]  Card8Choicebuffer[width×height]Card8chck1nobuffer[width×height]  Card8chck1sebuffer[width×height]  Card8chck1fobuffer[width×height]  Card8chck1fsbuffer[width×height]  Card8chck2nobuffer[width×height]  Card8chck2sebuffer[width×height]  Card8chck2fobuffer[width×height]  Card8chck2fsbuffer[width×height]  Card8slidNeVrbuffer[width×height]  Card8slidEVrbuffer[width×height]  Card8slidSeVrbuffer[width×height]  Card8slidSwHrbuffer[widch×height]  Card8slidSHrbuffer[width×height]  Card8s1idSeHrbuffer[width×height]  Card8slidseVrHrbuffer[width×height]  Card8slidLiftNeVrbuffer[width×height]  Card8s1idLiftEVrbuffer[width×height]  Card8slidLiftSeVrbuffer[width×height]  Card8slidLiftSwHrbuffer[width×height]  Card8slidLiEtSHrbuffer[width×height]  Card8slidLiftSeHrbuffer[width×height]]]></pre>例如寬高寬高0000000888800000208888000004088880000060888800001008888000012088880000140888800001608888000020088110000220888800002408888000026088880000300888800003201188000034088880000360888800004008888000042088110000440888800004608888000050088880000520888800005401188000056088880000600888800006208888000064088110000660888800007008888000072088880000740888800007601188000100088880001020888800010408888000106088110001100161616160001120161616160001140161616160001160161616160001200161688000122088880001240888800012608811000130022220001320222200013402222緩沖區(qū)1數(shù)據(jù)的開(kāi)始(relnoNW)(8×8字節(jié))0001360\0\0\0\0\0266004004\0\0\0266\n\r\r\r0001400\0\0\n\r017\r\v001\0266\r017\r0010010010001420\0\n017\r001001001001265\r\r0010010010010010001440004\r\v001001001001001004\v001001001001001006緩沖區(qū)2數(shù)據(jù)的開(kāi)始(relnoSW)(8×8字節(jié))0001460004004263\0\0\0\0\0\r\r\v004\a\0\0\00001500001001001270004262\0\0001001001001\n004004\00001520001001001001001\n\a\0001001001001001270\L2650001540001001001001001270\t\a006001001001001270\C006緩沖區(qū)3數(shù)據(jù)的開(kāi)始(relnoNE)(8×8字節(jié))0001560004\v001001001001001006\b0010010010010010010010001600006\n001001001001001001\0265\n0010010010010010001620\0006\t\rL001001001001\0\0261\t\n\n\n\n0001640\0\0\0006022265265\t\0\0\0\0\0\a006006緩沖區(qū)4數(shù)據(jù)的開(kāi)始(relnoSE)(8×8字節(jié))0001660\r001001001001270\t006001001001001001270\t0060001700001001001001001\n265261001001001001\n266261\00001720001001001\n266\b261\0270270004266\b261\0\00001740\t\t\b261261\0\0\0006006261\0\0\0\0\0等。reDrawAllpublicvoidreDrawAll()查找具有焦點(diǎn)的窗口小部件,然后查找其母體直到?jīng)]有為止。頂端窗口然后設(shè)置為看不見(jiàn)并且再次設(shè)置為可見(jiàn)。然后整個(gè)窗口將被重新繪制。上面描述的用于一個(gè)或多個(gè)圖形對(duì)象、用于在多個(gè)這樣的對(duì)象之間導(dǎo)航,或者用于從用戶接收輸入的各種方法可以同樣地被應(yīng)用于其他區(qū)域,這些區(qū)域主要是,然而并非僅僅是,在從一個(gè)廣播供應(yīng)商接收廣播的環(huán)境中。通常,一個(gè)涉及與一個(gè)用戶可視地相互作用的機(jī)頂盒的任何功能都可以使用這樣的方法。例如,一個(gè)可能具有附加子鏈的、可導(dǎo)航的圖標(biāo)鏈能夠在一個(gè)家庭購(gòu)物應(yīng)用程序中使用,以允許該用戶顯示物品、查看價(jià)格、訂貨及其他,與該應(yīng)用程序相互作用。用于定貨的圖形對(duì)象可以,當(dāng)突出顯示時(shí),以上面描述的方式在購(gòu)買符號(hào)(例如,一個(gè)美元符號(hào),$)和表示迄今花費(fèi)的數(shù)量的文本、或者以該訂戶語(yǔ)言的單詞“購(gòu)買”之間自動(dòng)地‘翻轉(zhuǎn)’。做為選擇或者另外,每當(dāng)選擇該‘購(gòu)買’圖標(biāo)時(shí),能夠顯現(xiàn)一個(gè)包含以該訂戶語(yǔ)言的單詞‘購(gòu)買’的圖形對(duì)象,并且提供一個(gè)用于讓任何子鏈‘懸掛’的轉(zhuǎn)移。在上述示例中的‘購(gòu)買’圖標(biāo)可以緊接著一個(gè)當(dāng)點(diǎn)擊時(shí)查看迄今為止進(jìn)行的購(gòu)買列表的圖標(biāo)放置,或者緊接著另一個(gè)當(dāng)點(diǎn)擊時(shí)設(shè)置用于剛剛購(gòu)買的產(chǎn)品的交貨選擇的圖標(biāo)放置,以便在用戶能夠?qū)Ш降逆溨刑峁┮粋€(gè)邏輯次序的圖標(biāo)。當(dāng)選擇了‘購(gòu)買’圖標(biāo)時(shí),能夠顯現(xiàn)一個(gè)具有各種輔助選項(xiàng)的子鏈,其在更昂貴物品的情況下可以包含不同的信貸計(jì)劃。任何需要來(lái)自該用戶的文本信息,諸如交貨的街道地址,能夠利用該虛擬鍵盤輸入。在一個(gè)電子節(jié)目指南中,能夠使用類似的方法,用于交互式地瀏覽并且顯示不同的頻道、主題以及時(shí)間和日期。依據(jù)該用戶的首選項(xiàng)重新布置在該鏈中的圖形選項(xiàng)的進(jìn)一步定制化是可能的;在一個(gè)頻道鏈表的情況下,用戶的偏愛(ài)頻道能夠被組合在該鏈的頭部。這樣的一個(gè)參數(shù)選擇能夠由該用戶指示,或者由該節(jié)目推導(dǎo)出。用于如上所述方法的其他應(yīng)用程序包含在線目錄表、按請(qǐng)求提供的新聞和氣象服務(wù)、游戲、以及機(jī)頂盒的整體管理(管理它的配置,等)。在游戲的情況下,能夠使用頭尾翻滾效果以提供游戲中的活動(dòng)性而不必需要編寫附加的方法,而且該虛擬鍵盤能夠被用作用于更高級(jí)類型游戲的控制器的一種代替方式。同時(shí)將要理解所有如在這里描述的那樣,使用一個(gè)遙控裝置交互作用的方法,可以通過(guò)利用一個(gè)鼠標(biāo)(或者其他指向控制器、諸如一個(gè)滾球或者操縱桿)和/或鍵盤(或者其他具有多個(gè)鍵的設(shè)備)來(lái)模擬一個(gè)遙控裝置的按鈕(例如使用在鍵盤上的數(shù)字0-9;箭頭鍵和返回鍵)或者直接地進(jìn)行(例如使用該鼠標(biāo)點(diǎn)擊按鈕,以及鍵盤來(lái)直接輸入文本而不是使用該虛擬鍵盤)來(lái)代替或者補(bǔ)充。如上所述的虛擬鍵盤,例如,可以在任何具有多個(gè)鍵的設(shè)備,諸如一個(gè)游戲機(jī)或者一個(gè)移動(dòng)電話上實(shí)現(xiàn)。在后者的情況下,該虛擬鍵盤能夠如描述的那樣充分地顯示在電話的屏幕上(在具有一個(gè)足夠大顯示屏的電話上),或者以一個(gè)壓縮形式(在具有較小顯示屏的電話上)顯示。該虛擬鍵盤的這種壓縮可能要求一次僅僅顯示字符的一個(gè)數(shù)字塊,其更可取地是具有一個(gè)可以通過(guò)按壓向左、向右、向上和/或向下鍵(或者它們的等效體,例如在滾動(dòng)類型的指向控制器情況下)來(lái)訪問(wèn)的字符建議或者字符類型。該壓縮的虛擬鍵盤可以在其他應(yīng)用程序中使用,尤其是在只有少量的可用空間來(lái)顯示該鍵盤的地方。術(shù)語(yǔ)“校驗(yàn)框”可以涉及一個(gè)任何形狀的圖形對(duì)象,例如圓盤,其能夠顯示不同的狀態(tài),更可取地是對(duì)應(yīng)于‘選中’和‘未選中’的兩個(gè)狀態(tài),但是有可能多于兩種狀態(tài),而且當(dāng)由該用戶點(diǎn)擊或者選擇時(shí),其可以以一種一致的方式改變它的狀態(tài)?!x中’狀態(tài)可以由在該方框上的點(diǎn)、交叉或者其他裝飾來(lái)指示。便于參考,下面列出的、在這里使用的術(shù)語(yǔ)具有以下的最佳意思HTML超文本標(biāo)志語(yǔ)言,一種描述在國(guó)際互鏈網(wǎng)上互換的文檔的語(yǔ)言。該文檔可以包含到站點(diǎn)的引用,格式化信息,聲音和圖片,等。HTTP超文本傳輸協(xié)議,一種用于在保持HTML文檔和一個(gè)顯示該HTML文檔的導(dǎo)航應(yīng)用程序的Internet服務(wù)器之間進(jìn)行通信的協(xié)議。MPEG-2動(dòng)畫專家小組,一種實(shí)時(shí)編碼動(dòng)畫圖像和聲音的方法。PPP點(diǎn)到點(diǎn)協(xié)議,一種允許兩個(gè)計(jì)算機(jī)經(jīng)由一個(gè)調(diào)制解調(diào)器聯(lián)網(wǎng)的遠(yuǎn)程訪問(wèn)通信協(xié)議。PROXYSERVER一個(gè)位于該服務(wù)器上、允許安全的Internet聯(lián)接的應(yīng)用程序,而且它還緩存HTTP和FTP請(qǐng)求。SESSION在時(shí)間中一個(gè)給定點(diǎn)處,在存儲(chǔ)器中的一種類型鏈接或者一個(gè)應(yīng)用程序的一個(gè)實(shí)例。URL統(tǒng)一資源定位,一個(gè)用于在Internet上定位一個(gè)文件或者資源的地址。到一個(gè)站點(diǎn)的鏈接,指定包含在該網(wǎng)頁(yè)中的資源的地址。WWW萬(wàn)維網(wǎng),使用本地或者遠(yuǎn)程文檔的Internet網(wǎng)絡(luò)。一個(gè)網(wǎng)絡(luò)文檔是一個(gè)網(wǎng)頁(yè),而且在該頁(yè)中的鏈接允許在不同的頁(yè)之間和在不同的主題之間導(dǎo)航,而不管它是否位于一個(gè)本地或者遠(yuǎn)程網(wǎng)絡(luò)上。GUI圖形用戶界面。WGT窗口小部件工具包。應(yīng)當(dāng)理解在上面已經(jīng)僅僅通過(guò)示例對(duì)本發(fā)明進(jìn)行了描述,能夠在本發(fā)明的范圍內(nèi)對(duì)細(xì)節(jié)做出修改。在該描述中公開(kāi)的每個(gè)特征,以及(在適當(dāng)處)的權(quán)利要求和附圖可獨(dú)立地提供或者以任何適當(dāng)組合的形式提供。在任何或者所有的上述中,本發(fā)明的某些特征已經(jīng)使用計(jì)算機(jī)軟件實(shí)現(xiàn)了。然而,本領(lǐng)域的技術(shù)人員當(dāng)然理解任何這些特征可以使用硬件或者硬件和軟件的組合來(lái)實(shí)現(xiàn)。此外,容易理解由硬件、計(jì)算機(jī)軟件、等等執(zhí)行的函數(shù)在電和類似信號(hào)上或者使用電和類似信號(hào)執(zhí)行。涉及信息存儲(chǔ)的特征可以由適當(dāng)?shù)拇鎯?chǔ)單元或者存儲(chǔ)器實(shí)現(xiàn)。涉及信息處理的特征可以由一個(gè)適當(dāng)?shù)奶幚砥骰蛘呖刂蒲b置,以軟件或者以硬件或者以兩者的組合方式實(shí)現(xiàn)。在任何或者所有上述中,本發(fā)明可以在任何、某些或者所有以下形式中體現(xiàn)它可以在一種操作一種計(jì)算機(jī)系統(tǒng)的方法中體現(xiàn);它可以在計(jì)算機(jī)系統(tǒng)本身中體現(xiàn);它可以在當(dāng)一個(gè)計(jì)算機(jī)系統(tǒng)被編程或者修改或者安排來(lái)執(zhí)行操作那個(gè)系統(tǒng)的方法時(shí),在該計(jì)算機(jī)系統(tǒng)中體現(xiàn);和/或它可以在一個(gè)其中記錄了一個(gè)程序的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中體現(xiàn),其中該程序適于依據(jù)操作該系統(tǒng)的方法進(jìn)行操作。如在這里一直使用的那樣,術(shù)語(yǔ)“計(jì)算機(jī)系統(tǒng)”可以與“計(jì)算機(jī)”、“系統(tǒng)”、“設(shè)備”、“裝置”、“機(jī)械”和類似術(shù)語(yǔ)互換使用。在該權(quán)利要求中出現(xiàn)的參考數(shù)字僅僅用于說(shuō)明,而且應(yīng)當(dāng)不具有在該權(quán)利要求范圍上的限制作用。申請(qǐng)者因此聲明,為了避免引起爭(zhēng)議,他申請(qǐng)?jiān)诟綀D中的版權(quán)。權(quán)利要求1.一種在一個(gè)圖形用戶界面中控制一個(gè)圖形對(duì)象外觀的方法,包含定義一個(gè)外觀對(duì)象;以及將該外觀對(duì)象與該圖形對(duì)象關(guān)聯(lián)。2.如權(quán)利要求1所述的方法,其特征在于該外觀對(duì)象包含確定如何顯示該圖形對(duì)象的代碼或者參數(shù)。3.如權(quán)利要求1或2所述的方法,其特征在于該外觀對(duì)象由面向?qū)ο蟮某绦虼a定義。4.如先前權(quán)利要求中任何一個(gè)所述的方法,其特征在于該外觀對(duì)象可以通過(guò)實(shí)例化一個(gè)外觀對(duì)象類來(lái)定義。5.如權(quán)利要求4所述的方法,其特征在于該外觀對(duì)象可以包含一個(gè)指向另一個(gè)外觀對(duì)象類的指針。6.如先前任一權(quán)利要求所述的方法,其特征在于該圖形對(duì)象包含一個(gè)標(biāo)識(shí)與該圖形對(duì)象相關(guān)聯(lián)的外觀對(duì)象的屬性。7.如先前任一權(quán)利要求所述的方法,進(jìn)一步包含通過(guò)重新定義或者修改該外觀對(duì)象或者通過(guò)把該圖形對(duì)象與一個(gè)不同的外觀對(duì)象相關(guān)聯(lián),來(lái)修改該圖形對(duì)象的外觀。8.如先前任一權(quán)利要求所述的方法,其特征在于該外觀對(duì)象可以包含一個(gè)更新計(jì)數(shù)器,當(dāng)該外觀對(duì)象被重新定義或者修改了時(shí),就更新該計(jì)數(shù)器的值。9.如先前任一權(quán)利要求所述的方法,其特征在于該外觀對(duì)象包含一個(gè)驗(yàn)證掩碼,其指示能夠由該外觀對(duì)象調(diào)用的方法。10.如先前任何一個(gè)權(quán)利要求所述的方法,是一種用于在一個(gè)圖形用戶界面中控制多個(gè)圖形對(duì)象的外觀的方法,包含將該外觀對(duì)象與多個(gè)圖形對(duì)象相關(guān)聯(lián)。11.如權(quán)利要求10所述的方法,其特征在于該多個(gè)圖形對(duì)象包含一個(gè)鏈接鏈。12.如先前任一權(quán)利要求所述的方法,其特征在于該外觀對(duì)象包含一個(gè)計(jì)數(shù)器,其指示與那個(gè)外觀對(duì)象相關(guān)聯(lián)的圖形對(duì)象的數(shù)目。13.一種在一個(gè)圖形用戶界面中定義一個(gè)圖形對(duì)象的方法,包含提供一個(gè)控制該圖形對(duì)象外觀的外觀對(duì)象;以及提供一個(gè)控制該圖形對(duì)象操作的窗口小部件對(duì)象。14.如先前權(quán)利要求中任何一個(gè)所述的方法,進(jìn)一步包含顯示該圖形對(duì)象。15.如先前任一權(quán)利要求所述的方法,包含定義一組可顯示的圖形對(duì)象并且將一個(gè)外觀對(duì)象與該組圖形對(duì)象相關(guān)聯(lián)。16.一種控制一組圖形對(duì)象外觀的方法,該方法包含提供用于定義多組不同的可顯示圖形對(duì)象以及用于從該多個(gè)可顯示組中選擇一組圖形對(duì)象的裝置的步驟。17.一種控制一組圖形對(duì)象外觀的方法,該方法包含定義一組可顯示的圖形對(duì)象。18.如權(quán)利要求15到17中任何一個(gè)所述的方法,其特征在于來(lái)自于一組中的圖形對(duì)象表現(xiàn)不同于另一組中圖形對(duì)象的表現(xiàn),例如在顏色、形狀、尺寸、紋理或者模式一個(gè)或多個(gè)方面。19.如權(quán)利要求15到18中任何一個(gè)所述的方法,其特征在于該組圖形對(duì)象包含用于顯示圖形對(duì)象的一個(gè)鏈接鏈的單元。20.如權(quán)利要求15到19中任何一個(gè)所述的方法,其特征在于該組圖形對(duì)象包含靜態(tài)對(duì)象以及活動(dòng)對(duì)象。21.一種在一個(gè)圖形用戶界面中控制一個(gè)圖形對(duì)象外觀的方法,該方法包含定義該圖形對(duì)象的多個(gè)圖形對(duì)象單元用于顯示該圖形對(duì)象的一個(gè)表現(xiàn)。22.如權(quán)利要求21所述的方法,其特征在于該方法包含定義多組不同的圖形對(duì)象的圖形對(duì)象單元。23.如權(quán)利要求21或者22所述的方法,包含定義一組固定單元以及一組可重復(fù)的單元。24.一種為一個(gè)圖形對(duì)象產(chǎn)生一套單元的方法,該方法包含定義一組為該圖形對(duì)象的實(shí)例所共用的固定單元,以及進(jìn)一步定義一組可重復(fù)的單元。25.一種在一個(gè)圖形用戶界面中顯示一個(gè)圖形對(duì)象表現(xiàn)的方法,該方法包含組合多個(gè)圖形對(duì)象單元。26.如權(quán)利要求25所述的方法,包含顯示一組固定單元以及顯示多個(gè)可重復(fù)單元。27.一種在一個(gè)GUI中控制一個(gè)圖形對(duì)象外觀的方法,該方法包含定義一個(gè)圖形對(duì)象的第一個(gè)可顯示的表現(xiàn),以及進(jìn)一步定義該圖形對(duì)象的第二個(gè)可顯示的表現(xiàn),其中第二表現(xiàn)可與第一個(gè)表現(xiàn)相鄰顯示。28.如權(quán)利要求27所述的方法,其特征在于第一個(gè)表現(xiàn)包含一個(gè)圖標(biāo)。29.如權(quán)利要求27或者28所述的方法,其特征在于第二表現(xiàn)包含該圖形對(duì)象的一個(gè)文本描述。30.如權(quán)利要求27到29中任何一個(gè)所述的方法,其特征在于第二表現(xiàn)可有選擇地顯示,而且最好是通過(guò)聚焦在第一個(gè)表現(xiàn)上顯示。31.如權(quán)利要求27到30中任何一個(gè)所述的方法,其特征在于該方法包含定義圖形對(duì)象的一個(gè)鏈接鏈,且第一個(gè)以及第二個(gè)表現(xiàn)作為該鏈的鏈接是可顯示的。32.如權(quán)利要求27到31中任何一個(gè)所述的方法,包含定義一個(gè)用于鏈接第一個(gè)表現(xiàn)和第二個(gè)表現(xiàn)的鏈接單元。33.如權(quán)利要求27到31中任何一個(gè)所述的方法,包含將一個(gè)外觀對(duì)象與第一個(gè)表現(xiàn)、第二個(gè)表現(xiàn)、以及最好是該鏈接單元相關(guān)聯(lián)。34.一種顯示一個(gè)圖形對(duì)象的方法,該方法包含顯示該圖形對(duì)象的第一個(gè)表現(xiàn),顯示該圖形對(duì)象的第二個(gè)表現(xiàn),以及顯示一個(gè)鏈接第一個(gè)表現(xiàn)和第二個(gè)表現(xiàn)的鏈接單元。35.一種在一個(gè)圖形用戶界面中控制一個(gè)圖形對(duì)象外觀的方法,該方法包含定義一個(gè)圖形對(duì)象的鏈接鏈。36.一種在一個(gè)圖形用戶界面中控制一個(gè)圖形對(duì)象外觀的方法,該方法包含定義第一個(gè)圖形對(duì)象,定義第二個(gè)圖形對(duì)象以及定義一個(gè)用于鏈接圖形對(duì)象的鏈接單元。37.如權(quán)利要求35或者36所述的方法,其特征在于該方法進(jìn)一步包含定義一個(gè)圖形對(duì)象子鏈,該子鏈包含來(lái)自一個(gè)鏈接鏈的分支,更可取地是該子鏈?zhǔn)怯羞x擇地可顯示的。38.一種在一個(gè)圖形用戶界面中顯示一個(gè)圖形對(duì)象表現(xiàn)的方法,該方法包含顯示圖形對(duì)象的表現(xiàn),以及顯示一個(gè)用于說(shuō)明在圖形對(duì)象之間的鏈接的鏈接單元的表現(xiàn)。39.如權(quán)利要求38所述的方法,其特征在于該鏈接單元的表現(xiàn)在圖形對(duì)象的表現(xiàn)之間延伸,而且更可取地是該方法包含顯示圖形對(duì)象表現(xiàn)的一個(gè)鏈接鏈。40.一種在一個(gè)GUI中控制一個(gè)圖形對(duì)象外觀的方法,該方法包含定義該圖形對(duì)象的第一個(gè)表現(xiàn)以及該圖形對(duì)象的第二個(gè)表現(xiàn),第一個(gè)和第二個(gè)表現(xiàn)可有選擇地顯示,更可取地是可循環(huán)顯示。41.如權(quán)利要求40所述的方法,其特征在于第一個(gè)表現(xiàn)包含一個(gè)圖標(biāo),和/或第二個(gè)表現(xiàn)包含該圖形對(duì)象的一個(gè)文本描述。42.一種在一個(gè)GUI中顯示一個(gè)圖形對(duì)象表現(xiàn)的方法,該方法包含顯示該圖形對(duì)象的第一個(gè)表現(xiàn),以及隨后顯示該圖形對(duì)象的第二個(gè)表現(xiàn)。43.如權(quán)利要求42所述的方法,其特征在于該方法包含在第一個(gè)和第二個(gè)表現(xiàn)之間顯示一序列表現(xiàn)。44.如先前任一權(quán)利要求所述的方法,進(jìn)一步包含顯示該一個(gè)或者多個(gè)圖形對(duì)象。45.如權(quán)利要求1到44中任何一個(gè)所述的方法,由一個(gè)接收器/解碼器,最好是由一個(gè)數(shù)字或者模擬電視接收機(jī)/解碼器執(zhí)行,更可取地是供一個(gè)電視機(jī)使用,或者由一個(gè)移動(dòng)電話執(zhí)行。46.一種在一個(gè)圖形用戶界面中控制一個(gè)圖形對(duì)象外觀的裝置,包含用于定義一個(gè)外觀對(duì)象的裝置;以及用于將該外觀對(duì)象與該圖形對(duì)象關(guān)聯(lián)的裝置。47.用于控制一組圖形對(duì)象外觀的裝置,該裝置包含用于定義多組不同的可顯示圖形對(duì)象以及用于從該多個(gè)可顯示組中選擇一組圖形對(duì)象的裝置。48.用于控制一組圖形對(duì)象外觀的裝置,該裝置包含用于定義一組可顯示圖形對(duì)象的裝置。49.如權(quán)利要求47或者48所述的裝置,其特征在于該組圖形對(duì)象包含用于顯示圖形對(duì)象的一個(gè)鏈接鏈的單元,和/或該組圖形對(duì)象包含靜態(tài)對(duì)象以及活動(dòng)對(duì)象。50.用于在一個(gè)圖形用戶界面中控制一個(gè)圖形對(duì)象外觀的裝置,該裝置包含用于定義該圖形對(duì)象的多個(gè)圖形對(duì)象單元用以顯示該圖形對(duì)象的一個(gè)表現(xiàn)的裝置。51.一套用于在顯示一個(gè)圖形對(duì)象中使用的單元,包含一組為該圖形對(duì)象的實(shí)例所共用的固定單元以及一組可重復(fù)的單元。52.用于在一個(gè)圖形用戶界面中顯示一個(gè)圖形對(duì)象的一個(gè)表現(xiàn)的裝置,該裝置包含用于組合多個(gè)圖形對(duì)象單元的裝置。53.用于在一個(gè)GUI中控制一個(gè)圖形對(duì)象外觀的裝置,該裝置包含用于定義一個(gè)圖形對(duì)象的第一可顯示表現(xiàn)的裝置,和用于定義該圖形對(duì)象的第二個(gè)可顯示表現(xiàn)的裝置,以及用于緊鄰第一個(gè)表現(xiàn)顯示的第二個(gè)表現(xiàn)的裝置。54.如權(quán)利要求53所述的裝置,包含用于更可取地是當(dāng)檢測(cè)到在第一個(gè)表現(xiàn)上的一個(gè)焦點(diǎn)時(shí)有選擇地顯示第二個(gè)表現(xiàn)的裝置。55.用于顯示一個(gè)圖形對(duì)象的裝置,該裝置包含用于顯示該圖形對(duì)象的第一個(gè)表現(xiàn)的裝置、用于顯示該圖形對(duì)象的第二個(gè)表現(xiàn)的裝置、以及用于顯示一個(gè)鏈接第一個(gè)表現(xiàn)和第二個(gè)表現(xiàn)的鏈接單元的裝置。56.用于在一個(gè)圖形用戶界面中控制一個(gè)圖形對(duì)象外觀的裝置,該裝置包含用于定義圖形對(duì)象的一個(gè)鏈接鏈的裝置。57.用于在一個(gè)圖形用戶界面中控制一個(gè)圖形對(duì)象外觀的裝置,該裝置包含用于定義第一個(gè)圖形對(duì)象、定義第二個(gè)圖形對(duì)象以及定義一個(gè)用于鏈接圖形對(duì)象的鏈接單元的裝置。58.用于在一個(gè)圖形用戶界面中顯示圖形對(duì)象表現(xiàn)的裝置,該裝置包含用于顯示圖形對(duì)象的表現(xiàn)的裝置、以及用于顯示一個(gè)用以說(shuō)明在圖形對(duì)象之間的鏈接的鏈接單元的一個(gè)表現(xiàn)的裝置。59.用于在一個(gè)GUI中控制一個(gè)圖形對(duì)象外觀的裝置,該裝置包含用于定義該圖形對(duì)象的第一個(gè)表現(xiàn)及該圖形對(duì)象的第二個(gè)表現(xiàn)的裝置,以及包含用于有選擇地顯示第一個(gè)及第二個(gè)表現(xiàn)的裝置,以及更可取地是包含用于循環(huán)顯示第一個(gè)和第二個(gè)表現(xiàn)的裝置。60.用于在一個(gè)GUI中顯示一個(gè)圖形對(duì)象的一個(gè)表現(xiàn)的裝置,該裝置包含用于顯示該圖形對(duì)象的第一個(gè)表現(xiàn)的裝置,以及用于隨后顯示該圖形對(duì)象的第二個(gè)表現(xiàn)的裝置。61.如權(quán)利要求60所述的裝置,進(jìn)一步包含用于在顯示第一個(gè)和第二個(gè)表現(xiàn)之間顯示一序列表現(xiàn)的裝置。62.如權(quán)利要求46到61中任何一個(gè)所述的裝置,包含一個(gè)接收器/解碼器,更可取地是包含一個(gè)數(shù)字或者模擬電視接收機(jī)/解碼器,更可取地是供一個(gè)電視機(jī)使用,或者包含一個(gè)移動(dòng)電話。63.一個(gè)接收器/解碼器,包含如權(quán)利要求46到61中任何一個(gè)所述的裝置。64.一個(gè)電視系統(tǒng),包含一個(gè)如權(quán)利要求63所述的接收器/解碼器,以及一臺(tái)鏈接到或者可以鏈接到該接收器/解碼器的電視機(jī)。65.在一個(gè)圖形用戶界面中的一個(gè)對(duì)象包含控制該對(duì)象操作的一個(gè)窗口小部件類的一個(gè)實(shí)例;以及控制該對(duì)象外觀的外觀對(duì)象類的一個(gè)實(shí)例。66.如權(quán)利要求65所述用于創(chuàng)建對(duì)象的一個(gè)窗口小部件集合,該窗口小部件集合包含多個(gè)窗口小部件類以及一個(gè)或多個(gè)外觀對(duì)象類。67.在一個(gè)圖形用戶界面中的對(duì)象包含一組圖形對(duì)象,該組對(duì)象包含活動(dòng)對(duì)象和靜態(tài)對(duì)象,該圖形對(duì)象在一個(gè)鏈接鏈中。68.在一個(gè)圖形用戶界面中的一個(gè)對(duì)象包含一個(gè)圖形對(duì)象的第一個(gè)表現(xiàn)以及一個(gè)圖形對(duì)象的第二個(gè)表現(xiàn),以及一個(gè)鏈接第一個(gè)和第二個(gè)表現(xiàn)的鏈接單元。69.一個(gè)在一個(gè)圖形用戶界面中的對(duì)象包含圖形對(duì)象的一個(gè)鏈接鏈。70.一個(gè)在一個(gè)圖形用戶界面中的對(duì)象包含第一個(gè)圖形對(duì)象,第二個(gè)圖形對(duì)象以及一個(gè)鏈接第一個(gè)和第二個(gè)圖形對(duì)象的鏈接單元。71.一個(gè)如權(quán)利要求69或者70所述的對(duì)象,該方法進(jìn)一步包含一個(gè)圖形對(duì)象的子鏈,該子鏈包含來(lái)自于一個(gè)鏈接鏈的分支,更可取地是該子鏈可有選擇地顯示。72.一個(gè)在一個(gè)GUI中的對(duì)象,包含該圖形對(duì)象的第一個(gè)表現(xiàn)以及該圖形對(duì)象的第二個(gè)表現(xiàn),第一個(gè)和第二個(gè)表現(xiàn)可有選擇地顯示,更可取地是可循環(huán)地顯示。73.用于實(shí)現(xiàn)一個(gè)圖形用戶界面的一個(gè)應(yīng)用程序執(zhí)行設(shè)備,包含一個(gè)處理器、存儲(chǔ)器、和一個(gè)用于輸出一個(gè)信號(hào)到一個(gè)顯示器的輸出端口,該存儲(chǔ)器中已經(jīng)存儲(chǔ)有一段用于執(zhí)行如權(quán)利要求1到45中任何一個(gè)所述的方法、或者如權(quán)利要求65或者67到72所述的一個(gè)對(duì)象,或者如權(quán)利要求66所述的一個(gè)窗口小部件集合的程序。74.如前面任一權(quán)利要求所述的一種方法、裝置、設(shè)備、對(duì)象或者窗口小部件集合,其特征在于該外觀對(duì)象或者外觀對(duì)象類定義了一個(gè)圖形對(duì)象的至少一個(gè)以下屬性(如果給出的話)如何被顯示背景外觀;一個(gè)背景覆蓋;該前景外觀;一個(gè)前景覆蓋;凸起或者陰影的外觀;一個(gè)對(duì)象邊界的外觀;分配給該對(duì)象的任何焦點(diǎn)的顯示;分配給該對(duì)象的任何高亮顯示的顯示。75.一個(gè)計(jì)算機(jī)程序產(chǎn)品,包含用于執(zhí)行下列步驟的代碼定義一個(gè)外觀對(duì)象;以及將該外觀對(duì)象與該圖形對(duì)象關(guān)聯(lián)。76.一種用于在一個(gè)圖形用戶界面中定義一個(gè)圖形對(duì)象的計(jì)算機(jī)程序產(chǎn)品,包含用于提供一個(gè)控制該圖形對(duì)象外觀的外觀對(duì)象的代碼;以及用于提供一個(gè)控制該圖形對(duì)象操作的窗口小部件對(duì)象的代碼。77.一個(gè)在一種控制一組圖形對(duì)象外觀的方法中使用的計(jì)算機(jī)程序產(chǎn)品,包含用于定義多組不同的可顯示圖形對(duì)象以及用于從該多個(gè)可顯示組中選擇一組圖形對(duì)象的代碼。78.一種在一種控制一組圖形對(duì)象外觀的方法中使用的計(jì)算機(jī)程序產(chǎn)品,包含用于定義一組可顯示的圖形對(duì)象的代碼。79.一種在一個(gè)圖形用戶界面中控制一個(gè)圖形對(duì)象外觀的方法中使用的計(jì)算機(jī)程序產(chǎn)品,包含用于定義該圖形對(duì)象的多個(gè)圖形對(duì)象單元以顯示該圖形對(duì)象的一個(gè)表現(xiàn)的代碼。80.一種為一個(gè)圖形對(duì)象產(chǎn)生一套單元的方法中使用的計(jì)算機(jī)程序產(chǎn)品,包含用于定義一組為該圖形對(duì)象的實(shí)例所共用的固定單元以及用于定義一組可重復(fù)單元的代碼。81.一種在一個(gè)圖形用戶界面中顯示一個(gè)圖形對(duì)象的一個(gè)表現(xiàn)的方法中使用的計(jì)算機(jī)程序產(chǎn)品,包含用于組合多個(gè)圖形對(duì)象單元的代碼。82.一種在一個(gè)GUI中控制一個(gè)圖形對(duì)象外觀的方法中使用的計(jì)算機(jī)程序產(chǎn)品,包含用于定義一個(gè)圖形對(duì)象的第一個(gè)可顯示表現(xiàn)以及用于定義該圖形對(duì)象的第二個(gè)可顯示表現(xiàn)的代碼,以及用于顯示緊鄰第一個(gè)表現(xiàn)顯示第二個(gè)表現(xiàn)的代碼。83.一種在顯示一個(gè)圖形對(duì)象的方法中使用的計(jì)算機(jī)程序產(chǎn)品,包含用于顯示該圖形對(duì)象的第一個(gè)表現(xiàn)、顯示該圖形對(duì)象的第二個(gè)表現(xiàn)、以及顯示一個(gè)鏈接第一個(gè)表現(xiàn)和第二個(gè)表現(xiàn)的鏈接單元的代碼。84.一種在一個(gè)圖形用戶界面中控制一個(gè)圖形對(duì)象外觀的方法中使用的計(jì)算機(jī)程序產(chǎn)品,包含用于定義圖形對(duì)象的一個(gè)鏈接鏈的代碼。85.一種在一個(gè)圖形用戶界面中控制一個(gè)圖形對(duì)象外觀的方法中使用的計(jì)算機(jī)程序產(chǎn)品,包含用于定義第一個(gè)圖形對(duì)象、定義第二個(gè)圖形對(duì)象以及定義一個(gè)用于鏈接圖形對(duì)象的鏈接單元的代碼。86.一種在一個(gè)圖形用戶界面中顯示圖形對(duì)象的表現(xiàn)的方法中使用的計(jì)算機(jī)程序產(chǎn)品,包含用于顯示圖形對(duì)象的表現(xiàn)以及用于顯示一個(gè)用以說(shuō)明在圖形對(duì)象之間的鏈接的鏈接單元的一個(gè)表現(xiàn)的代碼。87.一種在一個(gè)GUI中控制一個(gè)圖形對(duì)象外觀的方法中使用的計(jì)算機(jī)程序產(chǎn)品,包含用于定義該圖形對(duì)象的第一個(gè)表現(xiàn)以及該圖形對(duì)象的第二個(gè)表現(xiàn)的代碼,以及用于有選擇地顯示第一個(gè)以及第二個(gè)表現(xiàn),最好是循環(huán)顯示這些表現(xiàn)的代碼。88.一種在一個(gè)GUI中顯示一個(gè)圖形對(duì)象的一個(gè)表現(xiàn)的方法中使用的計(jì)算機(jī)程序產(chǎn)品,包含用于顯示該圖形對(duì)象的第一個(gè)表現(xiàn)、以及用于隨后顯示該圖形對(duì)象的第二個(gè)表現(xiàn)的代碼。89.如權(quán)利要求75到88中任何一個(gè)所述的計(jì)算機(jī)程序產(chǎn)品,供一個(gè)接收器/解碼器使用。90.一個(gè)計(jì)算機(jī)程序產(chǎn)品,包含一個(gè)存儲(chǔ)器和處理器,該存儲(chǔ)器中已經(jīng)存儲(chǔ)了一個(gè)應(yīng)用程序,而且該處理器(在該應(yīng)用程序的控制下)適合于執(zhí)行如在權(quán)利要求1到45中任何一個(gè)所述的方法。91.一種計(jì)算機(jī)程序產(chǎn)品,包含一段用于執(zhí)行如權(quán)利要求1到45中任何一個(gè)所述的方法的程序。92.一段計(jì)算機(jī)程序,用于執(zhí)行如權(quán)利要求1到45任何一個(gè)所述的方法。93.一種計(jì)算機(jī)可讀介質(zhì),其上存儲(chǔ)有一段用于執(zhí)行如權(quán)利要求1到45中任何一個(gè)所述的方法的程序。94.一種計(jì)算機(jī)可讀介質(zhì),其上存儲(chǔ)有一個(gè)如權(quán)利要求75到91中任何一個(gè)所述的計(jì)算機(jī)程序產(chǎn)品。95.一個(gè)信號(hào),有形地體現(xiàn)為一個(gè)如權(quán)利要求75到91中任何一個(gè)所述的計(jì)算機(jī)程序產(chǎn)品。96.一種在這里實(shí)質(zhì)上結(jié)合附圖進(jìn)行描述、并在附圖中進(jìn)行說(shuō)明的方法。97.一種實(shí)質(zhì)上在這里結(jié)合附圖進(jìn)行描述、并在附圖中進(jìn)行了說(shuō)明的裝置。全文摘要本發(fā)明的方面涉及一種在一個(gè)圖形用戶界面中控制一個(gè)圖形對(duì)象的外觀的方法。在本發(fā)明一個(gè)方面的一個(gè)實(shí)施例中,在一個(gè)圖形用戶界面中的一個(gè)諸如一個(gè)窗口小部件的對(duì)象,包含一個(gè)窗口小部件類的一個(gè)實(shí)例,在該類中定義了控制該對(duì)象操作的屬性和/或方法;以及一個(gè)外觀對(duì)象類的相關(guān)實(shí)例,在該類中定義了控制該對(duì)象外觀的屬性和/或方法。文檔編號(hào)G06F9/44GK1433541SQ00817972公開(kāi)日2003年7月30日申請(qǐng)日期2000年11月1日優(yōu)先權(quán)日1999年11月2日發(fā)明者B·茹埃,E·恩吉蕓范霍恩,J·-S·維萊爾申請(qǐng)人:卡納爾股份有限公司
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1