WIN32的應用編程接口定義了你作為一個程序員有用的Windows平臺。WIN32應用編程接口的目的是提供了一個常用的界面的設置,可是虛擬,不同的平臺由于不同的特性及硬件的約束,其應用編程接口也不同。WIN32平臺家族的一些成員支持全部的WIN32的應用編程接口(下簡稱API),而其他的只支持一部分的API。 為緊湊的、嵌入式式的應用軟件和小型設備而設計的Windows CE,WIN32的API最受限制。盡管如此, Windows CE 的API也是足夠完善的,能夠處理實際的大量的高級的嵌入式式應用程序。
WIN32與Microsoft基本類庫(MFC)
用WIN32界面設計并不是創建32位基于 Windows的應用程序的唯一的途徑。另一種重要的途徑是可在WIN32與 Microsoft Visual C++開發環境使用的Microsoft基本類庫(MFC)。MFC為許多(不是所有)的WIN32的API進行了高度的封裝(圖1)。 通常,MFC提供了代表重要的WINDOWS的用戶界面對象的類,象窗口,對話框,畫刷,畫筆,和字體。MFC也為沒有任何用戶界面要求的嵌入式式應用軟件提供了相應的類。MFC類的成員函數調用WIN32API的函數,可以使復雜的應用程序的設計巧妙的簡化。
作為WIN32的程序員,你可以自由的選取使用C或C++和WIN32 API, 或者用C++與MFC。VISUAL C++開發系統對于所有的,包括 Windows CE 的WIN32的目標操作系統都支持以上的兩種開發系統。
本文直接介紹WIN32 API。應用 Windows CE下的MFC的具體的消息,參閱 Windows CE SDK文檔。
那些對WINDOWS CE的人可能會有一個錯覺,認為它僅僅是現有的操作系統(如WINDOWS95)降級版。但事實上Windows CE是以小型的、高度用戶化的面向嵌入式式應用程序的操作系統開發起來的。在WINDOWS CE排除(或代替)了一些基于WINDOWS CE的應用軟件所不需要的操作系統特性的同時,它的內核也具有大量的其他Microsoft 32位的操作系統的最精華的東西。例如在Windows NT下, 所有的在Windows CE下運行所應用軟件都運行在有優先權的多任務處理環境下,在被全保護的內存空間里。還有,象 Windows NT一樣,Windows CE支持本地統一的字符編碼標準碼字符串,使它更適于國際推廣??墒?,不象其他的32位WINDOWS平臺,, Windows CE是十分緊湊和用戶化的,僅僅占用小于200K的內存。
Windows CE的WIN32 API比其他的32位的Windows操作系統的WIN32 API要?。凰话ù蠹s相當于Windows NT的半數的API。但是 Windows CE的WIN32 API也有其他系統所沒有的特性。例如:通知API,它能夠操作系統的層次,而不是在運行的應用程序的層次上處理通知事件(如時鐘)。觸屏的API和對Windows CE的數據庫的內置的支持是其他的操作系統所沒有的。觸屏的API使用于觸覺敏感顯示器的屏幕校正和用戶交互的治理輕易實現,而數據庫的API提供了快速簡捷的訪問緊湊的、一般用途的數據庫的工具。另一個關于Windows CE的鮮為人知的方面是它的高度的模塊化;嵌入式式系統開發者(用Microsoft Windows CE內含的面向Visual C++的軟件包)能夠創建一個對于它們的獨特的硬件平臺和應用軟件用戶化了的Windows CE的版本。
Windows CE操作系統為設計提供了全新的設計環境。Windows CE的開發者幾乎不需要支持原有的應用程序或設備,所以操作系統在設計時可以考慮到應用一些最新的思想和應用程序,并且應用最先進的嵌入式式的32位微處理器產品作為它的硬件目標平臺。
每一個中斷有一個優先級與他們相聯系。 windows CE為確定的線索時時序,利用基于優先級的時間片段算法。與每一ISR 被聯系的IST 是正常的線索,因此為IST設置優先級以滿足應用程序的時序需要是應用程序軟件開發者的責任。
這種將ISR 和IST在中斷程序中分開處理最終結果是,典型的中斷等待時間被大大地減少了,在中斷程序中發生不可接受的延遲的可能性也大大減少。此外, 嵌入式式軟件包 和windows CE內核的特性使有可能按習慣定制中斷時序和優先級,以滿足特定應用程序的需要。 Windows CE和其使用的時間臨界、實時應用程序在另一篇文章中包括比本文更具體的內容,文章名為《 Real-time Systems with Microsoft Windows CE》。
意外情況處理是強大的編程技術,相應一套的WIN32 API 起函數能輕易的發現未預料到的錯誤狀況,并且使之恢復。結構化的意外情況處理,答應危險的段的代碼可能由于硬件資源的問題、設備的沖突和微小的編碼錯誤而導致失敗,以使這部分程序與其余的應用程序分開。這保護了應用程序,使之免于過早的終止或者產生敏感的系統問題。