專利名稱:一種軟件界面處理方法及裝置的制作方法
技術領域:
本發明屬于計算機技術領域,尤其涉及一種軟件界面處理的方法及裝置。
背景技術:
網絡即時通訊工具發展到今天,已經成為用戶必不可少的軟件工具,不但在平時的休閑娛樂中,而且在用戶的工作中得到廣泛的使用。網絡即時通訊軟件的特點是提供了靈活多變的個性化界面,甚至用戶可以親自設計軟件的界面。
現有技術中,提供了換膚功能的軟件,基本上都是通過用一個擴展性標識語言XML(Extensible Markup Language,XML)文檔對軟件的界面數據進行配置,該XML文檔相當于界面信息數據表,每一項表示一個界面元素的信息,應用軟件讀取該信息,初始化界面元素,然后顯示界面。換膚的原理是同一個應用軟件有多份皮膚配置文件,切換皮膚時,就選取其中一個配置文件的數據作為使用的數據。
現有的換膚軟件的界面組織與軟件的具體邏輯處理混在一起,應用軟件要知道界面組織文件中描述的各個控件,否則,該界面組織文件中描述的這個控件是無效的。而軟件的數據邏輯與界面邏輯高度偶合會不利于軟件模塊的移植。并且,界面元素的數據結構變更,需要重新編譯相應的應用軟件,這樣不僅加大了成本,也加大了因界面的變更而引起的軟件穩定性的風險。
發明內容
本發明實施例的目的在于提供一種軟件界面處理的方法,旨在解決現有技術中軟件的數據邏輯與界面邏輯高度偶合,不利于軟件模塊移植的問題。
本發明實施例是這樣實現的,一種軟件界面處理的方法,所述方法包括以下步驟讀取界面數據,構造界面的數據結構;生成界面對象;將構造的界面數據結構與生成的界面對象綁定。
本發明實施例的另一目的在于提供一種軟件界面處理的裝置,所述裝置包括界面數據結構構造模塊,用于讀取界面數據,構造界面的數據結構;界面對象生成模塊,用于生成界面對象;以及界面對象綁定模塊,用于將構造的界面數據結構與生成的界面對象綁定。
本發明通過構造界面的數據結構并生成界面對象,將構造的界面數據結構與生成的界面對象綁定,實現了界面與數據邏輯的徹底分離,提高了軟件的可移植性,使用戶方便的實現個性化的軟件界面。
圖1是本發明實施例提供的軟件界面處理方法的流程圖;圖2是本發明實施例提供的軟件界面處理裝置的結構圖。
具體實施例方式
為了使本發明的目的、技術方案及優點更加清楚明白,以下結合附圖及實施例,對本發明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅僅用以解釋本發明,并不用于限定本發明。
本發明通過構造界面的數據結構并生成界面對象,將構造的界面數據結構與生成的界面對象綁定。
圖1示出了本發明實施例提供的軟件界面處理方法的流程,詳述如下。
在步驟S101中,讀取界面數據,構造界面的數據結構。
作為本發明的實施例,該處構造的界面數據結構為LUA數據結構。
本發明在構造界面的數據結構的過程中,會將界面開發人員編寫的XML數據結構轉換為LUA數據結構。由于XML數據結構的層次關系是非常清晰的,所以從XML數據結構轉為LUA數據結構是很容易實現的,下面是一個從XML數據結構轉為LUA數據結構的實例。
<UI namespace=“TestSkin”> setfenv(1,using_namespace(“TestSkin”))<Window name=“TestWindow”> function Window.TestWindow(WinArg)<Popskinner name=“MainFrame”>local MainFrame=nilMainFrame=_Skinner{<Size x=“100”y=“100”/> Size=_Size{x=100,y=100},<Frames> Frames= {<Texture name=“Header”/> Header=Texture{},<FontString file=“@Test”/>_ FontString{file=“Test”},</Frames> },<Scripts>
<PreInit> PreInit=function(self,arg)self.Offset={x=5,y=10} sel.Offset={x=5,y=10}</PreInit> end</ Scripts>
</Popskinner> }</Window> return MainFrameEnd</UI>
在步驟S102中,生成界面對象。
在具體實施過程中,利用LUA數據結構實現各種基礎的界面元素類的構造器。從XML數據結構轉化來的LUA數據結構,包含了界面元素的信息,把該信息放到界面元素類的構造器后,通過調用LUA數據結構的界面元素類的構造器生成界面對象。在具體實施過程中,調用LUA數據結構的界面元素類的構造器包括調用界面的屬性、大小以及位置等信息。
在步驟S103中,將構造的界面數據結構與生成的界面對象綁定。
其中,該步驟是這樣實現的,構造的LUA數據結構中有一個字段是用于保存窗口句柄的,在利用LUA數據結構生成界面對象時,會自動把該窗口句柄保存在LUA數據結構的窗口句柄字段里。由于該窗口句柄是用來控制界面窗口的,所以保存了窗口句柄以后,便可以通過在LUA數據結構里面編譯程序控制界面窗口。
因為LUA數據結構是與界面對象綁定的,可以在LUA數據結構中編寫處理函數,控制自身或其它的界面對象。
以生成的C++界面對象為例,LUA數據結構中有一個字段是用于保存C++界面對象的窗口句柄,在利用該LUA數據結構創建該C++界面對象時,會自動把C++界面對象的窗口句柄保存在該LUA數據結構的窗口句柄字段里。并且,由于該C++界面對象的窗口句柄是用來控制C++界面對象的窗口的,所以保存了該C++界面對象的窗口句柄以后,便可以通過在LUA數據結構里面編譯程序控制該C++界面對象窗口。
由于LUA是界面系統的中間層,可以在最外層的XML數據結構中編輯XML函數,然后利用XML數據結構轉LUA數據結構的功能轉化為LUA函數,進而轉為界面對象的處理函數,從而實現XML數據結構與LUA數據結構結合的界面組織。XML只要描述界面布排及屬性,LUA編寫處理函數,這樣的結合,加強了腳本的處理能力,可以在腳本完全控制界面。
下面以一個例子說明如何在腳本控制界面<UI>
<PopupFrame name=“MainFrame”>
<Size x=“100”y=“100”/>
<Scripts>
<OnPreInit>
self.Offset={x=20,y=20};
</OnPreInit>
</Scripts>
</PopupFrame>
</UI>
上面的例子用XML數據結構描述了一個名稱為MainFrame的彈出窗口,其中,有一個LUA數據結構編寫的處理函數OnPreInit,在OnPreInit中調整了MainFrame的位置。
在具體實施過程中,應用軟件根據業務需要實現很多的業務數據包的類,數據包提供數據讀寫接口,界面關聯某一個數據包就可以對某一業務的數據進行操作了,由于該處的數據包并不關心界面的存在,也不清楚界面的細節,這樣就實現了界面與業務數據邏輯的分離。當界面需要改變時,可以不改變業務數據處理邏輯,只需要改變系統的界面組織文件,甚至只改變XML數據結構及LUA數據結構的界面組織文件。基于這點,只要保證數據接口不變,就可以非常方便地實現個性化的軟件界面。
圖2示出了本發明實施例提供的軟件界面處理裝置的結構。
界面數據結構構造模塊11讀取界面數據,構造界面的數據結構,其中,構造界面的數據結構是通過將用戶輸入的XML數據結構轉為LUA數據結構來完成的,具體轉換過程在前文已述,此處不再贅述。
界面對象生成模塊12通過調用界面元素類的構造器14中的諸如界面的屬性、大小以及位置等信息來生成界面對象。
界面對象綁定模塊13將界面數據結構構造模塊11構造的界面數據結構與界面對象生成模塊12生成的界面對象綁定,其中,在進行綁定時,將生成的界面對象的窗口句柄保存在LUA數據結構的窗口句柄字段里面。
以上所述僅為本發明的較佳實施例而已,并不用以限制本發明,凡在本發明的精神和原則之內所作的任何修改、等同替換和改進等,均應包含在本發明的保護范圍之內。
權利要求
1.一種軟件界面處理的方法,其特征在于,所述方法包括以下步驟讀取界面數據,構造界面的數據結構;生成界面對象;將構造的界面數據結構與生成的界面對象綁定。
2.如權利要求1所述的軟件界面處理的方法,其特征在于,所述構造的界面數據結構為LUA數據結構。
3.如權利要求1所述的軟件界面處理的方法,其特征在于,所述構造界面的數據結構的過程是通過將用戶輸入的XML數據結構轉為LUA數據結構來完成的。
4.如權利要求1所述的軟件界面處理的方法,其特征在于,所述生成界面對象的過程是通過調用所述構造的數據結構中界面元素類的構造器來完成的。
5.如權利要求1所述的軟件界面處理的方法,其特征在于,在進行將界面數據結構的描述語言與生成的界面對象綁定時,是通過將所述界面對象的窗口句柄保存在LUA數據結構的窗口句柄字段里來實現的。
6.一種軟件界面處理的裝置,其特征在于,所述裝置包括界面數據結構構造模塊,用于讀取界面數據,構造界面的數據結構;界面對象生成模塊,用于生成界面對象;以及界面對象綁定模塊,用于將構造的界面數據結構與生成的界面對象綁定。
7.如權利要求6所述的軟件界面處理的裝置,其特征在于,所述構造的界面數據結構為LUA數據結構。
8.如權利要求6所述的軟件界面處理的裝置,其特征在于,所述裝置進一步包含有一界面元素類的構造器,所述構造器用于存儲界面元素類的信息。
全文摘要
本發明適應于計算機技術領域,提供了一種軟件界面處理方法及裝置,所述方法包括以下步驟讀取界面數據,構造界面的數據結構;生成界面對象;將構造的界面數據結構與生成的界面對象綁定。本發明通過構造界面的數據結構并生成界面對象,將構造的數據結構與生成的界面對象綁定,實現界面與數據邏輯的徹底分離,提高了軟件的可移植性,使用戶非常方便的實現個性化的軟件界面。
文檔編號G06F17/30GK101071373SQ20071007379
公開日2007年11月14日 申請日期2007年3月30日 優先權日2007年3月30日
發明者謝昕虬, 陳頡, 夏江波, 梁芝成 申請人:騰訊科技(深圳)有限公司