新聞中心

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

適用于移動(dòng)終端的GUI設(shè)計(jì)與實(shí)現(xiàn)

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

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

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

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

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

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

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

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

2.2.2 繪圖函數(shù)

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

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

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

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

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

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

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



評(píng)論


相關(guān)推薦

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

關(guān)閉