新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 適用于移動終端的GUI設(shè)計與實現(xiàn)

適用于移動終端的GUI設(shè)計與實現(xiàn)

作者: 時間:2009-05-07 來源:網(wǎng)絡(luò) 收藏

要在圖形輸出設(shè)備上繪制圖形,在調(diào)用圖形輸出函數(shù)時,均要求指定經(jīng)初始化的圖形設(shè)備上下文(Device Context,DC),也稱作設(shè)備環(huán)境。設(shè)備上下文是連接應(yīng)用程序、設(shè)備程序以及輸出設(shè)備的紐帶,見圖3。設(shè)備上下文包含許多屬性,當需要修改這些屬性時,只需調(diào)用一個GDI函數(shù)修改設(shè)備上下文中屬性的參數(shù)。

圖3. 設(shè)備上下文

一個圖形設(shè)備上下文所代表的含義很復(fù)雜,它起碼應(yīng)該包含如下內(nèi)容[5]:

? 該設(shè)備上下文本所在設(shè)備信息(顯示模式、色彩深度、顯存布局等等);

? 該設(shè)備上下文所代表的窗口以及該窗口被其他窗口剪切的信息

? 該設(shè)備上下文的基本操作對象(筆、刷子、字體、位圖、區(qū)域等),及其上下文信息;

? 由程序設(shè)定的局部信息(繪圖屬性、映射關(guān)系和局部剪切域等)。

2.2.2 繪圖函數(shù)

設(shè)備上下文的屬性決定了有關(guān)繪圖函數(shù)如何工作的細節(jié)。通過繪圖函數(shù)應(yīng)用程序能夠方便地畫出直線、矩形、圓、橢圓和其它復(fù)雜圖形,而不需直接與具體的輸出設(shè)備打交道。

2.2.3使用GDI對象的函數(shù)

當調(diào)用繪圖函數(shù)時,使用當前設(shè)備上下文中選擇的GDI對象來進行繪圖。GDI共有筆、刷子、字體、位圖、區(qū)域和邏輯調(diào)色板六個對象。

例如可以通過在CreatePen、 CreatePenIndirect或ExtCreatePen函數(shù)中指定這些特征來建立一個邏輯畫筆,這些函數(shù)傳回一個邏輯畫筆的句柄。要使用這個畫筆,就要用SelectObject將畫筆句柄選進設(shè)備內(nèi)容。這樣,畫任何線都使用這個畫筆,然后可以取消設(shè)備內(nèi)容中的畫筆選擇,并清除畫筆對象。清除畫筆對象是必要的,因為畫筆定義占用了分配的內(nèi)存空間。

除了畫筆以外,GDI對象還用于建立填入封閉區(qū)域的畫刷、字體、位圖以及GDI的其它一些方面。

2.3 消息隊列
產(chǎn)生的消息主要包括:按鍵事件消息、協(xié)議棧消息及自定義消息等。按鍵一般有12個標準電話按鍵、左右2個軟鍵、5個導(dǎo)航鍵(上、下、左、右、中) 、撥號鍵和掛機鍵,由此可產(chǎn)生對應(yīng)的短按鍵及長按鍵消息。按鍵的按下及釋放產(chǎn)生按鍵事件,對比鍵碼表對按鍵事件進行解碼,獲取正確的按鍵消息。按鍵消息經(jīng)消息過濾后送往當前焦點窗口。GSM 協(xié)議棧消息是由手機平臺產(chǎn)生的送往消息隊列的協(xié)議棧消息,主要是網(wǎng)絡(luò)事件及手機狀態(tài)的響應(yīng)消息,包括所有對SIM卡、網(wǎng)絡(luò)狀態(tài)、通話、短消息等的響應(yīng)消息。協(xié)議棧消息需傳送到賦于系統(tǒng)窗口屬性的窗口,但窗口并不需要對每一項協(xié)議棧消息進行處理,只依據(jù)窗口函數(shù)的具體屬性定義進行消息響應(yīng)。

采用消息機制,把上面這些消息收集在一個消息隊列中,然后將這些消息連同定時器和重畫消息一起放入應(yīng)用程序消息隊列中。應(yīng)用程序消息隊列是屬于各個應(yīng)用程序所有的先進先出隊列。但是定時器消息和重畫消息保留在隊列中直到應(yīng)用程序處理完所有其它消息后才予以處理。將屬于一個特定應(yīng)用程序的消息放入該應(yīng)用程序的消息隊列中,然后應(yīng)用程序讀取這些消息,并將它們發(fā)送給相應(yīng)的窗口函數(shù)。



評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉