專利名稱:一種應(yīng)用程序窗口的控制方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明的實(shí)施方式涉及應(yīng)用程序窗口領(lǐng)域,更具體地,本發(fā)明的實(shí)施方式涉及一種應(yīng)用程序窗口的控制方法及裝置。
背景技術(shù):
本部分旨在為權(quán)利要求書中陳述的本發(fā)明的實(shí)施方式提供背景或上下文。此處的描述可包括可以探究的概念,但不一定是之前已經(jīng)想到或者已經(jīng)探究的概念。因此,除非在此指出,否則在本部分中描述的內(nèi)容對(duì)于本申請(qǐng)的說(shuō)明書和權(quán)利要求書而言不是現(xiàn)有技術(shù),并且并不因?yàn)榘ㄔ诒静糠种芯统姓J(rèn)是現(xiàn)有技術(shù)。應(yīng)用程序在運(yùn)行過(guò)程中,其功能邏輯計(jì)算和窗口的畫面更新等將占用一定CPU、內(nèi)存、顯存等系統(tǒng)資源。在某些應(yīng)用場(chǎng)景下,用戶可能會(huì)有多個(gè)應(yīng)用程序同時(shí)運(yùn)行的需求。例如,網(wǎng)絡(luò)游戲應(yīng)用場(chǎng)景,玩家可能常常需要同時(shí)打開多個(gè)游戲客戶端。在這種情況下,其功能邏輯計(jì)算和窗口的畫面更新可能會(huì)占滿系統(tǒng)資源導(dǎo)致客戶端無(wú)法順暢的運(yùn)行。
發(fā)明內(nèi)容
分析用戶在多個(gè)應(yīng)用程序同時(shí)運(yùn)行時(shí)的行為,在任意時(shí)刻,用戶的關(guān)注焦點(diǎn)往往只是當(dāng)前正在被操作的應(yīng)用程序的窗口,而其他非焦點(diǎn)應(yīng)用程序的窗口的畫面很少被用戶所關(guān)注。然而,恰恰是這些非焦點(diǎn)應(yīng)用程序的窗口畫面的更新,消耗了大量的系統(tǒng)資源。但是,由于缺乏對(duì)運(yùn)行的多個(gè)應(yīng)用程序的窗口及其畫面更新的統(tǒng)一控制,現(xiàn)有技術(shù)無(wú)法解決如何在不影響用戶運(yùn)行多個(gè)應(yīng)用程序的體驗(yàn)的情況下,減少運(yùn)行的多個(gè)應(yīng)用程序的窗口畫面更新對(duì)系統(tǒng)資源占用的問(wèn)題。因此在現(xiàn)有技術(shù)中,運(yùn)行的多個(gè)應(yīng)用程序的窗口畫面更新對(duì)系統(tǒng)資源的占用是非常令人煩惱的問(wèn)題。為此,非常需要一種改進(jìn)的應(yīng)用程序的窗口的控制方法,以實(shí)現(xiàn)在不影響用戶運(yùn)行多個(gè)應(yīng)用程序的體驗(yàn)的情況下,減少運(yùn)行的多個(gè)應(yīng)用程序的窗口畫面更新對(duì)系統(tǒng)資源的占用。在本上下文中,本發(fā)明的實(shí)施方式期望提供一種應(yīng)用程序窗口的控制方法及裝置。在本發(fā)明實(shí)施方式的第一方面中,提供了一種應(yīng)用程序窗口的控制方法,例如,可以包括:將運(yùn)行的至少兩個(gè)應(yīng)用程序的相應(yīng)窗口以子窗口的形式掛接于同一主窗口的不同標(biāo)簽頁(yè)中;對(duì)所述主窗口的標(biāo)簽切換操作進(jìn)行監(jiān)測(cè);如果監(jiān)測(cè)到標(biāo)簽切換操作,隱藏標(biāo)簽切換操作前處于顯示狀態(tài)的子窗口,且停止該子窗口中運(yùn)行的應(yīng)用程序的窗口畫面更新操作;以及,
顯示切換到的子窗口,且開啟該子窗口中運(yùn)行的應(yīng)用程序的窗口畫面更新操作??蛇x地,所述隱藏標(biāo)簽切換操作前處于顯示狀態(tài)的子窗口,且停止該子窗口中運(yùn)行的應(yīng)用程序的窗口畫面更新操作可以包括:從保存的子窗口信息中,查詢標(biāo)簽切換操作前處于顯示狀態(tài)的子窗口中運(yùn)行的應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程和/或子窗口的ID,該應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程和/或子窗口為第一對(duì)象;根據(jù)該第一對(duì)象ID,向所述第一對(duì)象發(fā)送隱藏窗口且停止窗口畫面更新操作的消息,使切換操作前處于顯示狀態(tài)的子窗口中運(yùn)行的應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程根據(jù)該消息隱藏窗口且停止窗口畫面更新操作;其中所述顯示切換到的子窗口,且開啟該子窗口中運(yùn)行的應(yīng)用程序的窗口畫面更新操作可以包括:從預(yù)先保存的子窗口信息中,查詢切換到的子窗口中運(yùn)行的應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程和/或子窗口的ID,該應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程和/或子窗口為第二對(duì)象;根據(jù)第二對(duì)象ID,向所述第二對(duì)象發(fā)送顯示窗口且開啟窗口畫面更新操作的消息,使切換到的子窗口中運(yùn)行的應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程根據(jù)該消息顯示窗口且開啟窗口畫面更新操作??蛇x地,所述將運(yùn)行的至少兩個(gè)應(yīng)用程序的相應(yīng)窗口以子窗口的形式掛接于同一主窗口的不同標(biāo)簽頁(yè)中具體實(shí)現(xiàn)可以為:如果有應(yīng)用程序運(yùn)行的請(qǐng)求,判斷是否已存在包含標(biāo)簽頁(yè)的主窗口 ;如果不存在,創(chuàng)建包含標(biāo)簽頁(yè)的主窗口 ;執(zhí)行掛接步驟,包括:創(chuàng)建與該應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程以運(yùn)行該應(yīng)用程序,向該應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程發(fā)送設(shè)置該主窗口為父窗口的消息,使該應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程根據(jù)消息設(shè)置該主窗口為父窗口,通過(guò)該設(shè)置使該應(yīng)用程序的窗口以子窗口的形式掛接于該主窗口的空閑標(biāo)簽頁(yè)中,并把該應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程和/或子窗口的ID保存于子窗口信息中;判斷是否還有應(yīng)用程序運(yùn)行的請(qǐng)求,如果有,返回到執(zhí)行掛接步驟。可選地,其中所述判斷是否已存在包含標(biāo)簽頁(yè)的主窗口可以在應(yīng)用程序運(yùn)行的請(qǐng)求并非由主窗口中的控件觸發(fā)時(shí)進(jìn)行判斷??蛇x地,該方法還可以包括:如果有針對(duì)某一子窗口的分離請(qǐng)求,根據(jù)針對(duì)該子窗口的分離請(qǐng)求,確定該子窗口所掛接的源主窗口、請(qǐng)求合并到的目標(biāo)主窗口及該子窗口中運(yùn)行的應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程和/或子窗口的ID;判斷是否存在所述目標(biāo)主窗口,如果不存在,創(chuàng)建包含標(biāo)簽頁(yè)的目標(biāo)主窗口 ;將該子窗口所掛接的標(biāo)簽頁(yè)從所述源主窗口中刪除,同時(shí),根據(jù)進(jìn)程和/或線程和/或子窗口的ID,向該進(jìn)程和/或線程發(fā)送設(shè)置目標(biāo)主窗口為父窗口的消息,使該進(jìn)程和/或線程根據(jù)該消息設(shè)置目標(biāo)主窗口為父窗口,通過(guò)該設(shè)置使該應(yīng)用程序的窗口以子窗口的形式掛接于該目標(biāo)主窗口的空閑標(biāo)簽頁(yè)中??蛇x地,該方法還可以包括:
如果從所述應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程接收到高亮提示的消息,確定該應(yīng)用程序的窗口所掛接的主窗口;判斷該應(yīng)用程序的窗口所掛接的主窗口是否處于激活狀態(tài);如果否,將該應(yīng)用程序的窗口所掛接的主窗口設(shè)置為高亮顯示;判斷該應(yīng)用程序的窗口所掛接的標(biāo)簽頁(yè)是否處于激活狀態(tài);如果否,將該應(yīng)用程序的窗口所掛接的標(biāo)簽頁(yè)的標(biāo)簽設(shè)置為高亮顯示??蛇x地,該方法還可以包括:如果從所述應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程接收到窗口屬性變化的消息,確定該應(yīng)用程序的窗口所掛接的主窗口;對(duì)該主窗口進(jìn)行與所述窗口屬性變化對(duì)應(yīng)的屬性設(shè)置??蛇x地,該方法還可以包括:如果從所述應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程接收到用戶設(shè)置的消息,確定該應(yīng)用程序的窗口所掛接的主窗口;查找出該主窗口中的其他子窗口中運(yùn)行的應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程和/或子窗口的ID ;根據(jù)該主窗口中的其他子窗口中運(yùn)行的應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程和/或子窗口的ID,向所述其他子窗口中運(yùn)行的應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程發(fā)送該用戶設(shè)置的消息,使所述其他子窗口中運(yùn)行的應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程根據(jù)該消息進(jìn)行用戶設(shè)置??蛇x地,所述消息可以通過(guò)主窗口與其中的子窗口之間的緩存消息隊(duì)列進(jìn)行通信;還設(shè)置有超時(shí)參數(shù),當(dāng)所述消息傳輸時(shí)間超過(guò)所述超時(shí)參數(shù)時(shí),根據(jù)預(yù)設(shè)發(fā)送規(guī)貝U,重新發(fā)送所述消息??蛇x地,所述消息為特定消息時(shí),該特定消息可以通過(guò)主窗口與其中的子窗口之間的特定緩存消息隊(duì)列進(jìn)行阻塞式通信??蛇x地,所述消息的格式可以為與消息內(nèi)容對(duì)應(yīng)的特定格式;所述特定格式可以由消息頭標(biāo)識(shí);所述消息在接收后,根據(jù)消息頭標(biāo)識(shí),采用與消息頭標(biāo)識(shí)對(duì)應(yīng)的解析函數(shù)進(jìn)行解析后,獲得消息內(nèi)容。在本發(fā)明實(shí)施方式的第二方面中,提供了一種應(yīng)用程序窗口的控制裝置,例如,可以包括:創(chuàng)建單元:配置用于將運(yùn)行的至少兩個(gè)應(yīng)用程序的相應(yīng)窗口以子窗口的形式掛接于同一主窗口的不同標(biāo)簽頁(yè)中;監(jiān)測(cè)單元:配置用于對(duì)所述主窗口的標(biāo)簽切換操作進(jìn)行監(jiān)測(cè);執(zhí)行單元:配置用于如果監(jiān)測(cè)到標(biāo)簽切換操作,隱藏標(biāo)簽切換操作前處于顯示狀態(tài)的子窗口,且停止該子窗口中運(yùn)行的應(yīng)用程序的窗口畫面更新操作;以及,顯示切換到的子窗口,且開啟該子窗口中運(yùn)行的應(yīng)用程序的窗口畫面更新操作??蛇x地,所述執(zhí)行單元:可以配置用于從保存的子窗口信息中,查詢標(biāo)簽切換操作前處于顯示狀態(tài)的子窗口中運(yùn)行的應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程和/或子窗口的ID,該應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程和/或子窗口為第一對(duì)象;根據(jù)該第一對(duì)象ID,向所述第一對(duì)象發(fā)送隱藏窗口且停止窗口畫面更新操作的消息,使切換操作前處于顯示狀態(tài)的子窗口中運(yùn)行的應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程根據(jù)該消息隱藏窗口且停止窗口畫面更新操作;從預(yù)先保存的子窗口信息中,查詢切換到的子窗口中運(yùn)行的應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程和/或子窗口的ID,該應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程和/或子窗口為第二對(duì)象;根據(jù)第二對(duì)象ID,向所述第二對(duì)象發(fā)送顯示窗口且開啟窗口畫面更新操作的消息,使切換到的子窗口中運(yùn)行的應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程根據(jù)該消息顯示窗口且開啟窗口畫面更新操作??蛇x地,所述創(chuàng)建單元:可以配置用于如果有應(yīng)用程序運(yùn)行的請(qǐng)求,判斷是否已存在包含標(biāo)簽頁(yè)的王窗口 ;如果不存在,創(chuàng)建包含標(biāo)簽頁(yè)的王窗口 ;執(zhí)彳了掛接步驟,包括:創(chuàng)建與該應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程以運(yùn)行該應(yīng)用程序,向該應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程發(fā)送設(shè)置該主窗口為父窗口的消息,使該應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程根據(jù)消息設(shè)置該主窗口為父窗口,通過(guò)該設(shè)置使該應(yīng)用程序的窗口以子窗口的形式掛接于該主窗口的空閑標(biāo)簽頁(yè)中,并把該應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程和/或子窗口的ID保存于子窗口信息中;判斷是否還有應(yīng)用程序運(yùn)行的請(qǐng)求,如果有,返回到執(zhí)行掛接步驟??蛇x地,所述創(chuàng)建單元:可以配置用于在應(yīng)用程序運(yùn)行的請(qǐng)求并非由主窗口中的控件觸發(fā)時(shí),進(jìn)行是否已存在包含標(biāo)簽頁(yè)的主窗口的判斷??蛇x地,該裝置還可以包括:分離合并單元:可以配置用于如果有針對(duì)某一子窗口的分離請(qǐng)求,根據(jù)針對(duì)該子窗口的分離請(qǐng)求,確定該子窗口所掛接的源主窗口、請(qǐng)求合并到的目標(biāo)主窗口及該子窗口中運(yùn)行的應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程和/或子窗口的ID ;判斷是否存在所述目標(biāo)主窗口,如果不存在,創(chuàng)建包含標(biāo)簽頁(yè)的目標(biāo)主窗口 ;將該子窗口所掛接的標(biāo)簽頁(yè)從所述源主窗口中刪除,同時(shí),根據(jù)進(jìn)程和/或線程和/或子窗口的ID,向該進(jìn)程和/或線程發(fā)送設(shè)置目標(biāo)主窗口為父窗口的消息,使該進(jìn)程和/或線程根據(jù)該消息設(shè)置目標(biāo)主窗口為父窗口,通過(guò)該設(shè)置使該應(yīng)用程序的窗口以子窗口的形式掛接于該目標(biāo)主窗口的空閑標(biāo)簽頁(yè)中。可選地,該裝置還可以包括:高亮顯示單元:可以配置用于如果從所述應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程接收到高亮提示的消息,確定該應(yīng)用程序的窗口所掛接的主窗口 ;判斷該應(yīng)用程序的窗口所掛接的主窗口是否處于激活狀態(tài);如果否,將該應(yīng)用程序的窗口所掛接的主窗口設(shè)置為高亮顯示;判斷該應(yīng)用程序的窗口所掛接的標(biāo)簽頁(yè)是否處于激活狀態(tài);如果否,將該應(yīng)用程序的窗口所掛接的標(biāo)簽頁(yè)的標(biāo)簽設(shè)置為聞売顯不??蛇x地,該裝置還可以包括:窗口屬性設(shè)置單元:可以配置用于如果從所述應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程接收到窗口屬性變化的消息,確定該應(yīng)用程序的窗口所掛接的主窗口 ;對(duì)該主窗口進(jìn)行與所述窗口屬性變化對(duì)應(yīng)的屬性設(shè)置??蛇x地,該裝置還可以包括:用戶設(shè)置單元:可以配置用于如果從所述應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程接收到用戶設(shè)置的消息,確定該應(yīng)用程序的窗口所掛接的主窗口 ;查找出該主窗口中的其他子窗口中運(yùn)行的應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程和/或子窗口的ID ;根據(jù)該主窗口的其他子窗口中運(yùn)行的應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程和/或子窗口的ID,向所述其他子窗口中運(yùn)行的應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程發(fā)送該用戶設(shè)置的消息,使所述其他子窗口中運(yùn)行的應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程根據(jù)該消息進(jìn)行用戶設(shè)置。根據(jù)本發(fā)明實(shí)施方式的一種應(yīng)用程序窗口的控制方法及裝置,利用了包含標(biāo)簽頁(yè)的窗口,將運(yùn)行的至少兩個(gè)應(yīng)用程序的相應(yīng)窗口以子窗口的形式掛接于同一主窗口的不同標(biāo)簽頁(yè)中,可以在當(dāng)前時(shí)刻僅顯示正在被操作的應(yīng)用程序的窗口,但是,在當(dāng)前時(shí)刻僅顯示正在被操作的應(yīng)用程序的窗口并不能解決系統(tǒng)資源被大量占用的問(wèn)題,因此,本發(fā)明提出在監(jiān)測(cè)到窗口切換操作時(shí),停止隱藏的窗口中運(yùn)行的應(yīng)用程序的畫面更新操作、開啟顯示的窗口中運(yùn)行的應(yīng)用程序的畫面更新操作,對(duì)于用戶來(lái)說(shuō),由于其僅關(guān)注當(dāng)前正在被操作的應(yīng)用程序的窗口,不會(huì)感覺(jué)到對(duì)隱藏的窗口畫面更新操作停止的變化,達(dá)到了既不影響用戶體驗(yàn),又能夠節(jié)省系統(tǒng)資源的目的;而且,由于節(jié)省了如CPU、GPU (圖形處理器)等系統(tǒng)資源,還為提高處于顯示狀態(tài)的應(yīng)用程序的窗口的畫面效果、更高的顯示分辨率提供了空間。
通過(guò)參考附圖閱讀下文的詳細(xì)描述,本發(fā)明示例性實(shí)施方式的上述以及其他目的、特征和優(yōu)點(diǎn)將變得易于理解。在附圖中,以示例性而非限制性的方式示出了本發(fā)明的若干實(shí)施方式,其中:圖1示意性地示出了適于實(shí)現(xiàn)本發(fā)明實(shí)施方式的示例性計(jì)算系統(tǒng)100的框圖;圖2示意性地示出了現(xiàn)有技術(shù)中運(yùn)行的多個(gè)應(yīng)用程序的窗口示意圖;圖3示意性地示出了本發(fā)明對(duì)運(yùn)行的多個(gè)應(yīng)用程序的窗口統(tǒng)一控制示意圖;圖4示意性地示出了根據(jù)本發(fā)明一實(shí)施例的方法流程圖;圖5示意性地示出了根據(jù)本發(fā)明又一實(shí)施例的消息交互示意圖;圖6示意性地示出了根據(jù)本發(fā)明再一實(shí)施例的消息交互示意圖;圖7示意性地示出了根據(jù)本發(fā)明一實(shí)施例的裝置結(jié)構(gòu)圖;在附圖中,相同或?qū)?yīng)的標(biāo)號(hào)表不相同或?qū)?yīng)的部分。
具體實(shí)施例方式下面將參考若干示例性實(shí)施方式來(lái)描述本發(fā)明的原理和精神。應(yīng)當(dāng)理解,給出這些實(shí)施方式僅僅是為了使本領(lǐng)域技術(shù)人員能夠更好地理解進(jìn)而實(shí)現(xiàn)本發(fā)明,而并非以任何方式限制本發(fā)明的范圍。相反,提供這些實(shí)施方式是為了使本公開更加透徹和完整,并且能夠?qū)⒈竟_的范圍完整地傳達(dá)給本領(lǐng)域的技術(shù)人員。圖1示出了適于實(shí)現(xiàn)本發(fā)明實(shí)施方式的示例性計(jì)算系統(tǒng)100的框圖。如圖1所示,計(jì)算系統(tǒng)100可以包括:中央處理單元(CPU) 101、隨機(jī)存取存儲(chǔ)器(RAM) 102、只讀存儲(chǔ)器(ROM) 103、系統(tǒng)總線104、硬盤控制器105、鍵盤控制器106、串行接口控制器107、并行接口控制器108、顯示控制器109、硬盤110、鍵盤111、串行外部設(shè)備112、并行外部設(shè)備113和顯示器114。這些設(shè)備中,與系統(tǒng)總線104耦合的有CPU 10URAM 102, ROM 103、硬盤控制器105、鍵盤控制器106、串行控制器107、并行控制器108和顯示控制器109。硬盤110與硬盤控制器105耦合,鍵盤111與鍵盤控制器106耦合,串行外部設(shè)備112與串行接口控制器107耦合,并行外部設(shè)備113與并行接口控制器108耦合,以及顯示器114與顯示控制器109耦合。應(yīng)當(dāng)理解,圖1所述的結(jié)構(gòu)框圖僅僅是為了示例的目的,而不是對(duì)本發(fā)明范圍的限制。在某些情況下,可以根據(jù)具體情況增加或減少某些設(shè)備。本領(lǐng)域技術(shù)技術(shù)人員知道,本發(fā)明的實(shí)施方式可以實(shí)現(xiàn)為一種系統(tǒng)、方法或計(jì)算機(jī)程序產(chǎn)品。因此,本公開可以具體實(shí)現(xiàn)為以下形式,即:完全的硬件、完全的軟件(包括固件、駐留軟件、微代碼等),或者硬件和軟件結(jié)合的形式,本文一般稱為“電路”、“模塊”或“系統(tǒng)”。此外,在一些實(shí)施例中,本發(fā)明還可以實(shí)現(xiàn)為在一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì)中的計(jì)算機(jī)程序產(chǎn)品的形式,該計(jì)算機(jī)可讀介質(zhì)中包含計(jì)算機(jī)可讀的程序代碼。可以采用一個(gè)或多個(gè)計(jì)算機(jī)可讀的介質(zhì)的任意組合。計(jì)算機(jī)可讀介質(zhì)可以是計(jì)算機(jī)可讀信號(hào)介質(zhì)或者計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)例如可以是,但不限于,電、磁、光、電磁、紅外線、或半導(dǎo)體的系統(tǒng)、裝置或器件,或者任意以上的組合。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的更具體的例子(非窮舉示例)例如可以包括:具有一個(gè)或多個(gè)導(dǎo)線的電連接、便攜式計(jì)算機(jī)磁盤、硬盤、隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、可擦式可編程只讀存儲(chǔ)器(EPR0M或閃存)、光纖、便攜式緊湊磁盤只讀存儲(chǔ)器(CD-ROM)、光存儲(chǔ)器件、磁存儲(chǔ)器件、或者上述的任意合適的組合。在本文件中,計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可以是任何包含或存儲(chǔ)程序的有形介質(zhì),該程序可以被指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用。計(jì)算機(jī)可讀的信號(hào)介質(zhì)可以包括在基帶中或者作為載波一部分傳播的數(shù)據(jù)信號(hào),其中承載了計(jì)算機(jī)可讀的程序代碼。這種傳播的數(shù)據(jù)信號(hào)可以采用多種形式,包括但不限于電磁信號(hào)、光信號(hào)或上述的任意合適的組合。計(jì)算機(jī)可讀的信號(hào)介質(zhì)還可以是計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)以外的任何計(jì)算機(jī)可讀介質(zhì),該計(jì)算機(jī)可讀介質(zhì)可以發(fā)送、傳播或者傳輸用于由指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用的程序。計(jì)算機(jī)可讀介質(zhì)上包含的程序代碼可以用任何適當(dāng)?shù)慕橘|(zhì)傳輸,包括但不限于無(wú)線、電線、光纜、RF等等,或者上述的任意合適的組合??梢砸砸环N或多種程序設(shè)計(jì)語(yǔ)言或其組合來(lái)編寫用于執(zhí)行本發(fā)明操作的計(jì)算機(jī)程序代碼,所述程序設(shè)計(jì)語(yǔ)言包括面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言一諸如Java、Smalltalk、C++,還包括常規(guī)的過(guò)程式程序設(shè)計(jì)語(yǔ)言一諸如“C”語(yǔ)言或類似的程序設(shè)計(jì)語(yǔ)言。程序代碼可以完全地在用戶計(jì)算機(jī)上執(zhí)行、部分地在用戶計(jì)算機(jī)上執(zhí)行、作為一個(gè)獨(dú)立的軟件包執(zhí)行、部分在用戶計(jì)算機(jī)上部分在遠(yuǎn)程計(jì)算機(jī)上執(zhí)行、或者完全在遠(yuǎn)程計(jì)算機(jī)或服務(wù)器上執(zhí)行。在涉及遠(yuǎn)程計(jì)算機(jī)的情形中,遠(yuǎn)程計(jì)算機(jī)可以通過(guò)任意種類的網(wǎng)絡(luò)(包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN))連接到用戶計(jì)算機(jī),或者,可以連接到外部計(jì)算機(jī)(例如利用因特網(wǎng)服務(wù)提供商來(lái)通過(guò)因特網(wǎng)連接)。下面將參照本發(fā)明實(shí)施例的方法的流程圖和設(shè)備(或系統(tǒng))的框圖描述本發(fā)明的實(shí)施方式。應(yīng)當(dāng)理解,流程圖和/或框圖的每個(gè)方框以及流程圖和/或框圖中各方框的組合都可以由計(jì)算機(jī)程序指令實(shí)現(xiàn)。這些計(jì)算機(jī)程序指令可以提供給通用計(jì)算機(jī)、專用計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置的處理器,從而生產(chǎn)出一種機(jī)器,這些計(jì)算機(jī)程序指令通過(guò)計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置執(zhí)行,產(chǎn)生了實(shí)現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的裝置。也可以把這些計(jì)算機(jī)程序指令存儲(chǔ)在能使得計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置以特定方式工作的計(jì)算機(jī)可讀介質(zhì)中,這樣,存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)中的指令就產(chǎn)生出一個(gè)包括實(shí)現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的指令裝置的產(chǎn)品。也可以把計(jì)算機(jī)程序指令加載到計(jì)算機(jī)、其它可編程數(shù)據(jù)處理裝置、或其它設(shè)備上,使得在計(jì)算機(jī)、其它可編程數(shù)據(jù)處理裝置或其它設(shè)備上執(zhí)行一系列操作步驟,以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的過(guò)程,從而使得在計(jì)算機(jī)或其它可編程裝置上執(zhí)行的指令能夠提供實(shí)現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的過(guò)程。根據(jù)本發(fā)明的實(shí)施方式,提出了一種應(yīng)用程序窗口的控制方法和裝置。在本文中,需要理解的是,附圖中的任何元素?cái)?shù)量均用于示例而非限制,以及任何命名都僅用于區(qū)分,而不具有任何限制含義。下面參考本發(fā)明的若干代表性實(shí)施方式,詳細(xì)闡釋本發(fā)明的原理和精神。發(fā)明概述本發(fā)明人發(fā)現(xiàn),用戶關(guān)注的焦點(diǎn)往往僅是當(dāng)前正在被操作的應(yīng)用程序的窗口,如果利用包含標(biāo)簽頁(yè)的窗口,可以僅顯示當(dāng)前正在被操作的應(yīng)用程序的窗口、隱藏非焦點(diǎn)應(yīng)用程序的窗口,但是包含標(biāo)簽頁(yè)的窗口的顯示/隱藏的切換并不能解決減少系統(tǒng)資源占用的問(wèn)題,因此本發(fā)明人提出,在監(jiān)測(cè)到標(biāo)簽切換操作時(shí),停止隱藏的窗口中運(yùn)行的應(yīng)用程序的畫面更新操作、開啟顯示的窗口中運(yùn)行的應(yīng)用程序的畫面更新操作,可以在用戶無(wú)感的情況下,停止非焦點(diǎn)應(yīng)用程序的窗口畫面更新操作,達(dá)到節(jié)省資源的目的。在介紹了本發(fā)明的基本原理之后,下面具體介紹本發(fā)明的各種非限制性實(shí)施方式。應(yīng)用場(chǎng)景總覽首先參考圖2,為現(xiàn)有技術(shù)運(yùn)行的多個(gè)應(yīng)用程序的相應(yīng)窗口,該運(yùn)行的多個(gè)應(yīng)用程序的相應(yīng)窗口的畫面更新操作占用了大量的系統(tǒng)資源,應(yīng)用本發(fā)明方法實(shí)施例,可以將運(yùn)行的多個(gè)應(yīng)用程序的相應(yīng)窗口進(jìn)行統(tǒng)一控制,掛接于如圖3所示的包含標(biāo)簽頁(yè)的窗口,對(duì)顯示的應(yīng)用程序的窗口開啟畫面更新操作,對(duì)隱藏的應(yīng)用程序的窗口停止畫面更新操作,可以在不影響用戶體驗(yàn)的情況下,減少運(yùn)行的應(yīng)用程序的窗口畫面更新操作對(duì)系統(tǒng)資源的占用。示例性方法下面結(jié)合圖3的應(yīng)用場(chǎng)景,參考圖4來(lái)描述根據(jù)本發(fā)明示例性實(shí)施方式的應(yīng)用程序窗口的控制方法。需要注意的是,上述應(yīng)用場(chǎng)景僅是為了便于理解本發(fā)明的精神和原理而示出,本發(fā)明的實(shí)施方式在此方面不受任何限制。相反,本發(fā)明的實(shí)施方式可以應(yīng)用于適用的任何場(chǎng)景。參見圖4,為本發(fā)明提供的一種應(yīng)用程序窗口的控制方法流程圖,如圖所示,該方法可以包括:S401、將運(yùn)行的至少兩個(gè)應(yīng)用程序的相應(yīng)窗口以子窗口的形式掛接于同一主窗口的不同標(biāo)簽頁(yè)中;S402、對(duì)所述主窗口的標(biāo)簽切換操作進(jìn)行監(jiān)測(cè);S403、如果監(jiān)測(cè)到標(biāo)簽切換操作,隱藏標(biāo)簽切換操作前處于顯示狀態(tài)的子窗口,且停止該子窗口中運(yùn)行的應(yīng)用程序的窗口畫面更新操作;以及,S404、顯示切換到的子窗口,且開啟該子窗口中運(yùn)行的應(yīng)用程序的窗口畫面更新操作。
應(yīng)用上述實(shí)施例方法,由于將運(yùn)行的至少兩個(gè)應(yīng)用程序的相應(yīng)窗口以子窗口的形式掛接于同一主窗口的不同標(biāo)簽頁(yè)中,可以在當(dāng)前時(shí)刻僅顯示正在被操作的應(yīng)用程序的窗口,而且,監(jiān)測(cè)到窗口切換操作時(shí),停止隱藏的窗口中運(yùn)行的應(yīng)用程序的畫面更新操作、開啟顯示的窗口中運(yùn)行的應(yīng)用程序的畫面更新操作,對(duì)于用戶來(lái)說(shuō),由于其僅關(guān)注當(dāng)前正在被操作的應(yīng)用程序的窗口,不會(huì)感覺(jué)到對(duì)隱藏的窗口畫面更新操作停止的變化,因此,可以在不影響用戶運(yùn)行多個(gè)應(yīng)用程序的體驗(yàn)的情況下,節(jié)省系統(tǒng)資源。下面,以下述實(shí)施方式為例對(duì)本發(fā)明方法的具體實(shí)現(xiàn)進(jìn)行詳細(xì)說(shuō)明:例如,步驟S401將運(yùn)行的至少兩個(gè)應(yīng)用程序的相應(yīng)窗口以子窗口的形式掛接于同一主窗口的不同標(biāo)簽頁(yè)中的具體實(shí)現(xiàn)可以為:如果有應(yīng)用程序運(yùn)行的請(qǐng)求,判斷是否已存在包含標(biāo)簽頁(yè)的主窗口 ;如果不存在,創(chuàng)建包含標(biāo)簽頁(yè)的主窗口 ;執(zhí)行掛接步驟,包括:創(chuàng)建與該應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程以運(yùn)行該應(yīng)用程序,向該應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程發(fā)送設(shè)置該主窗口為父窗口的消息,使該應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程根據(jù)消息設(shè)置該主窗口為父窗口,通過(guò)該設(shè)置使該應(yīng)用程序的窗口以子窗口的形式掛接于該主窗口的空閑標(biāo)簽頁(yè)中,并把該應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程和/或子窗口的ID保存于子窗口信息中;判斷是否還有應(yīng)用程序運(yùn)行的請(qǐng)求,如果有,返回到執(zhí)行掛接步驟。在該具體實(shí)現(xiàn)方式中,根據(jù)應(yīng)用程序的運(yùn)行請(qǐng)求,創(chuàng)建對(duì)應(yīng)的進(jìn)程和/或線程,相當(dāng)于在運(yùn)行方面,采取了運(yùn)行的多個(gè)應(yīng)用程序分別對(duì)應(yīng)獨(dú)立的進(jìn)程和/或線程的運(yùn)行機(jī)制。通過(guò)向該應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程發(fā)送相應(yīng)消息實(shí)現(xiàn)子窗口的掛接,相當(dāng)于在通信方面,采取了主進(jìn)程與運(yùn)行的多個(gè)應(yīng)用程序?qū)?yīng)的獨(dú)立的進(jìn)程和/或線程的通信的機(jī)制。因此,不僅運(yùn)行機(jī)制穩(wěn)定性較好,而且通信機(jī)制簡(jiǎn)單高效??紤]到采取多進(jìn)程方式更能夠使運(yùn)行的各個(gè)應(yīng)用程序以及窗口的資源、邏輯獨(dú)立,可以防止單個(gè)應(yīng)用程序運(yùn)行的崩潰而導(dǎo)致其他應(yīng)用程序的運(yùn)行受到影響,因此,根據(jù)應(yīng)用程序的運(yùn)行請(qǐng)求,創(chuàng)建對(duì)應(yīng)的進(jìn)程而非線程的方式為更加優(yōu)選方式。還需要說(shuō)明的是,所述判斷是否已存在包含標(biāo)簽頁(yè)的主窗口可以在應(yīng)用程序運(yùn)行的請(qǐng)求并非由主窗口中的控件觸發(fā)時(shí)進(jìn)行判斷。例如:在本發(fā)明具體實(shí)施時(shí),應(yīng)用程序運(yùn)行的請(qǐng)求的觸發(fā)至少可以包括以下兩種示例性方式:方式一:由應(yīng)用程序執(zhí)行文件被點(diǎn)擊觸發(fā)應(yīng)用程序運(yùn)行的請(qǐng)求,由于該應(yīng)用程序運(yùn)行請(qǐng)求被觸發(fā)事件不與包含標(biāo)簽頁(yè)的主窗口相關(guān),不能確定是否已存在包含標(biāo)簽頁(yè)的主窗口,因此,需要進(jìn)行是否已存在包含標(biāo)簽頁(yè)的主窗口的判斷;方式二:由主窗口中的特定控件被點(diǎn)擊觸發(fā)應(yīng)用程序運(yùn)行的請(qǐng)求,由于該應(yīng)用程序運(yùn)行請(qǐng)求被觸發(fā)事件與已存在的包含標(biāo)簽頁(yè)的主窗口相關(guān),可以確定已存在包含標(biāo)簽頁(yè)的主窗口,因此,無(wú)需進(jìn)行是否已存在包含標(biāo)簽頁(yè)的主窗口的判斷。例如,本發(fā)明步驟S402所述對(duì)主窗口的標(biāo)簽切換操作進(jìn)行監(jiān)測(cè),可以根據(jù)標(biāo)簽切換操作的實(shí)現(xiàn)方式采取相應(yīng)的監(jiān)測(cè)手段,例如:主窗口的標(biāo)簽切換操作可以由鼠標(biāo)對(duì)標(biāo)簽頁(yè)的點(diǎn)擊觸發(fā),也可以由按下功能熱鍵的狀態(tài)觸發(fā),相應(yīng)地,對(duì)主窗口的標(biāo)簽切換操作進(jìn)行監(jiān)測(cè)可以包括對(duì)鼠標(biāo)對(duì)標(biāo)簽頁(yè)的點(diǎn)擊的監(jiān)測(cè)、對(duì)按下功能熱鍵的狀態(tài)的監(jiān)測(cè)。具體監(jiān)測(cè)的手段根據(jù)標(biāo)簽切換操作的實(shí)現(xiàn)方式進(jìn)行設(shè)定。再例如,本發(fā)明步驟S403所述隱藏標(biāo)簽切換操作前處于顯示狀態(tài)的子窗口,且停止該子窗口中運(yùn)行的應(yīng)用程序的窗口畫面更新操作可以包括:從保存的子窗口信息中,查詢標(biāo)簽切換操作前處于顯示狀態(tài)的子窗口中運(yùn)行的應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程和/或子窗口的ID,該應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程和/或子窗口為第一對(duì)象;根據(jù)該第一對(duì)象ID,向所述第一對(duì)象發(fā)送隱藏窗口且停止窗口畫面更新操作的消息,使切換操作前處于顯示狀態(tài)的子窗口中運(yùn)行的應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程根據(jù)該消息隱藏窗口且停止窗口畫面更新操作;步驟S404所述顯示切換到的子窗口,且開啟該子窗口中運(yùn)行的應(yīng)用程序的窗口畫面更新操作可以包括:從預(yù)先保存的子窗口信息中,查詢切換到的子窗口中運(yùn)行的應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程和/或子窗口的ID,該應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程和/或子窗口為第二對(duì)象;根據(jù)第二對(duì)象ID,向所述第二對(duì)象發(fā)送顯示窗口且開啟窗口畫面更新操作的消息,使切換到的子窗口中運(yùn)行的應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程根據(jù)該消息顯示窗口且開啟窗口畫面更新操作。在該實(shí)施例中,監(jiān)測(cè)到標(biāo)簽切換操作后,通過(guò)與相應(yīng)子窗口中的應(yīng)用程序的進(jìn)程和/或線程發(fā)送相應(yīng)的控制消息實(shí)現(xiàn)對(duì)窗口隱藏、顯示、窗口畫面更新操作關(guān)閉與開啟切換的控制。可見,在運(yùn)行方面,同樣采取了運(yùn)行的多個(gè)應(yīng)用程序分別對(duì)應(yīng)獨(dú)立的進(jìn)程和/或線程的運(yùn)行機(jī)制,在通信方面,同樣采取了主進(jìn)程與運(yùn)行的多個(gè)應(yīng)用程序?qū)?yīng)的獨(dú)立的進(jìn)程和/或線程的通信的機(jī)制,因此,具有運(yùn)行機(jī)制穩(wěn)定性好,通信機(jī)制簡(jiǎn)單高效的優(yōu)點(diǎn)。當(dāng)然,在本發(fā)明中并不限制其他隱藏窗口、顯示窗口、關(guān)閉或開啟窗口畫面更新操作的控制方法,上述實(shí)施例僅為示意性說(shuō)明。在本發(fā)明另一實(shí)施例中,還可以將所述運(yùn)行的至少兩個(gè)應(yīng)用程序的相應(yīng)窗口,從掛接于同一主窗口分離為掛接于不同的主窗口。相當(dāng)于可以根據(jù)用戶實(shí)際需求,達(dá)到分組顯示的效果。例如,具體實(shí)現(xiàn)可以包括:如果有針對(duì)某一子窗口的分離請(qǐng)求,根據(jù)針對(duì)該子窗口的分離請(qǐng)求,確定該子窗口所掛接的源主窗口、請(qǐng)求合并到的目標(biāo)主窗口及該子窗口中運(yùn)行的應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程和/或子窗口的ID;判斷是否存在所述目標(biāo)主窗口,如果不存在,創(chuàng)建包含標(biāo)簽頁(yè)的目標(biāo)主窗口 ;將該子窗口所掛接的標(biāo)簽頁(yè)從所述源主窗口中刪除,同時(shí),根據(jù)進(jìn)程和/或線程和/或子窗口的ID,向該進(jìn)程和/或線程發(fā)送設(shè)置目標(biāo)主窗口為父窗口的消息,使該進(jìn)程和/或線程根據(jù)該消息設(shè)置目標(biāo)主窗口為父窗口,通過(guò)該設(shè)置使該應(yīng)用程序的窗口以子窗口的形式掛接于該目標(biāo)主窗口的空閑標(biāo)簽頁(yè)中。需要說(shuō)明的是,在將該子窗口所掛接的標(biāo)簽頁(yè)從所述源主窗口中刪除之后,還可以向所述源主窗口的另一子窗口中運(yùn)行的應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程發(fā)送顯示窗口及開啟窗口畫面更新操作的消息,使該另一子窗口中運(yùn)行的應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程根據(jù)該消息顯示窗口且開啟窗口畫面更新操作;
和/或者,所述向該進(jìn)程和/或線程發(fā)送設(shè)置目標(biāo)主窗口為父窗口的消息,還可以包括顯示窗口及開啟窗口畫面更新操作的消息,使該進(jìn)程和/或線程根據(jù)該消息在目標(biāo)主窗口中顯示子窗口及開啟窗口畫面更新操作,同時(shí),向目標(biāo)主窗口中之前顯示的子窗口中運(yùn)行的應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程發(fā)送隱藏窗口及停止窗口畫面更新操作的消息,使目標(biāo)主窗口中之前顯示的子窗口中運(yùn)行的應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程根據(jù)該消息隱藏窗口及停止窗口畫面更新操作。在該實(shí)施例中:所述針對(duì)某一子窗口的分離請(qǐng)求可以由用戶對(duì)標(biāo)簽頁(yè)的拖拽操作觸發(fā),也可以由用戶對(duì)標(biāo)簽頁(yè)的功能菜單的分離選項(xiàng)的點(diǎn)擊操作觸發(fā),或者其他觸發(fā)形式,在本發(fā)明中并不限制。因此,是否有子窗口的分離請(qǐng)求可以根據(jù)子窗口的分離請(qǐng)求的觸發(fā)操作相應(yīng)進(jìn)行監(jiān)測(cè)獲知。所述根據(jù)針對(duì)該子窗口的分離請(qǐng)求,確定該子窗口所掛接的源主窗口、請(qǐng)求合并到的目標(biāo)主窗口,可以通過(guò)對(duì)子窗口的分離請(qǐng)求觸發(fā)操作進(jìn)行監(jiān)測(cè)確定。例如:如果監(jiān)測(cè)到用戶對(duì)標(biāo)簽頁(yè)的拖拽操作觸發(fā)子窗口的分離請(qǐng)求,則可以確定被拖拽的標(biāo)簽頁(yè)所在主窗口為該子窗口所掛接的源主窗口,再判斷被拖拽的標(biāo)簽頁(yè)被拖拽到的位置,如果拖拽到已存在的另一主窗口位置區(qū)域,則可以確定請(qǐng)求合并到的目標(biāo)主窗口為該已存在的另一主窗口,如果拖拽到的位置不是任何主窗口的位置區(qū)域,則可以確定請(qǐng)求合并到的目標(biāo)主窗口目前不存在?;蛘?,如果監(jiān)測(cè)到用戶對(duì)標(biāo)簽頁(yè)的功能菜單的分離選項(xiàng)的點(diǎn)擊操作觸發(fā)子窗口的分離請(qǐng)求,則可以確定被點(diǎn)擊的標(biāo)簽頁(yè)所在主窗口為該子窗口所掛接的源主窗口,再提取分離選項(xiàng)中被選中的參數(shù),根據(jù)該參數(shù)確定請(qǐng)求合并到的目標(biāo)主窗口,例如,該參數(shù)可以為目標(biāo)主窗口的標(biāo)識(shí),或者,為新建目標(biāo)主窗口選項(xiàng)。當(dāng)然,還可以通過(guò)其他方式確定源主窗口及目標(biāo)主窗口,在本發(fā)明中并不進(jìn)行限制。在本發(fā)明中,由于可能存在多個(gè)主窗口,僅有一主窗口處于激活狀態(tài),且主窗口中僅顯示切換到的標(biāo)簽頁(yè)的子窗口,其他子窗口被隱藏,僅以標(biāo)簽頁(yè)的標(biāo)簽顯示,因此,當(dāng)被隱藏的子窗口中運(yùn)行的應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程在執(zhí)行到重要邏輯事件時(shí),可能產(chǎn)生高亮方式提示用戶的需求,為滿足這一需求,本發(fā)明還可以包括:如果從所述應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程接收到高亮提示的消息,確定該應(yīng)用程序的窗口所掛接的主窗口;判斷該應(yīng)用程序的窗口所掛接的主窗口是否處于激活狀態(tài);如果否,將該應(yīng)用程序的窗口所掛接的主窗口設(shè)置為高亮顯示;判斷該應(yīng)用程序的窗口所掛接的標(biāo)簽頁(yè)是否處于激活狀態(tài);如果否,將該應(yīng)用程序的窗口所掛接的標(biāo)簽頁(yè)的標(biāo)簽設(shè)置為高亮顯示。另外,考慮到主窗口應(yīng)該與子窗口的變化相適配,例如,窗口尺寸等,因此,本發(fā)明還提出:如果從所述應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程接收到窗口屬性變化的消息,確定該應(yīng)用程序的窗口所掛接的主窗口 ;對(duì)該主窗口進(jìn)行與所述窗口屬性變化對(duì)應(yīng)的屬性設(shè)置。
或者,某一子窗口中運(yùn)行的應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程進(jìn)行的用戶設(shè)置同樣需要應(yīng)用到主窗口的其他子窗口中,例如:用戶對(duì)游戲分辨率的設(shè)置不僅在當(dāng)前被操作的窗口生效,還應(yīng)在主窗口的其他子窗口中生效,因此,本發(fā)明還提出:如果從所述應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程接收到用戶設(shè)置的消息,確定該應(yīng)用程序的窗口所掛接的主窗口;查找出該主窗口中的其他子窗口中運(yùn)行的應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程和/或子窗口的ID ;根據(jù)該主窗口中的其他子窗口中運(yùn)行的應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程和/或子窗口的ID,向所述其他子窗口中運(yùn)行的應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程發(fā)送該用戶設(shè)置的消息,使所述其他子窗口中運(yùn)行的應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程根據(jù)該消息進(jìn)行用戶設(shè)置。為了使本發(fā)明的具體實(shí)施方式
更加易于理解,下面結(jié)合圖5和圖6所示的消息交互示意圖,對(duì)消息交互過(guò)程進(jìn)行詳細(xì)說(shuō)明。例如,如圖5及圖6所示的主進(jìn)程501為應(yīng)用本發(fā)明方法的執(zhí)行主體,子窗口中運(yùn)行的應(yīng)用程序可以由對(duì)應(yīng)的進(jìn)程和/或線程502運(yùn)行。主進(jìn)程501可以根據(jù)應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程和/或子窗口的ID,向應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程502發(fā)送消息。例如,主進(jìn)程發(fā)送消息的具體實(shí)現(xiàn)可以是以下兩種方式的任意一種或者組合:發(fā)送方式一:參見圖5,可以根據(jù)應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程的ID,由主進(jìn)程501經(jīng)由進(jìn)程間的緩存消息隊(duì)列直接向應(yīng)用程序的進(jìn)程和/或線程502發(fā)送消息;需要說(shuō)明的是,應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程的ID,在該進(jìn)程和/或線程被創(chuàng)建時(shí),由操作系統(tǒng)分配,可以在操作系統(tǒng)分配ID時(shí),對(duì)該應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程的ID進(jìn)行記錄,例如,可以將該應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程的ID與該應(yīng)用程序?qū)?yīng)的子窗口 ID,對(duì)應(yīng)地記錄到子窗口信息503中;和/或者,發(fā)送方式二:參見圖6,可以根據(jù)應(yīng)用程序?qū)?yīng)的子窗口的ID,由主進(jìn)程501向應(yīng)用程序?qū)?yīng)的子窗口的主窗口 504發(fā)送消息,消息中攜帶目標(biāo)子窗口 ID、由主窗口 504自帶的窗口通信機(jī)制,根據(jù)消息攜帶的目標(biāo)子窗口 ID經(jīng)由主窗口與子窗口之間的緩存消息隊(duì)列向應(yīng)用程序?qū)?yīng)的子窗口發(fā)送消息,在消息到達(dá)子窗口時(shí),由子窗口自帶的窗口通信機(jī)制將消息發(fā)送到在其中運(yùn)行的應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程502。同理,例如,主進(jìn)程從應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程接收消息,可以是以下兩種方式的任意一種或者組合:接收方式一:參見圖5,主進(jìn)程501可以經(jīng)由進(jìn)程間的緩存消息隊(duì)列直接接收應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程502發(fā)送的消息;和/或者,接收方式二:參見圖6,主進(jìn)程501可以通過(guò)主窗口 504從應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程502接收消息;在該接收方式中,應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程502可以首先通過(guò)窗口自帶的窗口通信機(jī)制將消息經(jīng)由子窗口與主窗口之間的緩存消息隊(duì)列發(fā)送到主窗口 504,再由主窗口 504發(fā)送到主進(jìn)程501。
上述消息交互過(guò)程的說(shuō)明僅為本發(fā)明的可選實(shí)施方式,在實(shí)際應(yīng)用中,還可以采用其他的多進(jìn)程/線程通信機(jī)制方式,例如=Socket通信、LPC、共享內(nèi)存加事件通知等方式??紤]到本發(fā)明主要對(duì)窗口及窗口畫面更新進(jìn)行控制,交互需求往往都是窗口之間的消息交互,因此,采用上述發(fā)送、接收方式二,使所述消息通過(guò)主窗口與其中的子窗口之間的緩存消息隊(duì)列進(jìn)行通信,不僅研發(fā)效率較高,而且通信效率也相對(duì)較高,為優(yōu)選實(shí)施方式。并且,還可以設(shè)置有超時(shí)參數(shù),當(dāng)所述消息傳輸時(shí)間超過(guò)所述超時(shí)參數(shù)時(shí),根據(jù)預(yù)設(shè)發(fā)送規(guī)則,重新發(fā)送消息。其中,所述預(yù)設(shè)發(fā)送規(guī)則,可以根據(jù)實(shí)施需要進(jìn)行設(shè)定,例如,預(yù)設(shè)發(fā)送規(guī)則可以為:預(yù)設(shè)可重新發(fā)送的消息類型,如果所述消息傳輸時(shí)間超過(guò)超時(shí)參數(shù)且符合可重新發(fā)送的消息類型,則重新發(fā)送所述消息,否則拒絕重新發(fā)送;或者,預(yù)設(shè)發(fā)送規(guī)則可以為:預(yù)設(shè)過(guò)度超時(shí)時(shí)長(zhǎng),如果所述消息傳輸時(shí)間超過(guò)超時(shí)參數(shù),且未超出預(yù)設(shè)過(guò)度超時(shí)時(shí)長(zhǎng),則重新發(fā)送所述消息,否則拒絕重新發(fā)送;或者還可以有其他根據(jù)實(shí)施需要設(shè)定的預(yù)設(shè)發(fā)送規(guī)則,在本發(fā)明中并不進(jìn)行限制。再具體地,例如可以采用SendMessageTimeout函數(shù)發(fā)送消息,通過(guò)設(shè)定該函數(shù)的超時(shí)參數(shù)來(lái)防止目標(biāo)窗口未能響應(yīng)消息而帶來(lái)的阻塞。當(dāng)然,也可以使用其他函數(shù)發(fā)送消息,例如,傳統(tǒng)的SendMessage或者PostMessage等,在本發(fā)明中并不限制??紤]到窗口畫面更新對(duì)幀率、效率要求較高,不適于采取完全阻塞的交互機(jī)制,因此,采用SendMessageTimeout函數(shù)發(fā)送消息為優(yōu)選方式。而且,在所述消息為特定消息時(shí),該特定消息可以通過(guò)主窗口與其中的子窗口之間的特定緩存消息隊(duì)列進(jìn)行阻塞式通信。該特定緩存消息隊(duì)列的阻塞式通信,主要用于針對(duì)應(yīng)用程序的某些特定功能,即必須在確定接收方通信操作完成才可結(jié)束該次通信的功能需求。在本發(fā)明中,所述消息的格式可以為與消息內(nèi)容對(duì)應(yīng)的特定格式;所述特定格式可以由消息頭標(biāo)識(shí);所述消息在接收后,可以根據(jù)消息頭標(biāo)識(shí),采用與消息頭標(biāo)識(shí)對(duì)應(yīng)的解析函數(shù)進(jìn)行解析后,獲得消息內(nèi)容。例如,所述消息可以為WM_C0PYDATA類型的數(shù)據(jù)包,可以在數(shù)據(jù)包上定義與消息內(nèi)容對(duì)應(yīng)的特定格式,由數(shù)據(jù)包的消息頭標(biāo)識(shí)特定格式,進(jìn)行功能的區(qū)分,通信雙方可以根據(jù)消息頭標(biāo)識(shí)的特定格式進(jìn)行解析。通過(guò)對(duì)消息的特定格式的預(yù)設(shè),可以在接收端預(yù)先保存特定格式與解析函數(shù)的映射關(guān)系。在接收消息后,可以根據(jù)消息頭的標(biāo)識(shí)將數(shù)據(jù)包分發(fā)到對(duì)應(yīng)的解析函數(shù)進(jìn)行處理??梢?,由消息頭標(biāo)識(shí)特定格式,根據(jù)消息頭標(biāo)識(shí),采用與消息頭標(biāo)識(shí)對(duì)應(yīng)的解析函數(shù)進(jìn)行解析獲得消息內(nèi)容,不僅實(shí)現(xiàn)過(guò)程簡(jiǎn)單高效,而且可擴(kuò)展性很強(qiáng)。還需要說(shuō)明的是,本文所述的包含標(biāo)簽頁(yè)的窗口可以采取Win32提供的包含標(biāo)簽頁(yè)的窗口實(shí)現(xiàn),也可以采取例如WebKit提供的包含標(biāo)簽頁(yè)的窗口實(shí)現(xiàn),或者其他技術(shù)實(shí)現(xiàn),在本發(fā)明中并不進(jìn)行限制。示例性裝置在介紹了本發(fā)明示例性實(shí)施方式的方法之后,接下來(lái),參考圖7來(lái)描述本發(fā)明示例性實(shí)施方式的一種應(yīng)用程序窗口的控制裝置。參見圖7,為本發(fā)明提供的一種應(yīng)用程序窗口的控制裝置結(jié)構(gòu)示意圖,如圖所示,該裝置可以包括:創(chuàng)建單元701:可以配置用于將運(yùn)行的至少兩個(gè)應(yīng)用程序的相應(yīng)窗口以子窗口的形式掛接于同一主窗口的不同標(biāo)簽頁(yè)中;監(jiān)測(cè)單元702:可以配置用于對(duì)所述主窗口的標(biāo)簽切換操作進(jìn)行監(jiān)測(cè);執(zhí)行單元703:可以配置用于如果監(jiān)測(cè)到標(biāo)簽切換操作,隱藏標(biāo)簽切換操作前處于顯示狀態(tài)的子窗口,且停止該子窗口中運(yùn)行的應(yīng)用程序的窗口畫面更新操作;以及,顯示切換到的子窗口,且開啟該子窗口中運(yùn)行的應(yīng)用程序的窗口畫面更新操作。實(shí)施該裝置實(shí)施例,由于創(chuàng)建單元701將運(yùn)行的至少兩個(gè)應(yīng)用程序的相應(yīng)窗口以子窗口的形式掛接于同一主窗口的不同標(biāo)簽頁(yè)中,可以在當(dāng)前時(shí)刻僅顯示正在被操作的應(yīng)用程序的窗口,而且,監(jiān)測(cè)單元702可以用于監(jiān)測(cè)窗口切換操作,在監(jiān)測(cè)到窗口切換操作時(shí),由執(zhí)行單元703停止隱藏的窗口中運(yùn)行的應(yīng)用程序的畫面更新操作、開啟顯示的窗口中運(yùn)行的應(yīng)用程序的畫面更新操作,對(duì)于用戶來(lái)說(shuō),由于其僅關(guān)注當(dāng)前正在被操作的應(yīng)用程序的窗口,不會(huì)感覺(jué)到對(duì)隱藏的窗口畫面更新操作停止的變化,因此,可以在不影響用戶運(yùn)行多個(gè)應(yīng)用程序的體驗(yàn)的情況下,節(jié)省系統(tǒng)資源。下面,對(duì)本發(fā)明裝置的具體實(shí)現(xiàn)進(jìn)行詳細(xì)說(shuō)明:例如,該裝置的執(zhí)行單元703:具體可以配置用于從保存的子窗口信息中,查詢標(biāo)簽切換操作前處于顯示狀態(tài)的子窗口中運(yùn)行的應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程和/或子窗口的ID,該應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程和/或子窗口為第一對(duì)象;根據(jù)該第一對(duì)象ID,向所述第一對(duì)象發(fā)送隱藏窗口且停止窗口畫面更新操作的消息,使切換操作前處于顯示狀態(tài)的子窗口中運(yùn)行的應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程根據(jù)該消息隱藏窗口且停止窗口畫面更新操作;從預(yù)先保存的子窗口信息中,查詢切換到的子窗口中運(yùn)行的應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程和/或子窗口的ID,該應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程和/或子窗口為第二對(duì)象;根據(jù)第二對(duì)象ID,向所述第二對(duì)象發(fā)送顯示窗口且開啟窗口畫面更新操作的消息,使切換到的子窗口中運(yùn)行的應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程根據(jù)該消息顯示窗口且開啟窗口畫面更新操作。再例如,該裝置的創(chuàng)建單元701:可以配置用于如果有應(yīng)用程序運(yùn)行的請(qǐng)求,判斷是否已存在包含標(biāo)簽頁(yè)的主窗口 ;如果不存在,創(chuàng)建包含標(biāo)簽頁(yè)的主窗口 ;執(zhí)行掛接步驟,包括:創(chuàng)建與該應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程以運(yùn)行該應(yīng)用程序,向該應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程發(fā)送設(shè)置該主窗口為父窗口的消息,使該應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程根據(jù)消息設(shè)置該主窗口為父窗口,通過(guò)該設(shè)置使該應(yīng)用程序的窗口以子窗口的形式掛接于該主窗口的空閑標(biāo)簽頁(yè)中,并把該應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程和/或子窗口的ID保存于子窗口信息中;判斷是否還有應(yīng)用程序運(yùn)行的請(qǐng)求,如果有,返回到執(zhí)行掛接步驟。具體地,其中所述創(chuàng)建單元701:可以配置用于在應(yīng)用程序運(yùn)行的請(qǐng)求并非由主窗口中的控件觸發(fā)時(shí),進(jìn)行是否已存在包含標(biāo)簽頁(yè)的主窗口的判斷。例如,該裝置還可以包括:分離合并單元704:可以配置用于如果有針對(duì)某一子窗口的分離請(qǐng)求,根據(jù)針對(duì)該子窗口的分離請(qǐng)求,確定該子窗口所掛接的源主窗口、請(qǐng)求合并到的目標(biāo)主窗口及該子窗口中運(yùn)行的應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程和/或子窗口的ID ;判斷是否存在所述目標(biāo)主窗口,如果不存在,創(chuàng)建包含標(biāo)簽頁(yè)的目標(biāo)主窗口 ;將該子窗口所掛接的標(biāo)簽頁(yè)從所述源主窗口中刪除,同時(shí),根據(jù)進(jìn)程和/或線程和/或子窗口的ID,向該進(jìn)程和/或線程發(fā)送設(shè)置目標(biāo)主窗口為父窗口的消息,使該進(jìn)程和/或線程根據(jù)該消息設(shè)置目標(biāo)主窗口為父窗口,通過(guò)該設(shè)置使該應(yīng)用程序的窗口以子窗口的形式掛接于該目標(biāo)主窗口的空閑標(biāo)簽頁(yè)中。和/或者,該裝置還可以包括:高亮顯示單元705:可以配置用于如果從所述應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程接收到高亮提示的消息,確定該應(yīng)用程序的窗口所掛接的主窗口 ;判斷該應(yīng)用程序的窗口所掛接的主窗口是否處于激活狀態(tài);如果否,將該應(yīng)用程序的窗口所掛接的主窗口設(shè)置為高亮顯示;判斷該應(yīng)用程序的窗口所掛接的標(biāo)簽頁(yè)是否處于激活狀態(tài);如果否,將該應(yīng)用程序的窗口所掛接的標(biāo)簽頁(yè)的標(biāo)簽設(shè)置為高亮顯示。和/或者,該裝置還可以包括:窗口屬性設(shè)置單元706:可以配置用于如果從所述應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程接收到窗口屬性變化的消息,確定該應(yīng)用程序的窗口所掛接的主窗口 ;對(duì)該主窗口進(jìn)行與所述窗口屬性變化對(duì)應(yīng)的屬性設(shè)置。和/或者,該裝置還可以包括:用戶設(shè)置單元707:可以配置用于如果從所述應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程接收到用戶設(shè)置的消息,確定該應(yīng)用程序的窗口所掛接的主窗口 ;查找出該主窗口中的其他子窗口中運(yùn)行的應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程和/或子窗口的ID ;根據(jù)該主窗口的其他子窗口中運(yùn)行的應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程和/或子窗口的ID,向所述其他子窗口中運(yùn)行的應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程發(fā)送該用戶設(shè)置的消息,使所述其他子窗口中運(yùn)行的應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程根據(jù)該消息進(jìn)行用戶設(shè)置。應(yīng)當(dāng)注意,盡管在上文詳細(xì)描述中提及了一種應(yīng)用程序的窗口控制裝置的若干單元,但是這種劃分僅僅并非強(qiáng)制性的。實(shí)際上,根據(jù)本發(fā)明的實(shí)施方式,上文描述的兩個(gè)或更多單元的特征和功能可以在一個(gè)單元中具體化。反之,上文描述的一個(gè)單元的特征和功能可以進(jìn)一步劃分為由多個(gè)單元來(lái)具體化。此外,盡管在附圖中以特定順序描述了本發(fā)明方法的操作,但是,這并非要求或者暗示必須按照該特定順序來(lái)執(zhí)行這些操作,或是必須執(zhí)行全部所示的操作才能實(shí)現(xiàn)期望的結(jié)果。相反,流程圖中描繪的步驟可以改變執(zhí)行順序。附加地或備選地,可以省略某些步驟,將多個(gè)步驟合并為一個(gè)步驟執(zhí)行,和/或?qū)⒁粋€(gè)步驟分解為多個(gè)步驟執(zhí)行。申請(qǐng)文件中提及的動(dòng)詞“包括”、“包含”及其詞形變化的使用不排除除了申請(qǐng)文件中記載的那些元素或步驟之外的元素或步驟的存在。元素前的冠詞“一”或“一個(gè)”不排除多個(gè)這種元素的存在。雖然已經(jīng)參考若干具體實(shí)施方式
描述了本發(fā)明的精神和原理,但是應(yīng)該理解,本發(fā)明并不限于所公開的具體實(shí)施方式
,對(duì)各方面的劃分也不意味著這些方面中的特征不能組合以進(jìn)行受益,這種劃分僅是為了表述的方便。本發(fā)明旨在涵蓋所附權(quán)利要求的精神和范圍內(nèi)所包括的各種修改和等同布置。所附權(quán)利要求的范圍符合最寬泛的解釋,從而包含所有這樣的修改及等同結(jié)構(gòu)和功能。
權(quán)利要求
1.一種應(yīng)用程序窗口的控制方法,包括: 將運(yùn)行的至少兩個(gè)應(yīng)用程序的相應(yīng)窗口以子窗口的形式掛接于同一主窗口的不同標(biāo)簽頁(yè)中; 對(duì)所述主窗口的標(biāo)簽切換操作進(jìn)行監(jiān)測(cè); 如果監(jiān)測(cè)到標(biāo)簽切換操作,隱藏標(biāo)簽切換操作前處于顯示狀態(tài)的子窗口,且停止該子窗口中運(yùn)行的應(yīng)用程序的窗口畫面更新操作;以及, 顯示切換到的子窗口,且開啟該子窗口中運(yùn)行的應(yīng)用程序的窗口畫面更新操作。
2.根據(jù)權(quán)利要求1所述的方法,其中,所述隱藏標(biāo)簽切換操作前處于顯示狀態(tài)的子窗口,且停止該子窗口中運(yùn)行的應(yīng)用程序的窗口畫面更新操作包括: 從保存的子窗口信息中,查詢標(biāo)簽切換操作前處于顯示狀態(tài)的子窗口中運(yùn)行的應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程和/或子窗口的ID,該應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程和/或子窗口為第一對(duì)象; 根據(jù)該第一對(duì)象ID,向所述第一對(duì)象發(fā)送隱藏窗口且停止窗口畫面更新操作的消息,使切換操作前處于顯示狀態(tài)的子窗口中運(yùn) 行的應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程根據(jù)該消息隱藏窗口且停止窗口畫面更新操作; 所述顯示切換到的子窗口,且開啟該子窗口中運(yùn)行的應(yīng)用程序的窗口畫面更新操作包 括: 從預(yù)先保存的子窗口信息中,查詢切換到的子窗口中運(yùn)行的應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程和/或子窗口的ID,該應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程和/或子窗口為第二對(duì)象; 根據(jù)第二對(duì)象ID,向所述第二對(duì)象發(fā)送顯示窗口且開啟窗口畫面更新操作的消息,使切換到的子窗口中運(yùn)行的應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程根據(jù)該消息顯示窗口且開啟窗口畫面更新操作。
3.根據(jù)權(quán)利要求1所述的方法,其中,所述將運(yùn)行的至少兩個(gè)應(yīng)用程序的相應(yīng)窗口以子窗口的形式掛接于同一主窗口的不同標(biāo)簽頁(yè)中具體實(shí)現(xiàn)為: 如果有應(yīng)用程序運(yùn)行的請(qǐng)求,判斷是否已存在包含標(biāo)簽頁(yè)的主窗口 ; 如果不存在,創(chuàng)建包含標(biāo)簽頁(yè)的王窗口 ; 執(zhí)行掛接步驟,包括:創(chuàng)建與該應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程以運(yùn)行該應(yīng)用程序,向該應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程發(fā)送設(shè)置該主窗口為父窗口的消息,使該應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程根據(jù)消息設(shè)置該主窗口為父窗口,通過(guò)該設(shè)置使該應(yīng)用程序的窗口以子窗口的形式掛接于該主窗口的空閑標(biāo)簽頁(yè)中,并把該應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程和/或子窗口的ID保存于子窗口信息中; 判斷是否還有應(yīng)用程序運(yùn)行的請(qǐng)求,如果有,返回到執(zhí)行掛接步驟。
4.根據(jù)權(quán)利要求3所述的方法,其中,所述判斷是否已存在包含標(biāo)簽頁(yè)的主窗口具體在應(yīng)用程序運(yùn)行的請(qǐng)求并非由主窗口中的控件觸發(fā)時(shí)進(jìn)行判斷。
5.根據(jù)權(quán)利要求1所述的方法,還包括: 如果有針對(duì)某一子窗口的分離請(qǐng)求,根據(jù)針對(duì)該子窗口的分離請(qǐng)求,確定該子窗口所掛接的源主窗口、請(qǐng)求合并到的目標(biāo)主窗口及該子窗口中運(yùn)行的應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程和/或子窗口的ID; 判斷是否存在所述目標(biāo)主窗口,如果不存在,創(chuàng)建包含標(biāo)簽頁(yè)的目標(biāo)主窗口 ;將該子窗口所掛接的標(biāo)簽頁(yè)從所述源主窗口中刪除,同時(shí),根據(jù)進(jìn)程和/或線程和/或子窗口的ID,向該進(jìn)程和/或線程發(fā)送設(shè)置目標(biāo)主窗口為父窗口的消息,使該進(jìn)程和/或線程根據(jù)該消息設(shè)置目標(biāo)主窗口為父窗口,通過(guò)該設(shè)置使該應(yīng)用程序的窗口以子窗口的形式掛接于該目標(biāo)主窗口的空閑標(biāo)簽頁(yè)中。
6.根據(jù)權(quán)利要求1所述的方法,還包括: 如果從所述應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程接收到高亮提示的消息,確定該應(yīng)用程序的窗口所掛接的主窗口; 判斷該應(yīng)用程序的窗口所掛接的主窗口是否處于激活狀態(tài); 如果否,將該應(yīng)用程序的窗口所掛接的主窗口設(shè)置為高亮顯示; 判斷該應(yīng)用程序的窗口所掛接的標(biāo)簽頁(yè)是否處于激活狀態(tài); 如果否,將該應(yīng)用程序的窗口所掛接的標(biāo)簽頁(yè)的標(biāo)簽設(shè)置為高亮顯示。
7.根據(jù)權(quán)利要求1所述的方法,還包括: 如果從所述應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程接收到窗口屬性變化的消息,確定該應(yīng)用程序的窗口所掛接的主窗口; 對(duì)該主窗口進(jìn)行與所述窗口屬性變化對(duì)應(yīng)的屬性設(shè)置。
8.根據(jù)權(quán)利要求1所述的方法,還包括: 如果從所述 應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程接收到用戶設(shè)置的消息,確定該應(yīng)用程序的窗口所掛接的主窗口; 查找出該主窗口中的其他子窗口中運(yùn)行的應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程和/或子窗口的 ID ; 根據(jù)該主窗口中的其他子窗口中運(yùn)行的應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程和/或子窗口的ID,向所述其他子窗口中運(yùn)行的應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程發(fā)送該用戶設(shè)置的消息,使所述其他子窗口中運(yùn)行的應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程根據(jù)該消息進(jìn)行用戶設(shè)置。
9.根據(jù)權(quán)利要求2-8任意一項(xiàng)所述的方法,其中,所述消息具體通過(guò)主窗口與其中的子窗口之間的緩存消息隊(duì)列進(jìn)行通信; 還設(shè)置有超時(shí)參數(shù),當(dāng)所述消息傳輸時(shí)間超過(guò)所述超時(shí)參數(shù)時(shí),根據(jù)預(yù)設(shè)發(fā)送規(guī)則,重新發(fā)送所述消息。
10.根據(jù)權(quán)利要求9所述的方法,其中,所述消息為特定消息時(shí),該特定消息具體通過(guò)主窗口與其中的子窗口之間的特定緩存消息隊(duì)列進(jìn)行阻塞式通信。
11.根據(jù)權(quán)利要求2-8任意一項(xiàng)所述的方法,其中,所述消息的格式具體為與消息內(nèi)容對(duì)應(yīng)的特定格式; 所述特定格式具體由消息頭標(biāo)識(shí); 所述消息在接收后,根據(jù)消息頭標(biāo)識(shí),采用與消息頭標(biāo)識(shí)對(duì)應(yīng)的解析函數(shù)進(jìn)行解析后,獲得消息內(nèi)容。
12.—種應(yīng)用程序窗口的控制裝置,包括: 創(chuàng)建單元:配置用于將運(yùn)行的至少兩個(gè)應(yīng)用程序的相應(yīng)窗口以子窗口的形式掛接于同一主窗口的不同標(biāo)簽頁(yè)中; 監(jiān)測(cè)單元:配置用于對(duì)所述主窗口的標(biāo)簽切換操作進(jìn)行監(jiān)測(cè);執(zhí)行單元:配置用于如果監(jiān)測(cè)到標(biāo)簽切換操作,隱藏標(biāo)簽切換操作前處于顯示狀態(tài)的子窗口,且停止該子窗口中運(yùn)行的應(yīng)用程序的窗口畫面更新操作;以及,顯示切換到的子窗口,且開啟該子窗口中運(yùn)行的應(yīng)用程序的窗口畫面更新操作。
13.根據(jù)權(quán)利要求12所述的裝置,其中,所述執(zhí)行單元:具體配置用于從保存的子窗口信息中,查詢標(biāo)簽切換操作前處于顯示狀態(tài)的子窗口中運(yùn)行的應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程和/或子窗口的ID,該應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程和/或子窗口為第一對(duì)象;根據(jù)該第一對(duì)象ID,向所述第一對(duì)象發(fā)送隱藏窗口且停止窗口畫面更新操作的消息,使切換操作前處于顯示狀態(tài)的子窗口中運(yùn)行的應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程根據(jù)該消息隱藏窗口且停止窗口畫面更新操作;從預(yù)先保存的子窗口信息中,查詢切換到的子窗口中運(yùn)行的應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程和/或子窗口的ID,該應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程和/或子窗口為第二對(duì)象;根據(jù)第二對(duì)象ID,向所述第二對(duì)象發(fā)送顯示窗口且開啟窗口畫面更新操作的消息,使切換到的子窗口中運(yùn)行的應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程根據(jù)該消息顯示窗口且開啟窗口畫面更新操作。
14.根據(jù)權(quán)利要求12所述的裝置,其中,所述創(chuàng)建單元:配置用于如果有應(yīng)用程序運(yùn)行的請(qǐng)求,判斷是否已存在包含標(biāo)簽頁(yè)的主窗口 ;如果不存在,創(chuàng)建包含標(biāo)簽頁(yè)的主窗口 ;執(zhí)行掛接步驟,包括:創(chuàng)建與該應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程以運(yùn)行該應(yīng)用程序,向該應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程發(fā)送設(shè)置該主窗口為父窗口的消息,使該應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程根據(jù)消息設(shè)置該主窗口為父窗口,通過(guò)該設(shè)置使該應(yīng)用程序的窗口以子窗口的形式掛接于該主窗口的空閑標(biāo)簽頁(yè)中,并把該應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程和/或子窗口的ID保存于子窗口信息中;判斷是否還有應(yīng)用程序運(yùn)行的請(qǐng)求,如果有,返回到執(zhí)行掛接步驟。
15.根據(jù)權(quán)利要求14所述的裝置,其中,所述創(chuàng)建單元:配置用于在應(yīng)用程序運(yùn)行的請(qǐng)求并非由主窗口中的控件觸發(fā) 時(shí),進(jìn)行是否已存在包含標(biāo)簽頁(yè)的主窗口的判斷。
16.根據(jù)權(quán)利要求12所述的裝置,還包括: 分離合并單元:配置用于如果有針對(duì)某一子窗口的分離請(qǐng)求,根據(jù)針對(duì)該子窗口的分離請(qǐng)求,確定該子窗口所掛接的源主窗口、請(qǐng)求合并到的目標(biāo)主窗口及該子窗口中運(yùn)行的應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程和/或子窗口的ID ;判斷是否存在所述目標(biāo)主窗口,如果不存在,創(chuàng)建包含標(biāo)簽頁(yè)的目標(biāo)主窗口 ;將該子窗口所掛接的標(biāo)簽頁(yè)從所述源主窗口中刪除,同時(shí),根據(jù)進(jìn)程和/或線程和/或子窗口的ID,向該進(jìn)程和/或線程發(fā)送設(shè)置目標(biāo)主窗口為父窗口的消息,使該進(jìn)程和/或線程根據(jù)該消息設(shè)置目標(biāo)主窗口為父窗口,通過(guò)該設(shè)置使該應(yīng)用程序的窗口以子窗口的形式掛接于該目標(biāo)主窗口的空閑標(biāo)簽頁(yè)中。
17.根據(jù)權(quán)利要求12所述的裝置,還包括: 高亮顯示單元:配置用于如果從所述應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程接收到高亮提示的消息,確定該應(yīng)用程序的窗口所掛接的主窗口 ;判斷該應(yīng)用程序的窗口所掛接的主窗口是否處于激活狀態(tài);如果否,將該應(yīng)用程序的窗口所掛接的主窗口設(shè)置為高亮顯示;判斷該應(yīng)用程序的窗口所掛接的標(biāo)簽頁(yè)是否處于激活狀態(tài);如果否,將該應(yīng)用程序的窗口所掛接的標(biāo)簽頁(yè)的標(biāo)簽設(shè)置為聞売顯不。
18.根據(jù)權(quán)利要求12所述的裝置,還包括: 窗口屬性設(shè)置單元:配置用于如果從所述應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程接收到窗口屬性變化的消息,確定該應(yīng)用程序的窗口所掛接的主窗口 ;對(duì)該主窗口進(jìn)行與所述窗口屬性變化對(duì)應(yīng)的屬性設(shè)置。
19.根據(jù)權(quán)利要求12所述的裝置,還包括: 用戶設(shè)置單元:配置用于如果從所述應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程接收到用戶設(shè)置的消息,確定該應(yīng)用程序的窗口所掛接的主窗口 ;查找出該主窗口中的其他子窗口中運(yùn)行的應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程和/或子窗口的ID ;根據(jù)該主窗口的其他子窗口中運(yùn)行的應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程和/或子窗口的ID,向所述其他子窗口中運(yùn)行的應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線程發(fā)送該用戶設(shè)置的消息,使所述其他子窗口中運(yùn)行的應(yīng)用程序?qū)?yīng)的進(jìn)程和/或線 程根據(jù)該消息進(jìn)行用戶設(shè)置。
全文摘要
本發(fā)明的實(shí)施方式提供了一種應(yīng)用程序窗口的控制方法。該方法包括將運(yùn)行的至少兩個(gè)應(yīng)用程序的相應(yīng)窗口以子窗口的形式掛接于同一主窗口的不同標(biāo)簽頁(yè)中;對(duì)所述主窗口的標(biāo)簽切換操作進(jìn)行監(jiān)測(cè);如果監(jiān)測(cè)到標(biāo)簽切換操作,隱藏標(biāo)簽切換操作前處于顯示狀態(tài)的子窗口,且停止該子窗口中運(yùn)行的應(yīng)用程序的窗口畫面更新操作;以及,顯示切換到的子窗口,且開啟該子窗口中運(yùn)行的應(yīng)用程序的窗口畫面更新操作。通過(guò)在監(jiān)測(cè)到窗口切換操作時(shí),停止隱藏的窗口中運(yùn)行的應(yīng)用程序的畫面更新操作、開啟顯示的窗口中運(yùn)行的應(yīng)用程序的畫面更新操作,達(dá)到了既不影響用戶體驗(yàn),又能夠節(jié)省系統(tǒng)資源的目的。此外,本發(fā)明的實(shí)施方式提供了一種應(yīng)用程序窗口的控制裝置。
文檔編號(hào)G06F3/0481GK103197842SQ201310131398
公開日2013年7月10日 申請(qǐng)日期2013年4月15日 優(yōu)先權(quán)日2013年4月15日
發(fā)明者吳國(guó)瑞, 王梅林, 吳海育 申請(qǐng)人:廣州博冠信息科技有限公司