[翻譯]-WinCE 程式設計 (3rd 版)–1.1 Windows CE有什麼不同之處

來源:互聯網
上載者:User

Windows CE有什麼不同之處
Windows CE有許多特性使得它不同於其它Windows 平台。首先,運行Windows CE的系統,大多數可能不使用Intel x86相容微處理器。實際上,Windows CE運行在4種不同的CPU系列裡:SHx, MIPS, ARM, 和 x86。幸運的是,開發環境幾乎將各種不同CPU的所有差異與程式員隔離開了。

Windows CE程式事先不能確定螢幕或鍵盤。Pocket PC裝置有一個240*320的縱向螢幕,而其它系統具有傳統的480*240,640*240,640*480像素解析度的橫向螢幕。一些嵌入式裝置則根本沒有顯示器。一些目標裝置可能不支援彩色,並且大部分Windows CE裝置用觸控螢幕替代了滑鼠。一些在觸控螢幕裝置上,輕觸螢幕,表示滑鼠左鍵點擊,沒有明顯的方法代表滑鼠右鍵。為了能處理右鍵,Windows 約定,當輕觸螢幕的時候,按下Alt鍵,由Windows CE程式把這個組合序列解釋為滑鼠右鍵點擊。

Windows CE裝置具有更少的資源
運行Windows CE系統的目標裝置上,各種資源變化極大。當寫一個標準Windows 程式的時候,程式員可以對目標裝置做許多假定,並且裝置幾乎都是IBM相容機。目標裝置通常有硬碟用於儲存,同時虛擬記憶體系統用硬碟作為交換裝置來類比一個幾乎沒有數量限制的虛擬記憶體。程式員知道使用者有鍵盤、雙鍵滑鼠以及可以當前支援256色、至少有800*600解析度的顯示器。

Windows CE程式所啟動並執行裝置幾乎都沒有硬碟作為大型存放區。沒有硬碟不僅僅意味著沒有地方儲存大量檔案,也意味著不能交換資料到磁碟上來建立虛擬記憶體。所以Windows CE程式幾乎總是在少量記憶體環境裡啟動並執行。因為資源缺乏,記憶體配置經常失敗。當空閑記憶體達到一個嚴重低的層級,Windows CE可能會自動終止一個程式。RAM的限制對Windows CE程式有很大的影響,並且是將現有的Windows應用程式移植到Windows CE過程涉及的主要挑戰之一。

Unicode
在寫Windows CE程式時,程式員可以使用的一個特性是Unicode. Unicode是一個字元編碼標準,使用16位表示一個字元,相對的,ASCII標準是用單個8位編碼一個字元。Unicode 允許相當簡單將程式移植到不同的國際市場,因為世界上所有已知的字元都可以用65,536個Unicode 值裡的一個來表示。處理Unicode相對容易,只要避免假設字串是用ASCII代表和字元是按單個位元組儲存的。

使用Unicode的一個結果是每個字元佔2個位元組而不是一個,字串長了一倍。程式員必須小心計算緩衝區和字串的長度。你不能再假設260位元組可以儲存259個字元和一個0結尾符。作為標準char資料類型的替代品,你應該使用TCHAR資料類型。TCHAR在MS Windows 95和98中定義為char型,在Windows 2000,XP,Windows CE中,使用Unicode功能的程式裡,TCHAR定義為unsigned short類型。這些類型定義,允許在基於ASCII和Unicode的作業系統上原始碼級的相容。

新控制項
Windows CE上有許多為特殊環境設計的新控制項。包括命令條、菜單條控制項,提供類似菜單和工具條的功能,在具有更小螢幕的Windows CE裝置上,這些為了節省空間的都合并一行裡。其它控制項也為Windows CE做了改進。Windows CE裡的編輯控制項(edit control)可以設定為自動將單字首大寫,這對在無鍵盤的PDA上進行設計是很重要的。對於Windows 案頭版本裡的控制項,Windows CE則提供了大部分。例如,日期和時間調整控制項、日曆控制項使日曆和管理器應用程式更加適合諸如H/PC和Pocket PC等手持功能。其它Windows標準控制項做了功能裁減,這反應了Windows CE特殊的硬體系統配置所具有的緊湊簡潔特性。

組件化
Windows CE編程中另一個需要注意的方面是Windows CE可以被微軟或OEM廠商分解和重新設定,以更好地適應目標市場或裝置。Windows程式員通常只是檢查Windows 版本,看是否是Windows 95/98,Me系列或者2000,XP系列。通過獲得版本,程式員可以判斷哪些API函數可以使用。然而,Windows CE可以按無數種方式配置。

迄今為止,Windows CE最流行的配置是Pocket PC。微軟定義了具體Windows CE組件集合,這些都體現在所有稱為Pocket PC的裝置上。然而,一些用Windows CE生產的OEM產品--PDA裝置,並不叫Pocket PC。這些裝置同Pocket PC裝置在API上略微不同。如果你沒有意識到這一點,你很容易寫一個程式能運行在一個平台,卻不能運行在另一個平台。在嵌入式平台上,OEM廠商決定包括什麼組件,並可以為它特定的平台建立一個SDK開發包。如果OEM廠商對第三方開發感興趣,它會為它的裝置提供一個可定製的SDK包。新的平台不斷出現,它們有許多共同的地方,也有許多不同之處。程式員需要瞭解目標平台,在嘗試用一個可能不被裝置支援的功能集時,需要讓程式檢查在特殊平台上什麼函數可用。

Win32子集
最後,因為Windows CE比XP小很多,它不能像它大塊頭的兄弟XP那樣支援所有的函數調用。當你面對一個不支援列印功能的作業系統,比如原始模式下的Windows CE時,不要調用任何列印函數,Windows CE還去除了一些XP中支援的冗餘功能。雖然Windows CE可能不支援你喜歡的功能,但其它不同的函數集可能會工作的很好。有時Windows CE編程似乎主要是用Windows CE中稀少的API來找出實現一個特性的方式,雖然成千上萬的函數很少被調用。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.