專利名稱:一種基于嵌入式系統(tǒng)圖形庫的管理彈出窗口的方法
技術領域:
本發(fā)明涉及嵌入式系統(tǒng)領域,尤其涉及一種基于嵌入式系統(tǒng)圖形庫的管理彈出窗口的方法。
背景技術:
彈出式窗口是個常見的GUI窗口,應用十分廣泛,如常見的對話框就是一種彈出式窗口。無論在PC機還是在嵌入式設備的圖形界面上,隨處可以看到彈出式窗口,給用戶顯示提示信息、警告信息、與用戶進行信息交互等。但一般的彈出式窗口是在已知父窗口的情況下的彈出窗口,或者系統(tǒng)在某一時亥IJ,只會觸發(fā)一個彈出窗口,不會出現(xiàn)當存在已有彈出窗口,還響應新的突發(fā)事件而彈出窗口的情況。在特定的嵌入式GUI應用程序中,就存在可能有多個事件觸發(fā)彈出窗口。如當用戶正在操作,觸發(fā)出一個彈出窗口,而此時系統(tǒng)自動觸發(fā)事件或者遠程網(wǎng)絡事件,要求彈出新的彈出窗口,這時候需要在系統(tǒng)中對彈出窗口進行統(tǒng)一管理。當有多個事件同時觸發(fā)彈出窗口時,會出現(xiàn)窗口焦點錯誤、或者焦點丟失而導致按鍵不能正確響應或者根本不響應的情況。因此,如何解決現(xiàn)有技術中多個彈窗而導致按鍵不能正確響應或者根本不響應的問題,已成為當前急需解決的技術問題之一。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種基于嵌入式系統(tǒng)圖形庫的管理彈出窗口的方法,其能防止因彈出多個窗口而導致窗口焦點傳遞錯誤、焦點丟失而導致按鍵錯誤反應或者無反應的問題。為解決本發(fā)明的技術問題,本發(fā)明公開一種基于嵌入式系統(tǒng)圖形庫的管理彈出窗口的方法,其特征在于,當系統(tǒng)中需要彈出一個新窗口的時候,先判斷系統(tǒng)中是否已經(jīng)有彈出窗口存在,如果系統(tǒng)中已經(jīng)有彈出窗口存在,則先自動注銷并銷毀原來的彈出窗口,并使其失去焦點;然后再創(chuàng)建新的彈出窗口,獲取焦點并響應按鍵消息事件。與現(xiàn)有技術相比,本發(fā)明的彈出窗口管理方法,可以防止因彈出多個窗口而導致窗口焦點傳遞錯誤、焦點丟失而導致按鍵錯誤反應或者無反應等問題,保證系統(tǒng)中最后一個觸發(fā)的彈出窗口為活動窗口,保證系統(tǒng)焦點的正確傳遞、按鍵的正確反應。
圖1是本發(fā)明基于嵌入式系統(tǒng)圖形庫的管理彈出窗口方法的流程圖。。
具體實施例方式作為本發(fā)明的一個實施方式,本發(fā)明在CC1203和MSTAR 6 78硬件平臺、基于Linux系統(tǒng)、基于支持幀緩存(FrameBuffer)的嵌入式⑶I圖形庫實現(xiàn)。嵌入式系統(tǒng)進入窗口主界面或者任意一普通窗口界面,這些普通界面有可能有用戶操作彈出的窗口,也有網(wǎng)絡、系統(tǒng)事件引發(fā)的任意彈出窗口。正是這些不確定、且可以出現(xiàn)在任意普通窗口的彈出窗口,如果不采用統(tǒng)一的管理方式,很容易引起窗口焦點傳遞錯誤、焦點丟失而導致系統(tǒng)錯誤相應事件消息或者根本不響應消息,造成系統(tǒng)假死現(xiàn)象。為了管理這些任意彈出的窗口和保證焦點正確傳遞,需要在系統(tǒng)定義兩個全局變量;第一全局變量 CWindow*g_pParentWin 和第二全局變量 CWindow*g_pActivePopWin; 第一全局變量CWindow* g_pParentffin用來保存當前活動的普通窗口的指針,使用 RegisterParentffin (Cffin^pffin)函數(shù)就是給該變量賦值;第二全局變量CWindow*g_ pActivePopffin用來保存系統(tǒng)當前活動的彈出窗口指針,RegisterActivePopffin (Cffin^pffin)函數(shù)就是給該變量賦值。當系統(tǒng)中需要彈出一個新窗口的時候,先判斷系統(tǒng)中是否已經(jīng)有彈出窗口存在, 如果有,則先自動注銷并銷毀原來的彈出窗口,并使其失去焦點,然后再創(chuàng)建新的彈出窗口,獲取焦點并響應按鍵消息事件。請參閱圖1,系統(tǒng)對彈窗進行管理的方法步驟如下
步驟Sl 系統(tǒng)啟動,進入主窗口界面,調(diào)用RegisterParentWin (CWin*pWin)函數(shù)注冊該窗口為系統(tǒng)父窗口,調(diào)用WM_PUSH()函數(shù)將主界面壓入窗口管理棧;
步驟S2 進入新的普通窗口界面,調(diào)用RegisterParentWin (Cffin^pffin)函數(shù)注冊該窗口為系統(tǒng)父窗口,調(diào)用WM_PUSH()將該窗口壓入窗口管理棧;
步驟S3 判斷該普通窗口上是否有用戶操作產(chǎn)生的創(chuàng)建彈出窗口,如果沒有用戶操作產(chǎn)生的創(chuàng)建新的彈出窗口,進入步驟S4;如果有用戶操作產(chǎn)生的創(chuàng)建新的彈出窗口,則進入步驟S5 ;
步驟S4 判斷是否有觸發(fā)新彈出窗口的事件發(fā)生,如果沒有觸發(fā)新彈出窗口的事件發(fā)生,則返回步驟S3 ;如果有觸發(fā)新彈出窗口的事件發(fā)生,則進入步驟S5 ;
步驟S5 調(diào)用RegisterActivePopWin (CWin*pWin)函數(shù),注冊該新的窗口為系統(tǒng)活動彈出窗口 ;創(chuàng)建并顯示該活動的彈出窗口并獲取焦點;然后進入步驟S6 ;
步驟S6 判斷是否有觸發(fā)新彈出窗口的事件發(fā)生,如果沒有觸發(fā)新彈出窗口的事件發(fā)生,則返回步驟S3 ;如果有觸發(fā)新彈出窗口的事件發(fā)生,則進入步驟S7 ;
步驟S7 先調(diào)用Vgm_UnRegisterActivePopWin ()函數(shù),注銷先前的激活彈出窗口,并隱藏或者銷毀該活動的彈出窗口 ;然后調(diào)用RegisterActivePopWin (CWin*pWin)函數(shù)注冊該新的事件彈出窗口為系統(tǒng)活動彈出窗口 ;創(chuàng)建并顯示該活動的彈出窗口并獲取焦點;然后返回到步驟S3。如此循環(huán)操作,系統(tǒng)一直對是否有新的彈出窗口進行判斷,當有新的窗口需要彈出時,注銷掉原來的活動窗口,而將新的彈出窗口作為系統(tǒng)的活動彈出窗口。在步驟S5和步驟S7中,創(chuàng)建該彈出窗口成功后,需要調(diào)用RegisterActivePopWin (pffin)函數(shù)進行注冊處理。所有的創(chuàng)建新的彈出窗口函數(shù),必須返回新創(chuàng)建的彈出窗口指針,所有創(chuàng)建的彈出窗口都不會進入系統(tǒng)的窗口棧中,而是使用全局變量g_pActiveP0pWin 進行統(tǒng)一處理。普通的窗口指針必須進入系統(tǒng)的窗口棧中進行統(tǒng)一管理。綜上所述,按照本發(fā)明的彈出窗口的實現(xiàn)和管理方式,就可以防止因彈出多個窗口而導致窗口焦點傳遞錯誤、焦點丟失而導致按鍵錯誤反應或者無反應等問題,保證系統(tǒng)中最后一個觸發(fā)的彈出窗口為活動窗口,保證系統(tǒng)焦點的正確傳遞、按鍵的正確反應。
權利要求
1.一種基于嵌入式系統(tǒng)圖形庫的管理彈出窗口的方法,其特征在于,當系統(tǒng)中需要彈出一個新窗口的時候,先判斷系統(tǒng)中是否已經(jīng)有彈出窗口存在,如果系統(tǒng)中已經(jīng)有彈出窗口存在,則先自動注銷并銷毀原來的彈出窗口,并使其失去焦點;然后再創(chuàng)建新的彈出窗口,獲取焦點并響應按鍵消息事件。
2.根據(jù)權利要求1所述的基于嵌入式系統(tǒng)圖形庫的管理彈出窗口的方法,其特征在于,如果系統(tǒng)中沒有彈出窗口存在,則直接注冊該新窗口為系統(tǒng)活動彈出窗口,創(chuàng)建并顯示該活動彈出窗口并獲取焦點。
3.根據(jù)權利要求1所述的基于嵌入式系統(tǒng)圖形庫的管理彈出窗口的方法,其具體步驟包括步驟Sl 系統(tǒng)啟動,進入主窗口界面;步驟S2 進入新的進入普通窗口界面的步驟;步驟S3 判斷該普通窗口上是否有用戶操作產(chǎn)生的創(chuàng)建彈出窗口,如果沒有用戶操作產(chǎn)生的創(chuàng)建新的彈出窗口,進入步驟S4;如果有用戶操作產(chǎn)生的創(chuàng)建新的彈出窗口,則進入步驟S5 ;步驟S4 判斷是否有觸發(fā)新彈出窗口的事件發(fā)生,如果沒有觸發(fā)新彈出窗口的事件發(fā)生,則返回步驟S3 ;如果有觸發(fā)新彈出窗口的事件發(fā)生,則進入步驟S5 ;步驟S5 注冊該新的窗口為系統(tǒng)活動彈出窗口,創(chuàng)建并顯示該活動的彈出窗口并獲取焦點,然后進入步驟S6 ;步驟S6 判斷是否有觸發(fā)新彈出窗口的事件發(fā)生,如果沒有觸發(fā)新彈出窗口的事件發(fā)生,則返回步驟S3 ;如果有觸發(fā)新彈出窗口的事件發(fā)生,則進入步驟S7 ;步驟S7:注銷先前的激活彈出窗口,并隱藏或者銷毀該活動的彈出窗口 ;然后注冊該新的事件彈出窗口為系統(tǒng)活動彈出窗口,創(chuàng)建并顯示該活動的彈出窗口并獲取焦點,然后返回到步驟S3。
全文摘要
本發(fā)明公開一種基于嵌入式系統(tǒng)圖形庫的管理彈出窗口的方法,當系統(tǒng)中需要彈出一個新窗口的時候,先判斷系統(tǒng)中是否已經(jīng)有彈出窗口存在,如果系統(tǒng)中已經(jīng)有彈出窗口存在,則先自動注銷并銷毀原來的彈出窗口,并使其失去焦點;然后再創(chuàng)建新的彈出窗口,獲取焦點并響應按鍵消息事件。本發(fā)明的彈出窗口管理方法可防止因彈出多個窗口而導致窗口焦點傳遞錯誤、焦點丟失而導致按鍵錯誤反應或者無反應的問題。
文檔編號G06F3/048GK102467328SQ20101054772
公開日2012年5月23日 申請日期2010年11月17日 優(yōu)先權日2010年11月17日
發(fā)明者南習清 申請人:康佳集團股份有限公司