應用程序中窗口的控制方法和裝置的制造方法
【專利摘要】本申請公開了一種應用程序中窗口的控制方法。該方法包括創(chuàng)建所述應用程序中父窗口對應的子窗口時,創(chuàng)建所述子窗口對應的代理窗口,設置所述子窗口的父窗口屬性為所述代理窗口,設置所述代理窗口的父窗口屬性為所述父窗口;所述代理窗口所在的線程通過異步消息與所述子窗口所在的線程通信;所述代理窗口所在線程檢測所述子窗口的狀態(tài);當確定所述子窗口處于無響應狀態(tài)時,將所述代理窗口的父窗口屬性設置為無父窗口;通過移除所述代理窗口,將所述子窗口從當前顯示界面移除。應用本申請實施例,能夠及時地處理處于無響應狀態(tài)的子窗口,并且避免處于無響應狀態(tài)的子窗口所在的進程被殺死,減少系統(tǒng)資源的浪費。
【專利說明】
應用程序中窗口的控制方法和裝置
技術領域
[0001]本發(fā)明涉及計算機技術領域,尤其涉及一種應用程序中窗口的控制方法和裝置。
【背景技術】
[0002]在windows操作系統(tǒng)中,窗口是用戶界面的重要組成部分。當用戶開始運行一個應用程序時,應用程序創(chuàng)建并顯示一個窗口。當用戶操作窗口中的對象時,應用程序會做出相應的反應。在應用程序運行的過程中,多個窗口會被創(chuàng)建。不同窗口之間的關聯(lián)包括父子關系,擁有和被擁有的關系等。Windows操作系統(tǒng)會根據(jù)窗口之間的關聯(lián)來管理窗口。
【發(fā)明內容】
[0003]本發(fā)明實施例提供了一種應用程序中窗口的控制方法和裝置,能夠及時地處理處于無響應狀態(tài)的子窗口,并且避免處于無響應狀態(tài)的子窗口所在的進程被殺死,減少系統(tǒng)資源的浪費。
[0004]本發(fā)明實施例的技術方案是這樣實現(xiàn)的:
[0005]—種應用程序中窗口的控制方法,包括:
[0006]創(chuàng)建所述應用程序中父窗口對應的子窗口時,創(chuàng)建所述子窗口對應的代理窗口,設置所述子窗口的父窗口屬性為所述代理窗口,設置所述代理窗口的父窗口屬性為所述父窗口 ;所述代理窗口所在的線程通過異步消息與所述子窗口所在的線程通信;
[0007]所述代理窗口所在線程檢測所述子窗口的狀態(tài);
[0008]當確定所述子窗口處于無響應狀態(tài)時,將所述代理窗口的父窗口屬性設置為無父窗口;通過移除所述代理窗口,將所述子窗口從當前顯示界面移除。
[0009]—種應用程序中窗口的控制裝置,包括:
[0010]管理模塊,用于在創(chuàng)建所述應用程序中父窗口對應的子窗口時,創(chuàng)建所述子窗口對應的代理窗口,設置所述子窗口的父窗口屬性為所述代理窗口,設置所述代理窗口的父窗口屬性為所述父窗口 ;所述代理窗口所在的線程通過異步消息與所述子窗口所在的線程通信;
[0011 ]檢測模塊,用于通過所述代理窗口所在線程檢測所述子窗口的狀態(tài);
[0012]移除模塊,用于當所述檢測模塊確定所述子窗口處于無響應狀態(tài)時,將所述代理窗口的父窗口屬性設置為無父窗口 ;通過移除所述代理窗口,將所述子窗口從當前顯示界面移除。
[0013]根據(jù)本發(fā)明實施例提供的應用程序中窗口的控制方法和裝置,代理窗口能夠及時發(fā)現(xiàn)子窗口處于無響應狀態(tài),將代理窗口的設置為無父窗口,并通過移除代理窗口,將子窗口從當前顯示界面中移除。由于父窗口與代理窗口不存在父子關系,子窗口的無響應狀態(tài)不會對父窗口的正常運行造成影響,避免父窗口進入無響應狀態(tài)。另外,由于無需直接將處于無響應狀態(tài)的子窗口所在的進程殺死,從而避免了系統(tǒng)進程資源的浪費。
[0014]進一步的,如果子窗口只是暫時處于無響應狀態(tài),一段時間后會恢復正常,通過應用本發(fā)明實施例,能夠在該子窗口恢復正常時,在當前顯示界面中恢復該子窗口,從而有效地避免暫時處于無響應狀態(tài)的子窗口被誤殺,無需重復創(chuàng)建相同的子窗口,節(jié)約了系統(tǒng)資源。
【附圖說明】
[0015]為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術中的技術方案,下面將對實施例或現(xiàn)有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0016]圖1為本發(fā)明一個實施例提供的應用程序中窗口的控制方法的流程圖。
[0017]圖2為本發(fā)明一個實施例提供的應用程序中窗口的控制裝置的結構的示意圖。
[0018]圖3為本發(fā)明一個實施例提供的應用程序中窗口的控制方法的流程圖。
[0019]圖4為本發(fā)明一個實施例中網頁窗口處于正常狀態(tài)時的窗口的結構圖。
[0020]圖5為本發(fā)明一個實施例中網頁窗口處于無響應狀態(tài)時的窗口的結構圖。
[0021]圖6為本發(fā)明一個實施例提供的應用程序中窗口的控制裝置的結構的示意圖。
【具體實施方式】
[0022]下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領域普通技術人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
[0023]本發(fā)明的發(fā)明人在研究過程中發(fā)現(xiàn),為了避免處于無響應狀態(tài)的子窗口導致其父窗口無法進行響應,在現(xiàn)有窗口管理方法中,利用獨立的進程創(chuàng)建子窗口,當該子窗口處于無響應狀態(tài)時,直接將該子窗口所在的進程殺死。通常,在應用程序運行的過程中需要創(chuàng)建的子窗口的數(shù)量較多,如果每個子窗口都利用獨立的進程來創(chuàng)建會導致大量系統(tǒng)進程資源被占用。并且,由于需要維護的進程數(shù)量較多,實現(xiàn)較復雜。另外,如果子窗口只是暫時處于無響應狀態(tài)并且能夠恢復正常的話,由于子窗口所在的進程已經被殺死,該子窗口無法被恢復,需要再次創(chuàng)建該子窗口,導致了系統(tǒng)資源的浪費。
[0024]有鑒于此,本發(fā)明實施例提供了一種應用程序中窗口的控制方法。在該控制方法中,創(chuàng)建應用程序中父窗口對應的子窗口時,創(chuàng)建該子窗口對應的代理窗口,設置該子窗口的父窗口為該代理窗口,設置該代理窗口的父窗口為該父窗口;其中,該代理窗口所在的線程通過異步消息與該子窗口所在的線程通信;該代理窗口所在線程檢測所述子窗口的狀態(tài);當確定該子窗口處于無響應狀態(tài)時,將該代理窗口設置為無父窗口 ;通過移除該代理窗口,將該子窗口從當前顯示界面移除。
[0025]圖1為本發(fā)明實施例提供的一種應用程序中窗口的控制方法的流程圖。如圖1所示,該方法包括如下步驟。
[0026]步驟11,創(chuàng)建應用程序中父窗口對應的子窗口時,創(chuàng)建該子窗口對應的代理窗口;設置該子窗口的父窗口屬性為該代理窗口,設置該代理窗口的父窗口屬性為該父窗口 ;該代理窗口所在的線程通過異步消息與該子窗口所在的線程通信。
[0027]在本發(fā)明實施例中,創(chuàng)建了應用程序中的父窗口之后,在需要創(chuàng)建該父窗口對應的子窗口時,不僅創(chuàng)建子窗口,還創(chuàng)建子窗口對應的代理窗口。將子窗口的父窗口屬性設置為代理窗口,并將代理窗口的父窗口屬性設置為該父窗口。
[0028]在本發(fā)明實施例中,代理窗口與子窗口位于不同的線程,代理窗口所在的線程通過異步消息與該子窗口所在的線程通信。另外,根據(jù)不同需要,代理窗口所在的線程與父窗口所在的線程可以相同也可以不同。在子窗口處于正常狀態(tài)時,父窗口所在的線程也通過異步消息與該子窗口所在的線程通信。
[0029]另外,在窗口的顯示控制中,通常子窗口疊加在父窗口之上。在本發(fā)明實施例中,該父窗口、代理窗口和子窗口的疊加順序為該父窗口位于最底層,代理窗口位于中間層,子窗口位于最上層。
[0030]步驟12,代理窗口所在線程檢測該子窗口的狀態(tài)。
[0031]在本步驟中,代理窗口所在線程確定是否在預定時長內收到了子窗口發(fā)送的消息。當在預定時長內收到子窗口發(fā)送的消息,則確定該子窗口處于正常狀態(tài),當在預定時長內未收到子窗口發(fā)送的消息,則確定該子窗口處于無響應狀態(tài)。在本發(fā)明一個實施例中,子窗口發(fā)送的消息可以是心跳消息。
[0032]在本發(fā)明一個實施例中,當代理窗口所在線程在預定時長內未收到子窗口發(fā)送的心跳消息時,代理窗口所在線程還可以進一步發(fā)送同步消息給子窗口,當未收到該同步消息的反饋時,確認子窗口處于無響應狀態(tài)。
[0033]在本發(fā)明實施例中,代理窗口所在的線程主要用于檢測子窗口的狀態(tài),對子窗口的其它控制操作可以由該子窗口的父窗口所在的線程進行。例如,當父窗口的大小改變時,父窗口所在線程通過發(fā)送異步消息調整子窗口的大小。
[0034]步驟13,當確定子窗口處于無響應狀態(tài)時,將代理窗口的父窗口屬性設置為無父窗口 ;通過移除代理窗口,將子窗口從當前顯示界面移除。
[0035]在本步驟中,當確定子窗口處于無響應狀態(tài)時,代理窗口的父窗口屬性設置為無父窗口,即代理窗口和該父窗口之間不再具有父子關系,從而使該父窗口不會受到處于無響應狀態(tài)的子窗口的影響。另外,通過將子窗口從當前顯示界面移除,用戶無法針對該子窗口進行操作,避免了子窗口的無響應狀態(tài)的加劇。
[0036]在本步驟中,由于代理窗口與子窗口之間是父子關系,通過移除代理窗口的操作,可以同時將代理窗口和子窗口從當前顯示界面移除。在本發(fā)明實施例中,移除代理窗口的方式可以是將代理窗口隱藏,或者將代理窗口移動到當前顯示界面的之外。
[0037]在本發(fā)明實施例中,當確定子窗口處于無響應狀態(tài)時,除了上述步驟13所述的操作,代理窗口所在線程還可以進一步在該子窗口所在的位置創(chuàng)建偽(ghost)窗口,并在偽窗口中顯示該子窗口處于無響應狀態(tài)時的圖像,從而避免了在代理窗口和子窗口被移除后,由于沒有子窗口內容的疊加造成的子窗口原來所在位置顯示空白內容,從而為用戶提供更好的瀏覽窗口內容的體驗。如果用戶針對該偽窗口的操作次數(shù)超過預定閾值,可以向用戶顯示該子窗口無響應的提示信息,避免用戶繼續(xù)針對偽窗口進行操作。
[0038]可見,根據(jù)本發(fā)明實施例提供的應用程序中窗口的控制方法,代理窗口能夠及時發(fā)現(xiàn)子窗口處于無響應狀態(tài),將代理窗口的設置為無父窗口,并通過移除代理窗口,將子窗口從當前顯示界面中移除。由于父窗口與代理窗口不存在父子關系,子窗口的無響應狀態(tài)不會對父窗口的正常運行造成影響,避免父窗口進入無響應狀態(tài)。另外,由于無需直接將處于無響應狀態(tài)的子窗口所在的進程殺死,從而避免了系統(tǒng)進程資源的浪費。
[0039]在本發(fā)明實施例中,該方法還可以進一步包括如下步驟。
[0040]步驟14,當確定子窗口在預定時長內恢復到正常狀態(tài)時,將代理窗口的父窗口屬性設置為該父窗口;通過恢復代理窗口,在當前顯示界面中恢復該子窗口。
[0041 ]在本步驟中,由于代理窗口與子窗口之間是父子關系,通過恢復代理窗口的操作,可以在當前顯示界面中同時恢復代理窗口和子窗口。在本發(fā)明實施例中,根據(jù)移除代理窗口方式的不同,恢復代理窗口的方式可以是顯示代理窗口,或者將代理窗口移動到當前顯示界面的之內。
[0042]在本發(fā)明實施例中,如果在子窗口處于無響應狀態(tài)時創(chuàng)建了偽窗口,則在本步驟中,當確定該子窗口在預定時長內恢復到正常狀態(tài)時,銷毀該偽窗口。
[0043]在本發(fā)明實施例中,如果代理窗口和子窗口位于不同的進程,當該子窗口在預定時長內未恢復到正常狀態(tài)時,刪除該子窗口所在的進程。
[0044]可見,根據(jù)本發(fā)明實施例提供的應用程序中窗口的控制方法,如果子窗口只是暫時處于無響應狀態(tài),一段時間后會恢復正常,通過應用本發(fā)明實施例,能夠在該子窗口恢復正常時,在當前顯示界面中恢復該子窗口,從而有效地避免暫時處于無響應狀態(tài)的子窗口被誤殺,無需重復創(chuàng)建相同的子窗口,節(jié)約了系統(tǒng)資源。
[0045]圖2是本發(fā)明一個實施例中應用程序中窗口的控制裝置的結構示意圖。如圖2所示,該應用程序中窗口的控制裝置200包括處理器210、非易失性計算機可讀存儲器220和接口 230。這些組件通過總線240進行通信。處理器210可以通過接口 230獲取用戶針對窗口的操作,通過讀取存儲器220中的程序模塊來實現(xiàn)本發(fā)明實施例提供的方案。
[0046]在本發(fā)明一個實施例中,存儲在存儲器220中的程序模塊包括管理模塊601,檢測模塊602,移除模塊603。本文后續(xù)會對模塊601?603的具體功能和工作原理做詳述。
[0047]處理器210可以通過執(zhí)行存儲在存儲器220中的程序模塊,在創(chuàng)建應用程序中父窗口對應的子窗口時,創(chuàng)建子窗口對應的代理窗口,設置子窗口的父窗口屬性為代理窗口,設置代理窗口的父窗口屬性為父窗口 ;代理窗口所在的線程通過異步消息與子窗口所在的線程通信;代理窗口所在線程檢測子窗口的狀態(tài);當確定子窗口處于無響應狀態(tài)時,將代理窗口的父窗口屬性設置為無父窗口 ;通過移除代理窗口,將子窗口從當前顯示界面移除。
[0048]下面以瀏覽器為例,對本發(fā)明實施例提供的應用程序中窗口的控制方法進行說明。
[0049]圖3為本發(fā)明一個實施例提供的應用程序中窗口的控制方法的流程圖。在本實施例中,應用程序為瀏覽器,父窗口為瀏覽器的主窗口,也稱為框架主窗口,子窗口主窗口中的至少一個網頁窗口。
[0050]步驟31,在主窗口中創(chuàng)建網頁窗口的同時,創(chuàng)建網頁窗口對應的代理窗口,設置網頁窗口的父窗口屬性為代理窗口,設置代理窗口的父窗口屬性為主窗口 ;代理窗口所在的線程通過異步消息與網頁窗口所在的線程通信。
[0051 ] 在本發(fā)明實施例中,如圖4所示,通過網頁線程I創(chuàng)建網頁窗口 1,通過網頁線程2創(chuàng)建網頁窗口2。通過主線程創(chuàng)建主窗口和與網頁窗口 I和網頁窗口 2分別對應的代理窗口 I和代理窗口 2。主窗口和代理窗口,以及代理窗口和網頁窗口之間的父子關系用箭頭表示。主線程與網頁線程之間使用異步消息進行通信。例如,主線程在設置網頁窗口 I狀態(tài)時,不直接調用Win32API,而是向網頁線程發(fā)送異步消息,網頁線程根據(jù)收到的消息設置網頁窗口 I的狀態(tài)。又例如,當主窗口大小改變時,主線程向網頁線程發(fā)送異步消息,網頁線程根據(jù)收到的調整網頁窗口 I和網頁窗口 2的大小。
[0052]在本發(fā)明實施例中,位于最底層的主窗口的大小與瀏覽器的顯示界面相同,除了為網頁窗口預留的位置之外,還包括地址欄,工具欄等。位于中間層的代理窗口的大小與和位于最上層的網頁窗口的大小相同。
[0053]步驟32,主線程檢測網頁窗口 I和網頁窗口2的狀態(tài)。
[0054]在本步驟中,主線程確定是否在預定時長內接收到網頁窗口I和網頁窗口 2發(fā)送的心跳消息。在本發(fā)明實施例中,該預定時長可以根據(jù)實際需要設置,例如該預定時長可以設置為3秒,則在本步驟中,如果主線程在3秒內沒有收到網頁窗口 2發(fā)送的心跳消息,則確定該網頁窗口 2處于無響應狀態(tài),執(zhí)行步驟33。
[0055]步驟33,當確定網頁窗口 2處于無響應狀態(tài)時,將代理窗口 2的父窗口屬性設置為無父窗口,將代理窗口 2移動到當前顯示界面之外,在網頁窗口 2所在的位置創(chuàng)建偽窗口,并在偽窗口中顯示網頁窗口 2處于無響應狀態(tài)時的圖像。
[0056]在本發(fā)明實施例中,如圖5所示,將代理窗口2的父窗口屬性從主窗口修改為空缺(NULL),同時根據(jù)windows操作系統(tǒng)的窗口規(guī)則,將代理窗口的窗口屬性由WS_CHILD改為WS_P0PUP,從而使主窗口脫離和代理窗口 2之間聯(lián)系,避免主窗口受到代理窗口和網頁窗口的影響。
[0057]在本步驟中,主線程將代理窗口2移動到當前顯示界面之外,例如將代理窗口 2移動的距離設置為較大的值,使代理窗口 2移出顯示屏幕。由于代理窗口 2是網頁窗口 2的父窗口,網頁窗口 2隨著代理窗口 2同時移出顯示屏幕。同時,主線程在網頁窗口 2所在的位置創(chuàng)建偽窗口,其中偽窗口的父窗口屬性為主窗口。主線程截取網頁窗口2處于無響應狀態(tài)時的圖像,例如位圖文件(bitmap),將該bitmap繪制到偽窗口中。經過上述處理,在網頁窗口2無法響應之后,對于用戶來說,顯示界面顯示的內容是不變的,不影響用戶瀏覽網頁窗口的內容。但是由于偽窗口中只是進行了圖片顯示,不會對用戶的操作做出任何反應,因此用戶的操作也就不會對網頁窗口造成影響,避免了用戶的操作使網頁窗口2的無響應狀態(tài)加劇。
[0058]另外,在本發(fā)明實施例中,為了避免用戶頻繁針對偽窗口進行無效操作,當接收到的用戶針對偽窗口的操作的次數(shù)超過預定閾值時,向用戶顯示網頁窗口2無響應的提示信息。例如,當用戶針對偽窗口的操作超過3次后,向用戶顯示提示信息“當前窗口無響應,請稍候” O
[0059]步驟34,當確定網頁窗口2在預定時長內恢復到正常狀態(tài)時,將代理窗口 2的父窗口屬性設置為主窗口,主線程將代理窗口 2移動到偽窗口所在位置,并銷毀偽窗口。
[0060]在本發(fā)明實施例中,該預定時長可以根據(jù)需要設置,例如設置為10秒。主線程在確定網頁窗口 2處于無響應狀態(tài)之后,如果在10秒內再次收到了網頁窗口 2的心跳消息,則確定網頁窗口 2在預定時長內恢復到正常狀態(tài)。主線程將代理窗口 2的父窗口屬性從NULL修改為主窗口,以及將代理窗口 2的屬性由WS_P0PUP改為WS_CHILD。
[0061 ]在本步驟中,主線程將代理窗口 2移動到偽窗口所在位置,同時銷毀偽窗口。相應地,網頁窗口 2作為代理窗口 2的子窗口也移動到原位置,進行正常顯示。
[0062]步驟35,當網頁窗口2在預定時長內未恢復到正常狀態(tài)時,刪除網頁窗口 2所在的進程。
[0063]在本發(fā)明實施例中,如果網頁窗口2在預定時長內未恢復到正常狀態(tài),可以不對該網頁窗口 2所在線程進行處理。如果網頁窗口 2和代理窗口 2位于不同進程,可以直接刪除該網頁窗口 2所在進程,釋放系統(tǒng)資源。
[0064]在本實施例中,網頁窗口2和代理窗口2位于不同進程,如果網頁窗口2在10秒內未恢復到正常狀態(tài),將網頁窗口 2所在的進程刪除。
[0065]從上述實施例可以看出,在網頁窗口處于無響應狀態(tài)后,父窗口的狀態(tài)不會受到影響。并且由于無需直接將處于無響應狀態(tài)的子窗口所在的進程殺死,從而避免了系統(tǒng)進程資源的浪費。進一步的,如果子窗口只是暫時處于無響應狀態(tài),通過應用本發(fā)明實施例,能夠在該子窗口恢復正常時,在當前顯示界面中恢復該子窗口,從而有效地避免暫時處于無響應狀態(tài)的子窗口被誤殺,無需重復創(chuàng)建相同的子窗口,節(jié)約了系統(tǒng)資源。
[0066]圖6為本發(fā)明一個實施例提供的應用程序中窗口的控制裝置的結構的示意圖。如圖6所述,該應用程序中窗口的控制裝置600包括管理模塊601,檢測模塊602,移除模塊603。
[0067]管理模塊601用于在創(chuàng)建應用程序中父窗口對應的子窗口時,創(chuàng)建子窗口對應的代理窗口,設置子窗口的父窗口屬性為代理窗口,設置代理窗口的父窗口屬性為父窗口 ;代理窗口所在的線程通過異步消息與子窗口所在的線程通信。
[0068]檢測模塊602用于通過代理窗口所在線程檢測子窗口的狀態(tài)。
[0069]移除模塊603用于當檢測模塊確定子窗口處于無響應狀態(tài)時,將代理窗口的父窗口屬性設置為無父窗口;通過移除代理窗口,將子窗口從當前顯示界面移除。
[0070]在本發(fā)明一個實施例中,該管理模塊601進一步用于當檢測模塊602確定子窗口在預定時長內恢復到正常狀態(tài)時,將代理窗口的父窗口屬性設置為父窗口 ;通過恢復代理窗口,在當前顯示界面中恢復子窗口。
[0071]在本發(fā)明一個實施例中,管理模塊601進一步用于當檢測模塊602確定子窗口處于無響應狀態(tài)時,在子窗口所在的位置創(chuàng)建偽窗口,并在偽窗口中顯示子窗口處于無響應狀態(tài)時的圖像;當確定子窗口在預定時長內恢復到正常狀態(tài)時,銷毀偽窗口。
[0072]在本發(fā)明一個實施例中,管理模塊601進一步用于當接收到的用戶針對偽窗口的操作的次數(shù)超過預定閾值時,向用戶顯示子窗口無響應的提示信息。
[0073]在本發(fā)明一個實施例中,檢測模塊602利用代理窗口所在的線程,通過確定是否在預定時長內接收到子窗口發(fā)送的心跳消息檢測子窗口的狀態(tài)。
[0074]在本發(fā)明一個實施例中,代理窗口和子窗口位于不同的進程,管理模塊601進一步用于當子窗口在預定時長內未恢復到正常狀態(tài)時,刪除子窗口所在的進程。
[0075]根據(jù)本發(fā)明實施例提供的應用程序中窗口的控制裝置,在網頁窗口處于無響應狀態(tài)后,父窗口的狀態(tài)不會受到影響。并且由于無需直接將處于無響應狀態(tài)的子窗口所在的進程殺死,從而避免了系統(tǒng)進程資源的浪費。進一步的,如果子窗口只是暫時處于無響應狀態(tài),通過應用本發(fā)明實施例,能夠在該子窗口恢復正常時,在當前顯示界面中恢復該子窗口,從而有效地避免暫時處于無響應狀態(tài)的子窗口被誤殺,無需重復創(chuàng)建相同的子窗口,節(jié)約了系統(tǒng)資源。
[0076]上述實施例提供的控制方法和控制裝置實施例屬于同一構思,其具體實現(xiàn)過程詳見方法實施例,這里不再贅述。
[0077]另外,在本發(fā)明各個實施例中的各功能模塊可以集成在一個處理單元中,也可以是各個模塊單獨物理存在,也可以兩個或兩個以上模塊集成在一個單元中。上述集成的單元既可以采用硬件的形式實現(xiàn),也可以采用軟件功能單元的形式實現(xiàn)。
[0078]另外,本發(fā)明的每一個實施例可以通過由數(shù)據(jù)處理設備如計算機執(zhí)行的數(shù)據(jù)處理程序來實現(xiàn)。顯然,數(shù)據(jù)處理程序構成了本發(fā)明。此外,通常存儲在一個存儲介質中的數(shù)據(jù)處理程序通過直接將程序讀取出存儲介質或者通過將程序安裝或復制到數(shù)據(jù)處理設備的存儲設備(如硬盤和/或內存)中執(zhí)行。因此,這樣的存儲介質也構成了本發(fā)明。存儲介質可以使用任何類型的記錄方式,例如紙張存儲介質(如紙帶等)、磁存儲介質(如軟盤、硬盤、閃存等)、光存儲介質(如CD-ROM等)、磁光存儲介質(如MO等)等。
[0079]因此本發(fā)明還提供了一種存儲介質,其中存儲有數(shù)據(jù)處理程序,該數(shù)據(jù)處理程序用于執(zhí)行本發(fā)明上述方法的任何一種實施例。
[0080]本領域普通技術人員可以理解實現(xiàn)上述實施例的全部或部分步驟可以通過硬件來完成,也可以通過程序來指令相關的硬件完成,所述的程序可以存儲于一種計算機可讀存儲介質中,上述提到的存儲介質可以是只讀存儲器,磁盤或光盤等。
[0081]以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內,所做的任何修改、等同替換、改進等,均應包含在本發(fā)明保護的范圍之內。
【主權項】
1.一種應用程序中窗口的控制方法,其特征在于,所述方法包括: 創(chuàng)建所述應用程序中父窗口對應的子窗口時,創(chuàng)建所述子窗口對應的代理窗口,設置所述子窗口的父窗口屬性為所述代理窗口,設置所述代理窗口的父窗口屬性為所述父窗口 ;所述代理窗口所在的線程通過異步消息與所述子窗口所在的線程通信; 所述代理窗口所在線程檢測所述子窗口的狀態(tài); 當確定所述子窗口處于無響應狀態(tài)時,將所述代理窗口的父窗口屬性設置為無父窗口 ;通過移除所述代理窗口,將所述子窗口從當前顯示界面移除。2.根據(jù)權利要求1所述的方法,其特征在于,進一步包括: 當確定所述子窗口在預定時長內恢復到正常狀態(tài)時,將所述代理窗口的父窗口屬性設置為所述父窗口;通過恢復所述代理窗口,在所述當前顯示界面中恢復所述子窗口。3.根據(jù)權利要求1所述的方法,其特征在于,進一步包括: 當確定所述子窗口處于無響應狀態(tài)時,在所述子窗口所在的位置創(chuàng)建偽窗口,并在所述偽窗口中顯示所述子窗口處于無響應狀態(tài)時的圖像; 當確定所述子窗口在預定時長內恢復到正常狀態(tài)時,銷毀所述偽窗口。4.根據(jù)權利要求3所述的方法,其特征在于,所述在所述偽窗口中顯示所述子窗口處于無響應狀態(tài)時的圖像包括:截取所述子窗口處于無響應狀態(tài)時的圖像;將所述截取的圖像繪制到所述偽窗口。5.根據(jù)權利要求3所述的方法,其特征在于,進一步包括: 當接收到的用戶針對所述偽窗口的操作的次數(shù)超過預定閾值時,向所述用戶顯示所述子窗口無響應的提示信息。6.根據(jù)權利要求1所述的方法,其特征在于,所述代理窗口所在線程檢測所述子窗口的狀態(tài)包括: 所述代理窗口所在的線程確定是否在預定時長內接收到所述子窗口發(fā)送的心跳消息。7.根據(jù)權利要求1所述的方法,其特征在于,所述代理窗口和所述子窗口位于不同的進程;所述方法進一步包括: 當所述子窗口在預定時長內未恢復到正常狀態(tài)時,刪除所述子窗口所在的進程。8.一種應用程序中窗口的控制裝置,其特征在于,所述裝置包括: 管理模塊,用于在創(chuàng)建所述應用程序中父窗口對應的子窗口時,創(chuàng)建所述子窗口對應的代理窗口,設置所述子窗口的父窗口屬性為所述代理窗口,設置所述代理窗口的父窗口屬性為所述父窗口;所述代理窗口所在的線程通過異步消息與所述子窗口所在的線程通?目; 檢測模塊,用于通過所述代理窗口所在線程檢測所述子窗口的狀態(tài); 移除模塊,用于當所述檢測模塊確定所述子窗口處于無響應狀態(tài)時,將所述代理窗口的父窗口屬性設置為無父窗口 ;通過移除所述代理窗口,將所述子窗口從當前顯示界面移除。9.如權利要求8所述的控制裝置,其特征在于,所述管理模塊進一步用于當所述檢測模塊確定所述子窗口在預定時長內恢復到正常狀態(tài)時,將所述代理窗口的父窗口屬性設置為所述父窗口 ;通過恢復所述代理窗口,在所述當前顯示界面中恢復所述子窗口。10.如權利要求8所述的控制裝置,其特征在于,所述管理模塊進一步用于當所述檢測模塊確定所述子窗口處于無響應狀態(tài)時,在所述子窗口所在的位置創(chuàng)建偽窗口,并在所述偽窗口中顯示所述子窗口處于無響應狀態(tài)時的圖像;當確定所述子窗口在預定時長內恢復到正常狀態(tài)時,銷毀所述偽窗口。11.如權利要求10所述的控制裝置,其特征在于,所述管理模塊進一步用于當接收到的用戶針對所述偽窗口的操作的次數(shù)超過預定閾值時,向所述用戶顯示所述子窗口無響應的提不?目息。12.如權利要求8所述的控制裝置,其特征在于,所述檢測模塊利用所述代理窗口所在的線程,通過確定是否在預定時長內接收到所述子窗口發(fā)送的心跳消息檢測所述子窗口的狀態(tài)。13.如權利要求8所述的控制裝置,其特征在于,所述代理窗口和所述子窗口位于不同的進程;所述管理模塊進一步用于當所述子窗口在預定時長內未恢復到正常狀態(tài)時,刪除所述子窗口所在的進程。
【文檔編號】G06F3/0484GK105892817SQ201610201181
【公開日】2016年8月24日
【申請日】2016年4月1日
【發(fā)明人】尚子峰
【申請人】騰訊科技(深圳)有限公司