專利名稱:實現派生構件回調事件過濾的方法和數據處理設備的制作方法
技術領域:
本發明涉及一種實現構件回調事件處理的方法和設備,特別是涉及一種實現派生
構件回調事件過濾的方法和數據處理設備。
背景技術:
隨著計算機軟件技術的不斷發展,構件化軟件技術已經越來越普及,各種各樣的構件技術和支持這些構件技術的相應的嵌入式操作系統也應運而生。例如,圖1中所示的基于基構件和派生構件架構的構件技術,在該架構中,派生構件繼承于基構件,用于實現基于基構件的特定功能,而基于該架構的嵌入式操作系統由于存在基構件與派生構件的繼承關系實現了作業的時效性、針對性、便捷性。 在該架構中,基構件通常會拋出所有被激發的回調事件,然而,派生構件一般用于特定功能,對于用戶來說,不需要收到基構件拋出的所有回調事件,而僅需要收到與派生構件對應的有效的回調事件。這時,如果沒有過濾機制,只能由派生構件的用戶自己拋棄不需要的回調事件,既浪費系統資源(處理不必要的多余回調事件),又影響用戶的處理效率(需要額外處理多余的回調事件)。
發明內容
鑒于以上內容,有必要提供一種實現派生構件回調事件過濾的方法,以提高構件回調事件處理效率和避免浪費系統資源。 此外,還有必要提供一種實現派生構件回調事件過濾的數據處理設備,以提高構件回調事件處理效率和避免浪費系統資源。 —種實現派生構件回調事件過濾的方法,適用于能運行構件化軟件系統的數據處理設備。該方法包括步驟(a)通過構件化軟件系統定義激發基構件回調事件的函數,及定義繼承于基構件的派生構件回調事件過濾函數;(b)構件化軟件系統通過定義的激發基構件回調事件的函數,監控用戶激發的基構件的回調事件;(c)在監控到用戶激發了基構件的回調事件時,構件化軟件系統通過查找接口指針分析派生構件有沒有聲明回調事件過濾關鍵字;(d)在派生構件聲明了回調事件過濾關鍵字時,構件化軟件系統調用定義的派生構件回調事件過濾函數,以對用戶激發的回調事件進行攔截過濾;(e)構件化軟件系統根據定義的派生構件回調事件過濾函數的運行結果,分析是否拋出用戶激發的回調事件;(f)在需要拋出用戶激發的回調事件時,構件化軟件系統拋出用戶激發的回調事件。
—種實現派生構件回調事件過濾的數據處理設備,該數據處理設備包括存儲器及處理器。該存儲器用于存儲構件化軟件系統。該處理器用于運行存儲的構件化軟件系統,以執行以下步驟(il)通過構件化軟件系統定義激發基構件回調事件的函數,及定義繼承于基構件的派生構件回調事件過濾函數;(i2)構件化軟件系統通過定義的激發基構件回調事件的函數,監控用戶激發的基構件的回調事件;(i3)在監控到用戶激發了基構件的回調事件時,構件化軟件系統通過查找接口指針分析派生構件有沒有聲明回調事件過濾關鍵字;(i4)在派生構件聲明了回調事件過濾關鍵字時,構件化軟件系統調用定義的派生構件
回調事件過濾函數,以對用戶激發的回調事件進行攔截過濾;(i5)構件化軟件系統根據定
義的派生構件回調事件過濾函數的運行結果,分析是否拋出用戶激發的回調事件;(i6)在
需要拋出用戶激發的回調事件時,構件化軟件系統拋出用戶激發的回調事件。 相較現有技術,本發明通過在構件化軟件系統中為派生構件設定過濾函數,在派
生構件一層攔截基構件拋出的不必要的、多余的回調事件,提高了構件回調事件的處理效
率,避免了系統資源的浪費。
圖1是基構件和派生構件架構示意圖。 圖2是本發明實現派生構件回調事件過濾的方法較佳實施例的具體實施流程圖。
圖3是本發明運用派生構件回調事件的過濾機制示意圖。
具體實施例方式
如圖2所示,是本發明實現派生構件回調事件過濾的方法較佳實施例的具體實施流程圖。該方法適用于數據處理設備,例如計算機、手機、個人數字助理(PersonalDigital Assistant, PDA)等。所述數據處理設備包括存儲器及處理器。該存儲器用于存儲能實現該方法的構件化軟件系統。該處理器用于運行存儲的構件化軟件系統以實現該方法。 在本實施例中,是以基構件CForm和繼承于CForm的派生構件CDialog為例進行說明的;在本發明的其他實施例中,其他基構件和派生構件的實施情況與CForm和CDialog實施情況相類似,因此,在不付出創造性勞動的情況下,本技術領域的技術人員應當能夠通過以CForm和CDialog為例的實施情況,輕易實現所有其他基構件和派生構件基于本發明技術方案的實施情況。 在本實施例中,運用派生構件回調事件的過濾機制的必要性說明在構件化軟件系統中,基構件CForm會拋出在Form范圍內任何地方的鼠標點擊事件(Click事件),而當用戶創建一個繼承于CForm的派生構件CDialog對象時,可以注冊相應的Click事件(例如注冊點擊button的Click事件)。對于CForm基構件來說,用戶鼠標在Form范圍內任何地方的點擊事件都會被拋出,而使用CDialog派生構件的用戶則可能只關心點擊到button的Click事件(也就是只關心注冊的Click事件),這時就可以利用派生構件回調事件的過濾機制攔截掉多余的Click事件。例如,圖3所示的過濾機制,所述多余的Click事件會被認定無效并被后臺拋棄,而所述點擊button的Click事件會被認定有效并被拋出。
以下是結合本實施例逐步實現上述派生構件回調事件的過濾機制的內容。
步驟S10,在為構件化軟件系統提供的函數構建界面中,定義激發基構件回調事件的函數,定義繼承于基構件的派生構件回調事件的過濾函數。
于本實施例步驟S10中,可以定義激發基構件回調事件的函數如下
class Callback 〃通過Elastos平臺的編譯器生成的后臺偽代碼
{ ClickEvent(Int32x, Int32y);
} class CForm-Callback {} 于本實施例步驟S10中,可以定義繼承于基構件的派生構件回調事件的過濾函數如下 ECode CDialog: :ClickEventFilter (Int32x, Int32y) { if (IsValidCoordinates(x, y)) {〃判斷是否是有效區域return Super: :Callback: :CIickEvent (x, y);〃有效區域,拋出事件 } else(〃無效區域 return N0ERR0R ;〃直接返回,拋棄事件 } } 步驟Sll,構件化軟件系統通過定義的激發基構件回調事件的函數,監控用戶激發的基構件的回調事件。在監控到用戶激發了基構件的回調事件情況下,轉入執行下述步驟S12。 步驟S12,構件化軟件系統通過查找接口指針(Probe)分析派生構件有沒有聲明
回調事件過濾關鍵字。在構件化軟件系統中,通常后綴名為car的文件用于聲明基構件和
派生構件所實現的接口,例如后綴名為car的文件聲明了一個派生構件具有回調事件過
濾接口 ,則該派生構件對象里面就包括回調事件過濾接口對應的指針。 于本實施例步驟S12中,聲明了派生構件具有回調事件過濾接口的后綴名為car
的文件可以包括如下定義的內容 Interface IClickEvent( ClickEvent(Int32x, Int32y); } Class CForm( ...... Callback interface IClickEvent ; } Class CDialog -public CForm{ ...... Callback filtering IClickEvent ;//聲明IClickEvent的過濾關鍵字 } 于本實施例步驟S12中,構件化軟件系統通過查找接口指針(Probe)分析派生構
件有沒有聲明回調事件過濾關鍵字的執行程序可以定義如下 Callback: : ClickEvent (Int32x, Int32y) { IClickEvent氺pEvent = IClickEvent::Probe(_chiId);
6
if (pEvent)pEvent-〉ClickEvent(x, y);〃派生構件聲明了過濾關鍵字 else—PostCallbackEvent(MakePar謙ter(x, y));〃派生構件沒有聲明過濾關
鍵字,則直接拋出回調事件 ...... } 在派生構件聲明了回調事件過濾關鍵字(例如上述的"IClickEvent")時,轉入執行下述步驟S13 ;或者,在派生構件沒有聲明回調事件過濾關鍵字時,轉入執行下述步驟S16。 步驟S13,構件化軟件系統調用定義的派生構件回調事件過濾函數,以對用戶激發的回調事件進行攔截過濾。 步驟S15,構件化軟件系統根據定義的派生構件回調事件過濾函數的運行結果,分析是否拋出用戶激發的回調事件。 在需要拋出用戶激發的回調事件時,轉入執行下述步驟S16 ;或者,在需要拋棄用
戶激發的回調事件時,構件化軟件系統拋棄用戶激發的回調事件,流程結束。
步驟S16,構件化軟件系統拋出用戶激發的回調事件。 最后所應說明的是,以上實施例僅用以說明本發明的技術方案而非限制,盡管參照較佳實施例對本發明進行了詳細說明,本領域的普通技術人員應當理解,可以對本發明的技術方案進行修改或等同替換,而不脫離本發明技術方案的精神和范圍。
權利要求
一種實現派生構件回調事件過濾的方法,適用于能運行構件化軟件系統的數據處理設備,其特征在于,該方法包括步驟通過構件化軟件系統定義激發基構件回調事件的函數,及定義繼承于基構件的派生構件回調事件過濾函數;構件化軟件系統通過定義的激發基構件回調事件的函數,監控用戶激發的基構件的回調事件;在監控到用戶激發了基構件的回調事件時,構件化軟件系統通過查找接口指針分析派生構件有沒有聲明回調事件過濾關鍵字;在派生構件聲明了回調事件過濾關鍵字時,構件化軟件系統調用定義的派生構件回調事件過濾函數,以對用戶激發的回調事件進行攔截過濾;構件化軟件系統根據定義的派生構件回調事件過濾函數的運行結果,分析是否拋出用戶激發的回調事件;及在需要拋出用戶激發的回調事件時,構件化軟件系統拋出用戶激發的回調事件。
2. 如權利要求1所述的實現派生構件回調事件過濾的方法,其特征在于,所述數據處理設備包括計算機、手機、個人數字助理。
3. 如權利要求1或2所述的實現派生構件回調事件過濾的方法,其特征在于,所述構件化軟件系統是嵌入式操作系統。
4. 如權利要求1或2所述的實現派生構件回調事件過濾的方法,其特征在于,該方法還包括步驟在派生構件沒有聲明回調事件過濾關鍵字時,直接轉入執行步驟構件化軟件系統拋出用戶激發的回調事件。
5. 如權利要求1或2所述的實現派生構件回調事件過濾的方法,其特征在于,該方法還包括步驟在不需要拋出用戶激發的回調事件時,構件化軟件系統拋棄用戶激發的回調事件。
6. 如權利要求1所述的實現派生構件回調事件過濾的方法,其特征在于,所述基構件是CForm,所述派生構件是CDialog。
7. —種實現派生構件回調事件過濾的數據處理設備,其特征在于,該數據處理設備包括存儲器,用于存儲構件化軟件系統;處理器,用于運行存儲的構件化軟件系統,以執行以下步驟通過構件化軟件系統定義激發基構件回調事件的函數,及定義繼承于基構件的派生構件回調事件過濾函數;構件化軟件系統通過定義的激發基構件回調事件的函數,監控用戶激發的基構件的回調事件;在監控到用戶激發了基構件的回調事件時,構件化軟件系統通過查找接口指針分析派生構件有沒有聲明回調事件過濾關鍵字;在派生構件聲明了回調事件過濾關鍵字時,構件化軟件系統調用定義的派生構件回調事件過濾函數,以對用戶激發的回調事件進行攔截過濾;構件化軟件系統根據定義的派生構件回調事件過濾函數的運行結果,分析是否拋出用戶激發的回調事件;及在需要拋出用戶激發的回調事件時,構件化軟件系統拋出用戶激發的回調事件。
8. 如權利要求7所述的實現派生構件回調事件過濾的數據處理設備,其特征在于,所述數據處理設備包括計算機、手機、個人數字助理。
9. 如權利要求7或8所述的實現派生構件回調事件過濾的數據處理設備,其特征在于,所述構件化軟件系統是嵌入式操作系統。
10. 如權利要求7或8所述的實現派生構件回調事件過濾的數據處理設備,其特征在于,所述處理器運行存儲的構件化軟件系統還執行以下步驟在派生構件沒有聲明回調事件過濾關鍵字時,直接轉入執行步驟構件化軟件系統拋出用戶激發的回調事件。
11. 如權利要求7或8所述的實現派生構件回調事件過濾的數據處理設備,其特征在于,所述處理器運行存儲的構件化軟件系統還執行以下步驟在不需要拋出用戶激發的回調事件時,構件化軟件系統拋棄用戶激發的回調事件。
12. 如權利要求7所述的實現派生構件回調事件過濾的數據處理設備,其特征在于,所述基構件是CForm,所述派生構件是CDialog。
全文摘要
本發明提供一種實現派生構件回調事件過濾的方法,該方法通過在構件化軟件系統中為派生構件設定過濾函數,在派生構件一層攔截基構件拋出的不必要的、多余的回調事件,提高了構件回調事件的處理效率,避免了系統資源的浪費。本發明還提供一種實現派生構件回調事件過濾的數據處理設備。
文檔編號G06F9/44GK101770361SQ200810208050
公開日2010年7月7日 申請日期2008年12月29日 優先權日2008年12月29日
發明者宋世軍, 牛靖宇, 陳榕 申請人:上海科泰世紀科技有限公司