自繪控件實現方法及裝置的制造方法
【專利摘要】本發明公開了一種自繪控件實現方法,包括步驟:接收顯示內容控制操作;在所述顯示內容的內容控件為Windows窗口內容控件時,通過所述內容控件的父窗口將所述控制操作轉發至滾動條控件,以使所述滾動條控件根據所述控制操作完成顯示內容的控制響應操作。本發明還公開一種自繪控件實現裝置。本發明實現在控件內對滾動條的完全自繪操作,提高了自繪控件的定制性和適用性。
【專利說明】
自繪控件實現方法及裝置
技術領域
[0001 ]本發明涉及到軟件開發技術領域,特別涉及到自繪控件實現方法及裝置。【背景技術】
[0002]在Windows窗口中,list(列表)、tree(樹狀)等控件都可以存放并顯示大量數據,當待顯示的數據量較大時,受控件界面大小的限制,在顯示界面中無法一次性顯示所有的數據時,得分成多頁來顯示,并通過滾動來實現移動頁面操作。目前內容控件的滾動條的一般有:使用系統默認的滾動條樣式。創建采用一套完全自繪的控件庫,內容控件和滾動條都采用自繪。
[0003]然而,由于Windows對自繪控件的封裝性的限制,在使用Widnows窗口內容控件時,滾動條位于內容控件內,在控件內只能對滾動條進行有限的自繪,也不能對滾動條的鼠標、鍵盤消息進行完整的托管處理,因此,Windows自繪控件的滾動條的定制性和適用性差。
【發明內容】
[0004]本發明實施例提供一種自繪控件實現方法及裝置,旨在解決現有的在控件內只能對滾動條進行有限的自繪,也不能對滾動條的鼠標、鍵盤消息進行完整的托管處理,因此, Windows自繪控件的滾動條的定制性和適用性差的問題。
[0005]為實現上述目的,本發明實施例提出一種自繪控件實現方法,包括步驟:
[0006]接收顯示內容控制操作;
[0007]在所述顯示內容的內容控件為Windows窗口內容控件時,通過所述內容控件的父窗口將所述控制操作轉發至滾動條控件,以使所述滾動條控件根據所述控制操作完成顯示內容的控制響應操作。
[0008]為了實現上述目的,本發明實施例還進一步提出一種自繪控件實現裝置,包括:
[0009]接發模塊,用于接收顯示內容控制操作;
[0010]處理模塊,用于在所述顯示內容的內容控件為Windows窗口內容控件時,通過所述內容控件的父窗口將所述控制操作轉發至滾動條控件,以使所述滾動條控件根據所述控制操作完成顯示內容的控制響應操作。
[0011]本發明在使用Windows窗口內容控件時,通過所述內容控件的父窗口將所述控制操作發送至滾動條控件,以完成顯示內容的控制操作。有效避免在使用的Windows窗口內容控件時,在控件內只能對滾動條進行有限的自繪,也不能對滾動條的鼠標、鍵盤消息進行完整的托管處理,因此,Windows自繪控件的滾動條的定制性和適用性差。使得在使用的 Windows窗口內容控件時,實現自繪滾動條對顯示內容的控制,提高了自繪控件的適用性。【附圖說明】
[0012]圖1為本發明實施例自繪控件實現裝置所涉及的硬件架構示意圖;
[0013]圖2為本發明自繪控件實現方法的第一實施例的流程示意圖;
[0014]圖3為本發明設置內容控件的參數一實施例的流程示意圖;
[0015]圖4為本發明設置滾動條控件的參數一實施例的流程示意圖;
[0016]圖5為本發明自繪控件實現方法的第二實施例的流程示意圖;
[0017]圖6為本發明自繪控件實現方法的第一實施例的流程示意圖;
[0018]圖7為本發明滾動條的Pos發生變化的處理一實施例的流程示意圖;
[0019]圖8為本發明MouseWheel消息的處理一實施例的流程示意圖;
[0020]圖9為本發明MouseWheel消息的處理另一實施例的流程示意圖;[0021 ]圖10為本發明自繪控件實現裝置的較佳實施例的功能模塊示意圖。
[0022]本發明目的的實現、功能特點及優點將結合實施例,參照附圖做進一步說明。【具體實施方式】
[0023]應當理解,此處所描述的具體實施例僅僅用以解釋本發明,并不用于限定本發明。
[0024]本發明實施例的主要解決方案是:接收顯示內容控制操作;在所述顯示內容的內容控件為Windows窗口內容控件時,完全自繪的滾動條位于內容控件的父窗口內,并通過所述內容控件的父窗口將所述控制操作轉發至滾動條控件,以使所述滾動條控件根據所述控制操作完成顯示內容的控制響應操作。在使用Windows窗口內容控件時,通過所述內容控件的父窗口將所述控制操作發送至滾動條控件,以完成顯示內容的控制操作。有效避免在使用的Windows窗口內容控件時,在控件內只能對滾動條進行有限的自繪,也不能對滾動條的鼠標、鍵盤消息進行完整的托管處理,因此,Windows自繪控件的滾動條的定制性和適用性差。使得在使用的Windows窗口內容控件時,實現自繪滾動條對顯示內容的控制,提高了自繪控件的適用性。
[0025]由于現有Windows窗口內容控件,無法實現滾動條的完全自繪,進而導致自繪控件的個性化定制的適用性差。
[0026]本發明實施例架構一自繪控件實現裝置,該自繪控件實現裝置在使用Windows窗口內容控件時,通過所述內容控件的父窗口將所述控制操作發送至滾動條控件,以完成顯示內容的控制操作。有效避免在使用的Windows窗口內容控件時,在控件內只能對滾動條進行有限的自繪,也不能對滾動條的鼠標、鍵盤消息進行完整的托管處理,因此,Windows自繪控件的滾動條的定制性和適用性差。使得在使用Windows窗口內容控件時,實現在控件內對滾動條的完全自繪操作,提高了自繪控件的定制性和適用性。
[0027]其中,本實施例自繪控件實現裝置可以承載于PC端,也可以承載于手機、平板電腦等可以使用頁面瀏覽應用的電子終端。該自繪控件實現裝置所涉及的硬件架構可以如圖 1所示。
[0028]圖1示出了本發明實施例自繪控件實現裝置所涉及的硬件架構。如圖1所示,所述自繪控件實現裝置所涉及的硬件包括:處理器301,例如CPU,網絡接口 304,用戶接口 303, 存儲器305,通信總線302。其中,通信總線302用于實現該信息推送平臺中各組成部件之間的連接通信。用戶接口 303可以包括顯示屏(Display)、鍵盤(Keyboard)、鼠標等組件, 用于接收用戶輸入的信息,并將接收的信息發送至處理器305進行處理。顯示屏可以為IXD 顯示屏、LED顯示屏,也可以為觸摸屏,用于顯示自繪控件實現裝置需要顯示的數據,例如顯示自繪控件、自繪控件操作等操作界面。可選用戶接口 303還可以包括標準的有線接口、無線接口。網絡接口 304可選的可以包括標準的有線接口、無線接口(如W1-FI接口)。存儲器305可以是高速RAM存儲器,也可以是穩定的存儲器(non-volatile memory),例如磁盤存儲器。存儲器305可選的還可以是獨立于前述處理器301的存儲裝置。如圖1所示,作為一種計算機存儲介質的存儲器305中可以包括操作系統、網絡通信模塊、用戶接口模塊以及自繪控件實現程序。
[0029]在圖1所示的自繪控件實現裝置所涉及的硬件中,網絡接口 304主要用于連接應用平臺,與應用平臺進行數據通信;用戶接口 303主要用于連接客戶端,與客戶端進行數據通信,接收客戶端輸入的信息和指令;而處理器301可以用于調用存儲器305中存儲的自繪控件實現程序,并執行以下操作:
[0030]接收顯示內容控制操作;
[0031]在所述顯示內容的內容控件為Windows窗口內容控件時,通過所述內容控件的父窗口將所述控制操作轉發至滾動條控件,以使所述滾動條控件根據所述控制操作完成顯示內容的控制響應操作。
[0032]進一步地,在一個實施例中,處理器301調用存儲器305中存儲的自繪控件實現程序可以執行以下操作:
[0033]接收內容控件的參數設置指令;
[0034]根據所述內容控件的參數設置指令設置顯示內容的參數。
[0035]進一步地,在一個實施例中,處理器301調用存儲器305中存儲的自繪控件實現程序可以執行以下操作:
[0036]通過調用函數將為內容控件設置的參數發送給滾動條控件,以使滾動條控件設置與所述內容控件相應的參數。
[0037]進一步地,在一個實施例中,處理器301調用存儲器305中存儲的自繪控件實現程序可以執行以下操作:
[0038]在偵測到顯示內容的顯示參數發生變化時,確定與所述發生變化的相應參數對應的滾動條控件的函數;
[0039]調用所確定的函數對滾動條控件的參數進行更新。
[0040]進一步地,在一個實施例中,處理器301調用存儲器305中存儲的自繪控件實現程序可以執行以下操作:
[0041]接收滾動條控件OnPosChanged回調函數的注冊指令,并根據所述注冊指令注冊 OnPosChanged 回調函數;
[0042]在滾動條控件的Pos參數發生變化時,觸發OnPosChanged事件,通過滾動條控件的GetPos函數獲取滾動條控件的Pos參數,通過所獲取到滾動條控件的Pos參數更新內容控件的Pos參數。
[0043]本實施例根據上述方案,在使用Windows窗口內容控件時,完全自繪的滾動條位于內容控件的父窗口內,并通過所述內容控件的父窗口將所述控制操作發送至滾動條控件,以完成顯示內容的控制操作。有效避免在使用的Windows窗口內容控件時,在控件內只能對滾動條進行有限的自繪,也不能對滾動條的鼠標、鍵盤消息進行完整的托管處理,因此,Windows自繪控件的滾動條的定制性和適用性差。使得在使用Windows窗口內容控件時,實現在控件內對滾動條的完全自繪操作,提高了自繪控件的定制性和適用性。
[0044]基于上述硬件架構,提出本發明自繪控件實現方法實施例。
[0045]如圖2所示,提出本發明一種自繪控件實現方法的第一實施例,所述自繪控件實現方法包括:
[0046]步驟S10,接收顯示內容控制操作;
[0047]頁面瀏覽用戶在需要控制頁面顯示內容時,通過鼠標或者物理按鍵對頁面顯示的內容進行控制,例如,翻頁、向上翻或向下翻所顯示的內容等。所述發出顯示內容控制操作的方式包括:基于滾動條控件區域發出控制操作或者基于顯示內容的顯示控件區域發出控制操作等。所述控制操作包括鼠標操作、鍵盤操作及/或繪制消息等。
[0048]在通過滾動條完成顯示內容的控制操作之前,需要對內容控件和滾動條控件的參數進行設置。
[0049]具體的,參考圖3,設置內容控件的參數的過程包括:
[0050]步驟S30,接收內容控件的參數設置指令;內容控件的滾動條的繪制跟控件大小、 完整內容大小、起始顯不坐標等都是相關聯的,為了更好說明本方案,先定義了內容大小相關度的參數。這些參數為內容控件的大小參數,同時滾動條為了與內容控件保持同步,也需要保存相應的參數。
[0051]步驟S40,根據所述內容控件的參數設置指令設置顯示內容的參數。為顯示內容設置的參數包括PageLength、ContentLength及/或Pos,其中,PageLength指內容控件顯示區域的大小,ContentLength實際完整內容的大小,Pos指內容控件的起始坐標中顯示的內容在完整內容中的相對位置,其取值范圍為[〇,ContentLength_PageLength]。如果滾動條是縱向滾動條,以上參數指的是對應的高度;如果滾動條是橫向滾動條,以上參數指的是對應的寬度。這些參數可以以像素為單位,也可以以行或者列為單位。以上參數在內容控件和滾動條中的單位保持一致。
[0052]具體的,參考圖4,設置滾動條控件的參數的過程可以包括:
[0053]步驟S50,通過調用函數將為內容控件設置的參數發送給滾動條控件,以使滾動條控件設置與所述內容控件相應的參數。
[0054]為了使滾動條與內容控件的位置參數保持同步,提供了相應的滾動條參數設置, 可分別對應內容控件的相應參數設置。可調用如下函數把內容控件相應位置的參數傳遞給滾動條,并完成滾動條控件的參數設置。通過調用SetPageLength、SetContentLength及 /或SetPos函數將為內容控件設置的參數發送給滾動條控件,以使滾動條控件設置與所述內容控件相應的參數。
[0055]在設置好內容控件和滾動條控件的參數后,初始化內容控件,在內容控件初始化時,可以根據控件大小、完整內容大小獲得PageLength和ContentLength,并一般把Pos設置為〇,在有特殊情況下根據用戶指令,設置為其他值,在初始化設置內容控件的參數時,調用滾動條的設置參數,對滾動條的PageLength、ContentLength及/或Pos參數進行同步設置。
[0056]在內容控件的初始化操作完成后,接收顯示內容的控制操作,以通過滾動條控件來響應所述對顯示內容的控制操作。
[0057]步驟S20,在所述顯示內容的內容控件為Windows窗口內容控件時,通過所述內容控件的父窗口將所述控制操作轉發至滾動條控件,以使所述滾動條控件根據所述控制操作完成顯示內容的控制響應操作。
[0058]在接收到顯示內容的控制操作后,判斷所述顯示內容的內容控件是否為Windows 窗口內容控件。在所述顯示內容的內容控件不為Windows窗口內容控件時,即為Windows自繪的內容控件時,自繪滾動條控件可以繪制在內容控件內,可由內容控件直接將所述控制操作轉發至滾動條控件,以使所述滾動條控件根據所述控制操作完成顯示內容的控制響應操作;在所述顯示內容的內容控件為Windows窗口內容控件時,通過所述內容控件的父窗口將所述控制操作轉發至滾動條控件,以使所述滾動條控件根據所述控制操作完成顯示內容的控制響應操作。現有的在Windows原生的內容控件,如list、tree。滾動條位于內容控件內,只能依賴于內容控件傳遞鼠標、鍵盤和繪制消息,在內容控件的這些消息機制不能修改的基礎上,可自定義改動的其他操作很差,但無法在內容控件內實現完全自繪的滾動條, 導致內容控件的滾動條可自定義度較差。區別于現有的在內容控件繪制的滾動條,本方案的滾動條是在內容控件的父窗口區域進行完全自繪的滾動條,可以隨意定制,并完全接管父窗口的鼠標、鍵盤和繪制消息。
[0059]本實施例在使用Windows窗口內容控件時,通過所述內容控件的父窗口將所述控制操作發送至滾動條控件,以完成顯示內容的控制操作。有效避免在使用的Windows窗口內容控件時,在控件內只能對滾動條進行有限的自繪,也不能對滾動條的鼠標、鍵盤消息進行完整的托管處理,因此,Windows自繪控件的滾動條的定制性和適用性差。使得在使用的 Windows窗口內容控件時,實現在控件內對滾動條的完全自繪操作,提高了自繪控件的定制性和適用性。
[0060]進一步地,基于上述自繪控件實現方法的第一實施例,提出本發明的第二實施例。 如圖5所示,所述步驟S50之后,還可以包括:
[0061]步驟S60,在偵測到顯示內容的顯示參數發生變化時,確定與所述發生變化的相應參數對應的滾動條控件的函數;
[0062]所述顯示內容的顯示參數包括內容控件的PageLength、ContentLength及/或 P〇s參數等。偵測顯示內容的顯示參數是否發生變化,即偵測內容控件的PageLength、 ContentLength及/或Pos參數是否發生變化。具體的,可以通過偵測顯示窗口的大小是否發生變化來判斷內容控件的PageLength是否發生變化,通過內容操作,如新增、刪除顯示內容等來判斷內容控件的ContentLength是否發生變化,通過內容控件的起始位置是否發生變化是否導致Pos變化。
[0063]在內容控件的PageLength、ContentLength及/或Pos參數任意一個發生變化,貝丨J 表示顯示內容的顯示參數發生變化,確定與所述發生變化的相應參數對應的滾動條控件的函數;例如,確定SetPageLength函數、SetContentLength函數及/或SetPos函數。
[0064]步驟S70,調用所確定的函數對滾動條控件的參數進行更新。
[0065]例如,在內容控件的PageLength發生變化時,調用SetPageLength函數對滾動條的PageLength參數進行相應調整;在內容控件的ContentLength發生變化時,調用 SetContentLength函數對滾動條的ContentLength參數進行相應調整,在內容控件的Pos 參數發生變化時,調用SetPos函數對滾動條的Pos參數進行相應調整。
[0066]本實施例通過在顯示內容的顯示參數發生變化時,即在內容控件的參數發生變化時,調用相應的函數更新滾動條的參數,使得內容控件的參數與滾動條的參數同步,進而使得通過滾動條控制顯示內容的操作更加準確,提高顯示內容控制的效率。
[0067]進一步地,基于上述自繪控件實現方法的第二實施例,提出本發明的第三實施例。 如圖7所示,所述方法還可以包括:
[0068]步驟S80,接收滾動條控件OnPosChanged回調函數的注冊指令,并根據所述注冊指令注冊OnPosChanged回調函數;
[0069]對滾動條的操作,只能改變滾動條的Pos參數,并不會改變PageLength和 ContentLength參數。通過內容控件監控滾動條的Pos參數的變化。在通過內容控件監控滾動條的P〇s參數的變化之前,需要注冊滾動條的OnPosChanged回調函數。接收滾動條 OnPosChanged回調函數的注冊指令,并根據所述注冊指令注冊OnPosChanged回調函數。
[0070]步驟S90,在滾動條控件的Pos參數發生變化時,觸發OnPosChanged事件,通過滾動條控件的GetPos函數獲取滾動條控件的Pos參數,通過所獲取到滾動條控件的Pos參數更新內容控件的Pos參數。
[0071]在由用戶操作導致滾動條的Pos發生變化時,會觸發OnPosChanged事件。內容控件可以通過滾動條的GetPos函數來獲取滾動條的Pos參數,并以此更新內容控件的Pos參數。用戶操作導致滾動條的Pos發生變化的處理時序圖如圖7所示。
[0072]具體的,對于內容控件的顯示內容的顯示參數發生變化可以由基于鼠標的滾輪操作導致。
[0073]鼠標滾輪操作會導致Pos參數的變化。對于內容控件來說,無論鼠標在內容控件區域內,還是在滾動條區域內,滑動鼠標滾輪,都是有效的操作。為了保證統一處理,可以把內容控件的滾輪消息轉發給滾動條統一處理。因此,本發明的滾動條,提供了 OnMouseWheel 函數用于接收內容控件轉發來的MouseWheel消息。當鼠標在滾動條區域時,MouseWheel消息的處理流程如圖8所示;當鼠標在內容控件區域內時,MouseWheel消息的處理流程如圖 9所示。
[0074]本實施例通過在滾動條的Pos參數發生變化時,通過滾動條的GetPos函數來獲取滾動條的Pos參數,進而根據所獲取的滾動條的Pos參數更新內容控件的Pos參數,使得內容控件的參數與滾動條的參數同步,進而使得通過滾動條控制顯示內容的操作更加準確, 提尚顯不內容控制的效率。
[0075]對應地,提出本發明自繪控件實現裝置的較佳實施例。參考圖10,所述自繪控件實現裝置包括接發模塊10、設置模塊20、調用模塊30及處理模塊40。
[0076]所述接發模塊10,用于接收顯示內容控制操作;
[0077]頁面瀏覽用戶在需要控制頁面顯示內容時,通過鼠標或者物理按鍵對頁面顯示的內容進行控制,例如,翻頁、向上翻或向下翻所顯示的內容等。所述發出顯示內容控制操作的方式包括:基于滾動條控件區域發出控制操作或者基于顯示內容的顯示控件區域發出控制操作等。所述控制操作包括鼠標操作、鍵盤操作及/或繪制消息等。
[0078]在通過滾動條完成顯示內容的控制操作之前,需要對內容控件和滾動條控件的參數進行設置。
[0079]所述接發模塊10,還用于接收內容控件的參數設置指令;內容控件的滾動條的繪制跟控件大小、完整內容大小、起始顯不坐標等都是相關聯的,為了更好說明本方案,先定義了內容大小相關度的參數。這些參數為內容控件的大小參數,同時滾動條為了與內容控件保持同步,也需要保存相應的參數。
[0080]所述設置模塊20,用于根據所述內容控件的參數設置指令設置顯示內容的參數。 為顯示內容設置的參數包括PageLength、ContentLength及/或Pos,其中,PageLength指內容控件顯示區域的大小,ContentLength實際完整內容的大小,Pos指內容控件的起始坐標中顯示的內容在完整內容中的相對位置,其取值范圍為[0,ContentLength-PageLength]。 如果滾動條是縱向滾動條,以上參數指的是對應的高度;如果滾動條是橫向滾動條,以上參數指的是對應的寬度。這些參數可以以像素為單位,也可以以行或者列為單位。以上參數在內容控件和滾動條中的單位保持一致。
[0081]所述調用模塊30,用于通過調用函數將為內容控件設置的參數發送給滾動條控件,以使滾動條控件設置與所述內容控件相應的參數。
[0082]為了使滾動條與內容控件的位置參數保持同步,提供了相應的滾動條參數設置, 可分別對應內容控件的相應參數設置。可通過調用模塊30調用如下函數把內容控件相應位置的參數傳遞給滾動條,并完成滾動條控件的參數設置。調用模塊30通過調用 SetPageLength、SetContentLength及/或SetPos函數將為內容控件設置的參數發送給滾動條控件,以使滾動條控件設置與所述內容控件相應的參數。
[0083]在設置好內容控件和滾動條控件的參數后,初始化內容控件,在內容控件初始化時,可以根據控件大小、完整內容大小獲得PageLength和ContentLength,并一般把Pos參數設置為〇,在有特殊情況下根據用戶指令,將Pos參數設置為其他值,在初始化設置內容控件的參數時,調用滾動條的設置參數,對滾動條的PageLength、ContentLength及/或Pos 參數進行同步設置。
[0084]在內容控件的初始化操作完成后,接發模塊10接收顯示內容的控制操作,以通過滾動條控件來響應所述對顯示內容的控制操作。
[0085]所述處理模塊40,用于在所述顯示內容的內容控件為Windows窗口內容控件時, 通過所述內容控件的父窗口將所述控制操作轉發至滾動條控件,以使所述滾動條控件根據所述控制操作完成顯示內容的控制響應操作。
[0086]在接收到顯示內容的控制操作后,處理模塊40判斷所述顯示內容的內容控件是否為Windows窗口內容控件。在所述顯示內容的內容控件不為Windows窗口內容控件時,即為Windows自繪的內容控件時,處理模塊40自繪滾動條控件可以繪制在內容控件內,可由內容控件直接將所述控制操作轉發至滾動條控件,以使所述滾動條控件根據所述控制操作完成顯示內容的控制響應操作;在所述顯示內容的內容控件為Windows窗口內容控件時, 處理模塊40通過所述內容控件的父窗口將所述控制操作轉發至滾動條控件,以使所述滾動條控件根據所述控制操作完成顯示內容的控制響應操作。現有的在Windows原生的內容控件,如list、tree。滾動條位于內容控件內,只能依賴于內容控件傳遞鼠標、鍵盤和繪制消息,在內容控件的這些消息機制不能修改的基礎上,可自定義改動的其他操作很差,但無法在內容控件內實現完全自繪的滾動條,導致內容控件的滾動條可自定義度較差。區別于現有的在內容控件繪制的滾動條,本方案的滾動條是在內容控件的父窗口區域進行完全自繪的滾動條,可以隨意定制,并完全接管父窗口的鼠標、鍵盤和繪制消息。
[0087]本實施例在使用Windows窗口內容控件時,通過所述內容控件的父窗口將所述控制操作發送至滾動條控件,以完成顯示內容的控制操作。有效避免在使用的Windows窗口內容控件時,在控件內只能對滾動條進行有限的自繪,也不能對滾動條的鼠標、鍵盤消息進行完整的托管處理,因此,Windows自繪控件的滾動條的定制性和適用性差。使得在使用的 Windows窗口內容控件時,實現在控件內對滾動條的完全自繪操作,提高了自繪控件的定制性和適用性。
[0088]進一步地,所述處理模塊40,還用于在偵測到顯示內容的顯示參數發生變化時,確定與所述發生變化的相應參數對應的滾動條控件的函數;
[0089]所述顯示內容的顯示參數包括內容控件的PageLength、ContentLength及/或 P〇s參數等。偵測顯示內容的顯示參數是否發生變化,即偵測內容控件的PageLength、 ContentLength及/或Pos參數是否發生變化。具體的,可以通過偵測顯示窗口的大小是否發生變化來判斷內容控件的PageLength是否發生變化,通過內容操作,如新增、刪除顯示內容等來判斷內容控件的ContentLength是否發生變化,通過內容控件的起始位置是否發生變化是否導致Pos變化。
[0090]在內容控件的PageLength、ContentLength及/或Pos參數任意一個發生變化,貝丨J 表示顯示內容的顯示參數發生變化,確定與所述發生變化的相應參數對應的滾動條控件的函數;例如,確定SetPageLength函數、SetContentLength函數及/或SetPos函數。
[0091]所述調用模塊30,還用于調用所確定的函數對滾動條控件的參數進行更新。
[0092]例如,在內容控件的PageLength發生變化時,調用模塊30調用SetPageLength函數對滾動條的PageLength參數進行相應調整;在內容控件的ContentLength發生變化時, 調用模塊30調用SetContentLength函數對滾動條的ContentLength參數進行相應調整, 在內容控件的Pos參數發生變化時,調用模塊30調用SetPos函數對滾動條的Pos參數進行相應調整。
[0093]本實施例通過在顯示內容的顯示參數發生變化時,即在內容控件的參數發生變化時,調用相應的函數更新滾動條的參數,使得內容控件的參數與滾動條的參數同步,進而使得通過滾動條控制顯示內容的操作更加準確,提高顯示內容控制的效率。
[0094]進一步地,所述接發模塊10,還用于接收滾動條控件OnPosChanged回調函數的注冊指令,并根據所述注冊指令注冊OnPosChanged回調函數;
[0095]對滾動條的操作,只能改變滾動條的Pos參數,并不會改變PageLength和 ContentLength參數。通過內容控件監控滾動條的Pos參數的變化。在通過內容控件監控滾動條的Pos參數的變化之前,需要注冊滾動條的OnPosChanged回調函數。接發模塊 10接收滾動條OnPosChanged回調函數的注冊指令,并處理模塊40根據所述注冊指令注冊 OnPosChanged 回調函數。
[0096]所述處理模塊40,還用于在滾動條控件的Pos參數發生變化時,觸發 OnPosChanged事件,通過滾動條控件的GetPos函數獲取滾動條控件的Pos參數,通過所獲取到滾動條控件的Pos參數更新內容控件的Pos參數。
[0097]在由用戶操作導致滾動條的Pos發生變化時,會觸發OnPosChanged事件。處理模塊40可以通過滾動條的GetPos函數來獲取滾動條的Pos參數,并以此更新內容控件的Pos 參數。用戶操作導致滾動條的Pos發生變化的處理時序圖如圖7所示。
[0098]具體的,對于內容控件的顯示內容的顯示參數發生變化可以由基于鼠標的滾輪操作導致。
[0099]鼠標滾輪操作會導致Pos參數的變化。對于內容控件來說,無論鼠標在內容控件區域內,還是在滾動條區域內,滑動鼠標滾輪,都是有效的操作。為了保證統一處理,可以把內容控件的滾輪消息轉發給滾動條統一處理。因此,本發明的滾動條,提供了 OnMouseWheel 函數用于接收內容控件轉發來的MouseWheel消息。當鼠標在滾動條區域時,MouseWheel消息的處理流程如圖8所示;當鼠標在內容控件區域內時,MouseWheel消息的處理流程如圖 9所示。
[0100]本實施例通過在滾動條的Pos參數發生變化時,通過滾動條的GetPos函數來獲取滾動條的Pos參數,進而根據所獲取的滾動條的Pos參數更新內容控件的Pos參數,使得內容控件的參數與滾動條的參數同步,進而使得通過滾動條控制顯示內容的操作更加準確, 提尚顯不內容控制的效率。
[0101]需要說明的是,在本文中,術語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者裝置不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者裝置所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括該要素的過程、方法、物品或者裝置中還存在另外的相同要素。
[0102]上述本發明實施例序號僅僅為了描述,不代表實施例的優劣。
[0103]通過以上的實施方式的描述,本領域的技術人員可以清楚地了解到上述實施例方法可借助軟件加必需的通用硬件平臺的方式來實現,當然也可以通過硬件,但很多情況下前者是更佳的實施方式。基于這樣的理解,本發明的技術方案本質上或者說對現有技術做出貢獻的部分可以以軟件產品的形式體現出來,該計算機軟件產品存儲在一個存儲介質 (如R0M/RAM、磁碟、光盤)中,包括若干指令用以使得一臺終端設備(可以是手機,計算機, 服務器,或者網絡設備等)執行本發明各個實施例所述的方法。
【主權項】
1.一種自繪控件實現方法,其特征在于,包括步驟:接收顯示內容控制操作;在所述顯示內容的內容控件為Windows窗口內容控件時,通過所述內容控件的父窗口 將所述控制操作轉發至滾動條控件,以使所述滾動條控件根據所述控制操作完成顯示內容 的控制響應操作。2.如權利要求1所述的自繪控件實現方法,其特征在于,所述接收顯示內容控制操作 的步驟之前,還包括:接收內容控件的參數設置指令;根據所述內容控件的參數設置指令設置顯示內容的參數。3.如權利要求2所述的自繪控件實現方法,其特征在于,所述根據所述內容控件的參 數設置指令設置顯示內容的參數的步驟之后,還包括:通過調用函數將為內容控件設置的參數發送給滾動條控件,以使滾動條控件設置與所 述內容控件相應的參數。4.如權利要求3所述的自繪控件實現方法,其特征在于,所述通過調用函數將為內容 控件設置的參數發送給滾動條控件的步驟之后,還包括:在偵測到顯示內容的顯示參數發生變化時,確定與所述發生變化的相應參數對應的滾 動條控件的函數;調用所確定的函數對滾動條控件的參數進行更新。5.如權利要求3或4所述的自繪控件實現方法,其特征在于,所述方法還包括:接收滾動條控件OnPosChanged回調函數的注冊指令,并根據所述注冊指令注冊 OnPosChanged 回調函數;在滾動條控件的P〇s參數發生變化時,觸發OnPosChanged事件,通過滾動條控件的 GetPos函數獲取滾動條控件的Pos參數,通過所獲取到滾動條控件的Pos參數更新內容控 件的Pos參數。6.—種自繪控件實現裝置,其特征在于,包括:接發模塊,用于接收顯示內容控制操作;處理模塊,用于在所述顯示內容的內容控件為Windows窗口內容控件時,通過所述內 容控件的父窗口將所述控制操作轉發至滾動條控件,以使所述滾動條控件根據所述控制操 作完成顯示內容的控制響應操作。7.如權利要求6所述的自繪控件實現裝置,其特征在于,所述自繪控件實現裝置還包 括設置模塊,所述接發模塊,還用于接收內容控件的參數設置指令;設置模塊,用于根據所述內容控件的參數設置指令設置顯示內容的參數。8.如權利要求7所述的自繪控件實現裝置,其特征在于,所述自繪控件實現裝置還包 括調用模塊,用于通過調用函數將為內容控件設置的參數發送給滾動條控件,以使滾動條 控件設置與所述內容控件相應的參數。9.如權利要求8所述的自繪控件實現裝置,其特征在于,所述處理模塊,還用于在偵測 到顯示內容的顯示參數發生變化時,確定與所述發生變化的相應參數對應的滾動條控件的 函數;所述調用模塊,還用于調用所確定的函數對滾動條控件的參數進行更新。10.如權利要求8或9所述的自繪控件實現裝置,其特征在于,所述接發模塊,還 用于接收滾動條控件OnPosChanged回調函數的注冊指令,并根據所述注冊指令注冊 OnPosChanged 回調函數;所述處理模塊,還用于在滾動條控件的P〇s參數發生變化時,觸發OnPosChanged事件, 通過滾動條控件的GetPos函數獲取滾動條控件的Pos參數,通過所獲取到滾動條控件的 Pos參數更新內容控件的Pos參數。
【文檔編號】G06F9/44GK106033343SQ201510115540
【公開日】2016年10月19日
【申請日】2015年3月16日
【發明人】李斌
【申請人】騰訊科技(深圳)有限公司