www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當前位置:首頁 > 芯聞號 > 充電吧
[導讀]由于 Windows CE 系統(tǒng)的標準界面無法滿足車載及其它產(chǎn)品的需求,一般使用 Windows CE 的產(chǎn)品都會采用自定義、個性化的 UI。UI 的實現(xiàn)方案也是千差萬別,美觀是最基本的要求。其它如擴

由于 Windows CE 系統(tǒng)的標準界面無法滿足車載及其它產(chǎn)品的需求,一般使用 Windows CE 的產(chǎn)品都會采用自定義、個性化的 UI。UI 的實現(xiàn)方案也是千差萬別,美觀是最基本的要求。其它如擴展性、穩(wěn)定性等等要求,在設計時也是必須要考慮的。?

整個框架暫且不說,先簡單說說 UI 最終的實現(xiàn)方法。使用 GDI 貼圖可能是大家最容易想到,是的,這確實是最通用的。其對系統(tǒng)的要求也比較低,不必考慮硬有件是否支持;其次,為了實現(xiàn)一些特殊的效果,在產(chǎn)品方案支持的情況下使用 overlay 結(jié)合貼圖,利用 overlay 的特性完成 UI 之間的快速切換。例如:使用以下 CPU 的方案Telechips、SiRF Prima、iMX,MStar785等使用 Overlay 是沒有問題的;但 SiRF A5、MStar 2521等低端的 CPU 則不支持。這兩種方案,基本上都是使用 Windows CE 系統(tǒng)提供的功能。接下來是,使用諸如 Open GL ES 做出的支持較好的動畫效果的 UI。最后,使用 Windows CE 新特性的?Silverlight 來實現(xiàn)的 UI 產(chǎn)品,現(xiàn)在也慢慢的出現(xiàn)在車載系統(tǒng)中。但使用 Silverlight 對系統(tǒng)的硬件配置要求比較高,現(xiàn)在也只出現(xiàn)在一些高端的產(chǎn)品中。?

接下來說說框架,在 Windows CE 下編程,怎么也逃脫不了 Windows 消息框架,至于是使用 MFC 還是使用 Win32 編程,那可以說是仁者見仁智者見智。但無論選用哪一種,它也只是一個基礎。UI 框架如何設計,功能如何與 UI 完美的結(jié)合,以達到修改 UI 時盡可能不去關(guān)心功能代碼?這也是 Silverlight 推出時的設計想法:UI 設計和實現(xiàn),與功能的實現(xiàn)分開。這種分開,個人認為簡單的說就是耦合度降到最低,不可能徹底分開的。UI 與功能之間一般通過消息、回調(diào)或定時等機制結(jié)合在一起。例如有一種使用定時刷新的?UI 方案,界面刷新的工作由一個獨立的線程控制,定時檢查各 UI 控件是否需要刷新、及如何刷新?功能模塊在功能實現(xiàn)時,只需要觸發(fā)控件的刷新標志即可。?

例如如下刷新線程與功能代碼:?



//?刷新線程代碼:?刷新各類型控件?
while?
{?
???//?字符串顯示控件?
???foreach(各個字符串控件)?
???{?
??????if(控件.bRefreshFlag)?//?如果控件的刷新標志?
??????{?
?????????控件.bRefreshFlag?=?FALSE;?
?????????//?刷新操作?
??????}?
???}?
???//?按鍵控件?
???foreach(各個按鍵控件)?
???{?
??????if(控件.bRefreshFlag)?//?如果控件的刷新標志?
??????{?
?????????控件.bRefreshFlag?=?FALSE;?
?????????//?刷新操作?
??????}?
???}?
???//?......?????????????????????//?其它類型控件?
????Sleep(50);?
}?
?
//?功能代碼?
//?功能:?字符串顯示控件功能代碼?
//?參數(shù)說明:??csStr?控件顯示的字符串;?bRefreshFlag?刷新控件標志?
void?StrSettingFunction(CString?&csStr,BOOL?&bRefreshFlag)?
{?
???//??根據(jù)功能代碼賦值新的字符串?
???CString?csNewStr;?
???if(條件1)?
??????csNewStr=?L"XXX";?
???else?
??????csNewStr?=?L"YYY";?
???if(csStr?!=?csNewStr)?
???{?
??????csStr?=?csNewStr;?
??????bRefreshFlag?=?TRUE;?//?賦值刷新標志?
???}?
}?
//?功能:?按鍵控件功能功能代碼?
//?參數(shù)說明:??bEnable?按鍵使能標志(對應顯示Enable/Disable圖片);?bSelect?按鍵按下或選中圖片;?bRefreshFlag?刷新標志?
void?BtnSettingFunction(BOOL?&bEnable,BOOL?&bSelect,BOOL?&bRefreshFlag,...)?
{?
???BOOL?bNewEnable;?
???BOOL?bNewSelect;?
???if(條件1)?
??????bNewEnable?=?TRUE;?
???else?
??????bNewEnable?=?FALSE;?
???if(條件2)?
??????bNewSelect?=?TRUE;?
???else?
??????bNewSelect?=?FALSE;?
???if(bEnable?!=?bNewEnable)?
???{?
??????bEnable?=?bNewEnable;?
??????bRefreshFlag?=?TRUE;?//?賦值刷新標志?
???}?
???if(bSelect?!=?bNewSelect)?
???{?
??????bSelect?=?bNewSelect;?
??????bRefreshFlag?=?TRUE;?//?賦值刷新標志?
???}?
}




以上功能函數(shù)只是一個示例,例如:按鍵控件可能需要顯示字符串,其必然包含一個與字符串顯示類似的函數(shù)。各個控件都會有顯示/隱藏屬性,這個在功能代碼中也需要體現(xiàn)出現(xiàn)。為了方便控件布局,一般都會支持子窗口,這是一個多個功能的集合。?

如何使 UI 的設計具有簡單、方便的移植性?這是大家在設計時都會考慮的內(nèi)容。只所以這樣考慮,是想在功能不變、或簡單變化的情況下,能快速完成修改、且保證產(chǎn)品的穩(wěn)定性。特別是一些車載方案公司,對于一些要求不高的小客戶在快速確定?UI?后幾天就可以完成產(chǎn)品的交付。這種修改,一般包括換圖和圖片位置的調(diào)整。如何簡單有限的記錄圖片與圖片的位置等信息呢?早在幾年前,就有通過簡單的格式化文本來完成的方案。后來標記語言興起,在嵌入式方案中也得到廣泛應用,特別是?XML?語言。XML?語言的特點這里就不多說了,有興趣的童鞋在網(wǎng)絡上查找一下,就能得到答案。在這些方案中,都有用到圖片處理的技術(shù),以實現(xiàn)透明、半透明等效果。圖片一般采用?BMP?和?PNG?格式,為了方案的保密性等其它一些考慮,圖片一般通過工具打包,甚至于,XML?文件也一起打包。這樣在不了解打包后文件格式的情況下,客戶就必須依賴于軟件設計者。?

以上三部分結(jié)合在一起,就構(gòu)成了車載應用系統(tǒng)中單個應用軟件的框架:控件/子窗體/完整的界面。再給合一個對多個應用控制的邏輯,完成應用啟動/關(guān)閉(顯示/隱藏)等的控制,以完成一個完整的系統(tǒng)的設計實現(xiàn)。?

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
關(guān)閉
關(guān)閉