WindowsCE程序設(shè)計資料_第1頁
WindowsCE程序設(shè)計資料_第2頁
WindowsCE程序設(shè)計資料_第3頁
WindowsCE程序設(shè)計資料_第4頁
WindowsCE程序設(shè)計資料_第5頁
已閱讀5頁,還剩245頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

WindowsCE程序設(shè)計

作者對如何把Windows、嵌入式程序設(shè)計經(jīng)驗應(yīng)用到WindowsCE.NET環(huán)境里做了嫻熟的示范。這這個環(huán)境

里,可以為支持Windows的PocketPC、Smartphone以及其它下一代設(shè)備編寫更快,更小的應(yīng)用。

目錄

前言

第一部分-Windows程序設(shè)計基礎(chǔ)

第1章-"HelloWindowsCE”

第2章-屏幕繪畫

第3章-輸入:鍵盤、鼠標和觸摸屏

第4章-窗口、控件和菜單

第5章-公共控件和WindowsCE

第6章-對話狂和屬性表

第二部分-WindowsCE程序設(shè)計

笫7章-內(nèi)存管理

第8章-文件和注冊

第9章-WindowsCE數(shù)據(jù)庫

第10章-模塊、進程和線程

笫11章-通知機制

第三部分-通信

第12章-串口通信

第13章-WindowsCE網(wǎng)絡(luò)通信

第14章-設(shè)備間通信

第15章-桌面連接

第四部分設(shè)備編程

第16章-瀏覽器Shell編程

第17章-PocketPC編程

第18章-PocketPC擴展

第19章-Smartphone編程

第20章-游戲API-GAPI

第五部分-WindowsCE高級編程

第21章-系統(tǒng)編程

第22章-設(shè)備驅(qū)動程序和服務(wù)編程

第23章-.NetCF下的程序設(shè)計

索引

封底

用這本廣受業(yè)界推崇的WindowsCE.NET參考書,為最新的智能移動設(shè)備設(shè)計整潔、高性能的應(yīng)用程序。在

第3版里,基本內(nèi)容已經(jīng)根據(jù)WindowsCE.NET4.2和微軟.NETCF做了更新。作者DouglasBoling對如

何把Windows、嵌入式程序設(shè)計經(jīng)驗應(yīng)用到WindowsCE.NET環(huán)境里做了嫻熟的示范。在這個環(huán)境里,可以

為支持Windows的PocketPC,Smartphone以及其它下一代設(shè)備編寫更快,更小的應(yīng)用。在DouglasBoling

專家級的指導下,可以促進提升你的技術(shù),更快的適應(yīng)市場變化。

內(nèi)容要點:

?用特定的技術(shù)處理內(nèi)存、存儲和電源限制

?能夠和網(wǎng)絡(luò)、PC、其他設(shè)備(包括使用紅外線和藍牙技術(shù)的設(shè)備)通信

?新內(nèi)容一為Smartphone的特殊要求編程,包括安全特性。

?新內(nèi)容一在PocketPCPhone和Smartphone上使用短消息服務(wù)(SMS)寫面向連接的應(yīng)用

?新內(nèi)容一編寫自己的設(shè)備驅(qū)動程序、服務(wù)程序和超級服務(wù)程序

?配置用戶和事件通知

?使用游戲API編程

關(guān)于作者

作為一個作家、培訓師和顧問,DouglasBoling從WindowsCE初始就開始涉足這個領(lǐng)域了,被公認為這

個平臺的權(quán)威。他頻繁的出現(xiàn)在各種主要的專業(yè)開發(fā)人員大會上,微軟嵌入式開發(fā)大會、微軟專業(yè)開發(fā)者

大會以及TechEd都有他的身影。通過他的BolingConsulting公司,Doug為許多在WindowsCE上工作的

一流公司做教學和咨詢。

主要的專業(yè)開發(fā)人員大會上,微軟嵌入式開發(fā)大會、微軟專業(yè)開發(fā)者大會以及TechEd都有他的身影。通過

他的BolingConsulting公司,Doug為許多在WindowsCE上工作的一流公司做教學和咨詢。

前言

幾乎是從晅ndowsCE誕生起,我就開始在它上面工作了。作為一個多年的Windows程序員,能夠?qū)⑽业?/p>

Windows程序設(shè)計經(jīng)驗應(yīng)用到如此多

的不同而又很小的系統(tǒng)上,使我感到吃驚。這些WindowsCE系統(tǒng)運行在各個領(lǐng)域,從類似PC的迷你膝上

機到蜂窩手機,再到深藏于一些大

型工業(yè)設(shè)備里的嵌入式設(shè)備。WindowsCE里的Win32API使成千上萬的哨ndows程序員能夠在--個全新的

系統(tǒng)領(lǐng)域里寫應(yīng)用程序。然而,細

微的差別,使得在WindowsCE中編程不同于在桌面版本的Windows中編程。我將在本書里進行講解的正是

這些差異。

WindowsCE到底是什么?

WindowsCE是最小,也可能是最有趣的微軟Windows操作系統(tǒng)。WindowsCE徹頭徹尾的被設(shè)計成一個基

于ROM的,使用Win32API子集的小

型操作系統(tǒng)。WindowsCE把WindowsAPI擴展到那些不支持大容量XP內(nèi)核的領(lǐng)域和機器上。

目前逐步消亡的Windows95/98/Me對那些需要向后兼容MS-DOS、Windows2.x和3.x程序的用戶來說,

是個大操作系統(tǒng)。雖然它有缺點,

但聽ndowsMe還是繼承了這個困難的任務(wù)。另-方面,WindowsNT/2000/XP是用于企業(yè)級的。它犧牲了

兼容性和大小,來達到高級別的穩(wěn)

定和健壯。WindowsXP家庭版是WindowsXP的一個版本,用于家庭用戶,它盡力保持了兼容性,但這相

對于它的基本目標一穩(wěn)定性來說

,兼容性還是排在第2位的。

WindowsCE并不向后兼容MS-DOS或者Windows.它不是一個為企業(yè)級計算設(shè)計的全功能的操作系統(tǒng)。相反,

WindowsCE是一個輕量級、多線

程的操作系統(tǒng),它具有可選的圖形用戶接口。它的長處在于它的小尺寸、Win32API子集和多平臺支持。

WindowsCE也是最初.NETCF版本的基礎(chǔ),.NETCF是.NET在移動和嵌入式設(shè)備上的版本。這個精簡框架

使用一個更小的類庫提供了一個同

樣強大的.NET運行時環(huán)境,這使得它適合用于電池供電的小型設(shè)備上.

WinCE歷史簡介

為了理解WindowsCE的歷史,你需要理解操作系統(tǒng)和使用操作系統(tǒng)的產(chǎn)品之間的區(qū)別。操作系統(tǒng)是微軟內(nèi)

部一組核心團隊開發(fā)的。他們的產(chǎn)品就是操作系統(tǒng)自身。其他團隊,比如開發(fā)PocketPC的團隊,在操作

系統(tǒng)即將發(fā)布的時候,獲得并使用最新版本的操作系統(tǒng)。這種劃分成兩部分的方式,可能對理解WindowsCE

是怎么發(fā)展的會產(chǎn)生一些混淆。下面讓我們分別看一下這兩部分的歷史一設(shè)備和操作系統(tǒng)自身。

設(shè)備

首批為WindowsCE設(shè)計的是手持式“管理器”設(shè)備,配有480*240或640*240的屏幕和Chiclet鍵盤(計

算機常用的一種鍵盤,有一個很小的矩形鍵盤)。這些設(shè)備,稱為手持式PC,在1996年首次面世。在Fall

Comdex97大會上,WindowsCE2.0,一個進行了顯著更新的操作系統(tǒng)版本發(fā)布了,和它配套的是類似的

更新一些的硬件,具有640*240的橫向屏幕,一些是彩色的,還具有略大一些的鍵盤。

1998年1月,消費電子展覽會上,微軟宣布了兩個平臺,掌上電腦(譯者注:Palm-sizePC可以看作Pocket

PC的前身,其中使用WindowsCE2.x的稱為Palm-sizePC,使用WindowsCE3.x的稱為PocketPC)和

車載PC(譯者注:AutoPC是WindowsCE的一種應(yīng)用模式,多用在一些車載電腦、工業(yè)自動控制等場合,

可按客戶需要修改輸入輸出方式而不限定使用原有的程序。)。掌上電腦目標直接瞄準了由Palm0s統(tǒng)治

的基于筆式的管理器市場。掌上電腦具有縱向顯示的特點,并配有240*320的屏幕,使用輸入筆來作為輸

入方式。但是很不幸,對WindowsCE愛好者來說,對這種原始掌上電腦,公眾顯然缺乏熱情。

此后,出現(xiàn)了一種新的迷你膝上式WindowsCE設(shè)備,配備了觸摸式輸入鍵盤和VGA/SuperVGA屏幕。這種

設(shè)備被稱為H/PC(專業(yè)版),電池可使用10小時,并配備了微軟PocketOffice軟件改進版。這種設(shè)備

中有許多具有內(nèi)置Modem,一些甚至配備了thenstandard屏幕,移動軌跡墊或者IBM軌跡球設(shè)備。

2000年4月,微軟宣布了PocketPC,它對老式掌上電腦(Palm-sizePC)做了極大的增強。最初的Pocket

PC使用預發(fā)布的具有更多功能的WindowsCE3.0.PocketPC的用戶界面也有所不同,具有更加整潔的2

緯外觀和修改過的主頁-Today桌面。然而,PocketPC最重要的特性是極大的改進了WindowsCE的性能。

微軟做了很多工作來調(diào)優(yōu)WindowsCE的性能。這些改進加上更快的CPU,可以讓系統(tǒng)像Pocket管理器期

望的那樣運行的更快。在這種PocketPC里,摩爾定律使得WindowsCE設(shè)備可以跨越這條線:現(xiàn)在硬件已

經(jīng)有能力提供WindowsCE需要的運算能力了。

手持式PC在2000年時升級到了WindowsCE3.0?雖然這些系統(tǒng)(現(xiàn)在稱為手持式PC2000)在消費領(lǐng)域沒

有成功,但在工業(yè)領(lǐng)域找到了市場。它憑借相對低的費用,大屏幕和長時間電池能力滿足了這個機會市場。

2001年晚些時候,PocketPC更新為PocketPC2002?這次發(fā)布使用了柜ndowsCE3.0的最終發(fā)布版本,

并做了一些用戶接口方面的改進。同時也增加了PocketPCPhone版本,在PocketPC設(shè)備中集成了蜂窩

電話支持功能。這些設(shè)備具有了PocketPC的功能,也具有蜂窩電話的聯(lián)通功能,形成了新一代的幾乎可

以始終連接的移動軟件。

微軟的另一組人發(fā)布了SmartDisplay(譯者注:一種具有觸摸屏的無線監(jiān)視器,可以通過802.11b無線網(wǎng)

絡(luò)連接到個人計算機,并使用WindowsXPProfessional操作系統(tǒng)的"RemoteDesktop”(遠程桌面)來

訪問主機)。它使用WindowsCE.NET4.1系統(tǒng),具有平板式設(shè)備形式,有無線網(wǎng)絡(luò)訪問能力,有一個底座

可以連接到PC上。當使用底座的時候,它可以做第2個顯示器。當不用底座的時候,它可作為PC的移動

顯示器。

2003年春季,PocketPC團隊發(fā)布了升級版的PocketPC,稱為PocketPC2003?系統(tǒng)在用戶接口方面沒

有很多變化,但由于是基于WindowsCE.NET4.2,所以在穩(wěn)定性和性能方面都有了巨大改進。PocketPC2003

還集成了藍牙支持功能,OEM廠商可以選擇是否包含該功能。

微軟還和OEM廠商合作生產(chǎn)基于WindowsCE的蜂窩電話。這些電話中的少部分被稱為Smartphone(智能

電話),在2002年末發(fā)布了,最初是基于WindowsCE3.0?2003年升級到了WindowsCE4.2,并增加了

一系列特征,包括.NETruntime功能。

新設(shè)備一直不斷在發(fā)布,例如MediatoGo設(shè)備,就是使用硬盤來存儲的移動視頻播放器。WindowsCE操

作系統(tǒng)的強大功能,使應(yīng)用程序憑借運行在這些設(shè)備上的簡單操作系統(tǒng)超越了系統(tǒng)能力。

操作系統(tǒng)

雖然面向消費者的產(chǎn)品可以不斷產(chǎn)生新聞熱點,但最重要的開發(fā)工作仍然在操作系統(tǒng)自身。WindowsCE從

1.0之日就開始不斷演化,當它還是一個簡單的管理器操作系統(tǒng)時就被寄予厚望。從*ndowsCE2.0開始

一直持續(xù)到今日,微軟不斷發(fā)布WindowsCE的嵌入式版本,使開發(fā)者可以用在他們自定義的硬件上。雖然

像PocketPC等消費平臺占據(jù)了宣傳的主體,但對基本操作系統(tǒng)的改進是使諸如PocketPC和Smartphone

之類的設(shè)備能夠運做的基礎(chǔ)。

在FallComdex1997大會上,WindowsCE2.0隨著手持式PC2.0一起發(fā)布了。WindowsCE2.0增加了網(wǎng)

絡(luò)支持,包括Windows標準網(wǎng)絡(luò)功能,支持NDISminiport驅(qū)動模式,以及通用NE2000網(wǎng)絡(luò)卡驅(qū)動支持。

雖然增加的COM被限制在進程內(nèi)服務(wù),但可以用來支持腳本編寫.引入了新的顯示驅(qū)動模式,可以支持像

素深度,而不再是WindowsCE1.0中原始的每像素2位了。WindowsCE2.0是WindowsCE操作系統(tǒng)中第

一個與諸如H/PC等產(chǎn)品分離,獨立發(fā)布的版本。開發(fā)者可以購買WindowsCE嵌入式工具包(ETK),它可以

讓開發(fā)者為特殊的硬件平臺定制WindowsCE。然而,用過ETK后,開發(fā)者會發(fā)現(xiàn),這個產(chǎn)品的功能還沒有

達到它所宣稱的目標。

隨著掌上電腦(Palm-sizePC)在1998年初發(fā)布后,WindowsCE又在不斷改進。雖然WindowsCE2.01

沒有按ETK形式發(fā)布,但它在減少操作系統(tǒng)和應(yīng)用程序大小方面做的努力還是值得稱道的。在所ndowsCE

2.01中,C運行時庫從每個EXE和DLL都要綁定的靜態(tài)鏈接庫中去掉了,放到了操作系統(tǒng)里。這極大的減

小了操作系統(tǒng)和應(yīng)用程序的大小。

1998年8月,微軟發(fā)布了H/PC,配套的發(fā)布了操作系統(tǒng)的新版本-2.11版。WindowsCE2.11是從未正式

發(fā)布的WindowsCE2.1的服務(wù)升級包。這一年年末,WindowsCE2.11作為WindowsCE平臺的2.11版本,

發(fā)布給了嵌入式開發(fā)者社區(qū)。該版本支持改進的對象存儲,允許要存儲的文件大于4M。還增加了對控制臺

程序的支持,同時增加了MS-DOS風格的命令行解釋器的WindowsCE支持。WindowsCE2.11還增加了Fast

IR,用于支持IrDA的4M紅外線標準,同時增加了一些特殊功能來支持IP多點傳送。最初的安全概念被引

入:設(shè)備可以檢查和拒絕裝載沒有被認證的模塊。

WindowsCE2.12也是作為2.1-白樺(WindowsCE2.1的代號)的服務(wù)包發(fā)布的。這次發(fā)布中最大的亮點

是一個增強的平臺Builder工具集,它具有一個圖形化的前端界面。用?個新的通知接口調(diào)整了系統(tǒng)操作,

新的接口將不同的通知功能進行了組合。通知的用戶接口暴露在平臺Builder中,允許嵌入式應(yīng)用開發(fā)者

定制通知對話框。微軟基于PC的Internet瀏覽器IE4.0也被引入到WindowsCE中,稱為Genie-通用

IE控件。這個HTML瀏覽器控件完善了簡單小巧的PocketInternet瀏覽器。微軟消息隊列(MMQ)也被加

了進去。WindowsCE2.11中的安全功能“運行/不運行(go/nogo)”也增加了"運行,但不信任(go,but

don'ttrust)”的選項。這樣,不被信任的模塊可以運行,但不能調(diào)用關(guān)鍵功能集,也不能修改注冊表的

某些部分。

期待已久的WindowsCE3.0終于在2000年中發(fā)布了。這次發(fā)布是跟隨同年4月發(fā)布的PocketPC的,它

使用了WindowsCE3.0略早一些的內(nèi)部版本。WindowsCE3.0最大的亮點在它的內(nèi)核,內(nèi)核為更好的支

持實時功能而做了優(yōu)化。增強后的內(nèi)核,支持256個線程優(yōu)先級(之前的版本是8個),可調(diào)整線程周期,

可嵌套的中斷服務(wù)程序,并減少了內(nèi)核等待時間。

WindowsCE3.0改進的地方不僅僅在內(nèi)核上。一個新的COM組件被加入進來,用來完善2.0就有的進程內(nèi)

COM功能。新的組件支持完整的進程外COM和DCOM功能。對象存儲區(qū)域也做了改進,可以支持256MRAM

了。對象存儲區(qū)域里的文件大小限制也提高到了32M/文件。PlatformBuiIder3.0的附加的軟件包加入了

更多的功能,增加了mediaplayer控件,提高了多媒體支持。用PPTP,ICS和遠程桌面顯示功能改進了網(wǎng)

絡(luò)支持。還正式引入了DirectXAPI。

WindowsCE接下來的一個版本,改變的不僅僅是新特性,產(chǎn)品的名字也改了。2001年初,WindowsCE.NET

4.0發(fā)布了。這個版本里,改變了虛擬內(nèi)存的管理方式,將每個應(yīng)用程序的虛擬內(nèi)存空間擴大了1倍。Windows

CE.NET4.0還增加了新的驅(qū)動裝載模式,服務(wù)(Services)支持,新的基于文件的注冊選項,藍牙功能,802.11

以及1394支持。具有諷刺意味的是,WindowsCE.NET4.0雖然叫.NET,但卻不支持.NET精簡框架。

2001年末,WindowsCE4.1跟隨眄ndowsCE4.0之后發(fā)布了,增加了IPv6支持,Winsock2支持,一組

支持applets的新功能,以及一個叫PowerManager的例子。WindowsCE4.1支持.NET精簡框架。.NET運

行時庫作為一個快速修復包(QFE),在操作系統(tǒng)發(fā)布后提供的。

2003第2季度,WindowsCE.NET4.2發(fā)布了。這次升級,提供了很棒的、OEM廠商期待的新特性-在嵌入

式系統(tǒng)上支持PocketPC應(yīng)用程序。PocketPC特有的API,比如菜單條、軟輸入法以及其它解釋器特性,

被移植到基本操作系統(tǒng)里了。為支持名字空間擴展,瀏覽器Shell被重寫。通過在某些CPU上直接支持硬

件分頁表功能,內(nèi)核性能得到了改進.

因為WindowsCE不斷在發(fā)展,下個版本的WindowsCE正在開發(fā)中,一旦有新版本發(fā)布的信息,我將更新

到我的網(wǎng)站。

為什么你應(yīng)該讀這本書

《微軟WindowsCE程序設(shè)計》一書,是為任何想給WindowsCE或.NET精簡框架編寫應(yīng)用程序的人寫的。

嵌入式系統(tǒng)程序員為特定的應(yīng)用使用WindowsCE,Windows程序員對寫或者移植一個已有的Windows程序

很感興趣,甚至可管理代碼的開發(fā)者都可以用本書里的信息來使他們的工作更容易。

嵌入式系統(tǒng)上的程序員,他們或許沒有Windows程序員熟悉Win32API,他們可以讀本書第1部分的內(nèi)容

來熟悉Windows編程。雖然這一部分不如《*ndows程序設(shè)計》(CharlesPetzold著)這類書能提供全面

的指南,但它的確提供了一些基本信息,使讀者可以讀懂后面的內(nèi)容。它也為嵌入式系統(tǒng)程序員開發(fā)復雜

但很有用的WindowsCE程序提供了幫助。

有經(jīng)驗的Windows程序員可以通過本書學習WindowsCE和WindowsXP中Win32API的差異,兩者之間

的差異是很顯著的。WindowsCE的小巧意味著Win32模式里的很多API不能被支持。Win32API的某些部

分根本不被支持。另一方面,因為WindowsCE的特殊性,WindowsCE在許多領(lǐng)域擴展了Win32API,本書

將講述這些領(lǐng)域。

本書對使用.NETCF的開發(fā)者也很有用。當前的CF在功能上有些缺陷:需要用可管理的應(yīng)用程序來調(diào)用操

作系統(tǒng)來執(zhí)行某個任務(wù)。本書對從操作系統(tǒng)可以獲得什么做了很好的指導。書中有一-章節(jié)會討論在基于

WindowsCE的設(shè)備中開發(fā)可管理代碼所涉及的特性。

本書通過例子來進行教學。我專門為本書寫了許多WindowsCE示例程序。例子的原代碼列在了書中。源代

碼及最終編譯后的程序可以在附書光盤里找到,這些適合許多WindowsCE支持的處理器。

書中的示例都是直接用API寫的,即所謂的“Petzold”編程方式。由于本書的目標是教你如何為Windows

CE編寫程序,所以示例都避免使用諸如MFC等類庫,應(yīng)為這會使為WindowsCE寫應(yīng)用程序所涉及的特性

產(chǎn)生混亂。-一些人可能會認為WindowsCE中有MFC,了解WindowsCEAPI的必要性就不那么大了。我并

不這么認為,WindowsCEAPI的知識可以使你更有效的使用MFC。我認為真正了解操作系統(tǒng)能夠有效的簡

化應(yīng)用程序的調(diào)試。

第3版新內(nèi)容

第3版本做了比較大的修訂,增加了很多重要的內(nèi)容,包括Smartphone、藍牙等多個新主題。本書更新了

WindowsCE.NET4.2的新特性。增加了新的章節(jié),覆蓋Smartphone和.NETCF。許多章節(jié)做了明顯擴充,

覆蓋了OBEX、藍牙和服務(wù)等主題。另有一些章節(jié)做了重新整理以更好的描述主題。

為Smartphone以及PocketPCPhone的通信特性增加了一章內(nèi)容,涉及如何為Smartphone2003設(shè)備寫應(yīng)

用程序。還講述了在Smartphone和PocketPCPhone上,如何通過SMS系統(tǒng),使用聯(lián)接管理器、發(fā)送和接

收消息功能來寫應(yīng)用程序。

新增了一章關(guān)于.NETCF內(nèi)容的,涉及如何寫WindowsCE上可管理的應(yīng)用程序。在此之后,集中在.NETCF

的特殊類WindowsForm的應(yīng)用程序上。本章涉及的一個重要部分是,當可管理類庫不能提供應(yīng)用所需的功

能時,如何在可管理的代碼中調(diào)用不可管理或者本地代碼。

設(shè)備之間通信這一章節(jié)涉及藍牙和OBEX。藍牙是一個無線通信標準,但坦白地說,在許多文章中并沒有很

好的解釋說明。這一章介紹了藍牙技術(shù)并提供了一個簡單易懂的使用示例。本章還包括OBEX內(nèi)容,OBEX

是藍牙和紅外線數(shù)字聯(lián)盟使用的對象交換標準。本章另外一個例子演示了如何用OBEX通過藍牙或者紅外線

數(shù)據(jù)方式去傳送文件到其他設(shè)備。

PocketPC這一章增加了PocketPC2003設(shè)備的新特性。本書第2版PocketPC一章中的菜單條例子已經(jīng)

移到了通用控件這一章,這表明出在最新的WindowsCE版本中,PocketPCAPI將一些功能移到操作系統(tǒng)

中。

驅(qū)動程序和服務(wù)一章也做了更新,涉及WindowsCE服務(wù)。WindowsCE服務(wù)在WindowsCE.NET4.0中引

入。WindowsCE服務(wù)程序為編寫后臺運行程序提供了方法,避免為服務(wù)使用單獨的進程所帶來的開銷。操

作系統(tǒng)還提供超級服務(wù)來監(jiān)控IP端口,并在客戶端連接該端口的時候通知服務(wù)。本章提供了一個簡單的

WindowsCE服務(wù)例子,演示了如何寫服務(wù)程序和使用超級服務(wù)的特性。

對本書第1版的讀者來說,本書包含了第2版的所有新特性。更新內(nèi)容涉及PocketPC和WindowsCE設(shè)備

驅(qū)動程序,以及第1版發(fā)布后,實現(xiàn)的新的內(nèi)容管理和線程特性。

.NET精簡框架

一個開發(fā)者沒有聽說過微軟的.NET計劃,那他一定是在荒島上。該計劃包括一個運行時環(huán)境,把代碼從硬

件上隔離開,同時提供一個類型安全的運行時環(huán)境以增加安全性。為嵌入式和電池供電的設(shè)備編寫了更小

一些的運行庫。.NET精簡框架的最初版本運行在有晅ndowsCE的PocketPC和基于WindowsCE.NET4.1

及以后的嵌入式系統(tǒng)上。

嵌入式設(shè)備的特殊要求使得在它上面只用可管理的代碼寫應(yīng)用程序成為一項挑戰(zhàn)。嵌入式應(yīng)用和一些移動

應(yīng)用要求應(yīng)用程序和設(shè)備緊密的集成在一起。因為運行時庫的特性之一就是將應(yīng)用和硬件隔離,所以一個

嵌入式可管理的應(yīng)用程序有時需要打破運行時庫的限制,直接訪問某些操作系統(tǒng)的功能。

正如前面所提到的,在精簡框架這一章節(jié)里,花費了大量時間來討論如何使可管理的應(yīng)用程序訪問操作系

統(tǒng)。討論涉及到一些技術(shù),比如通過跨越可管理/本地代碼邊界來聚集參數(shù)等,當然,在精簡構(gòu)架里完成這

個任務(wù)比在桌面應(yīng)用中更困難。

關(guān)于MFC

對于問是否該用MFC開發(fā)WindomsCE下應(yīng)用程序的人,過去,我通常的回答是:不要用。老版的windows

CE系統(tǒng)加上比較慢的CPU,運行復雜、全功能的MFC應(yīng)用會帶來很大的壓力。但現(xiàn)在,我不再這么絕對了。

新版的WindowsCE平臺足夠快,可以用合理的性能運行基于MFC的應(yīng)用。MFC運行時庫包含在這些設(shè)備的

ROM中,所以應(yīng)用程序僅僅是代碼,而不再是代碼加MFC運行時庫。

但正像速度和運行庫都已經(jīng)加到平臺里去一樣,MFC正逐漸沒落。微軟不再推薦MFC應(yīng)用開發(fā),取而代之

的是.NET開發(fā)。所以你應(yīng)該用MFC開發(fā)嗎?我的回答是不要再用MFC開發(fā)新項目。對于舊項目,仍然有機

會用MFC,但僅僅只是因為這些項目沒有移植到其他開發(fā)平臺上。

WindowsCE開發(fā)工具

本書假設(shè)讀者了解C和熟悉微軟Windows,在XP下用微軟嵌入式VisualC++開發(fā)過本地程序。為了編譯書

中的例子程序,需要微軟嵌入式VisualC++4.0,這可以在附書光盤中找到。需要相關(guān)的適合叫ndowsCE

設(shè)備的SDK,用于你的目標設(shè)備。

每個例子已經(jīng)有一個預先定義好的工程設(shè)置,但你也可以選擇從頭創(chuàng)建一個工程。對大多數(shù)例子來說,簡

單創(chuàng)建一個普通WCE應(yīng)用程序工程就可以了。對于那些要求訪問PocketPC上特殊功能的例子,即使整個

工程設(shè)置不是特別為PocketPC應(yīng)用定義的,也可以用特殊的代碼鏈接這些功能。

對那些想為PocketPC2000和2002寫應(yīng)用程序的開發(fā)者來說,需要使用嵌入式VisualC++3.0。不幸

的是,附書光盤沒有足夠的空間同時放eVC3和eVC4,但你可以從微軟網(wǎng)站下載eVC3。還需要用于這些老

版本PocketPC系統(tǒng)的SDK。一些例子,例如藍牙、OBEX和服務(wù)等例子,使用了老系統(tǒng)里沒有的例子。

用Visual2003可以開發(fā).NET精簡框架應(yīng)用程序。因為太大和非免費,所以沒有在光盤里提供。當然,

這個工具是非常高效的開發(fā)工具。那些對開發(fā)可管理代碼感興趣的人來說,開發(fā)效率提高減輕了升級花費

所帶來的痛苦。在精簡框架這一章,你需要Visual2003來編譯里面的例子。該工具為所有的PocketPC

設(shè)備以及基于WindowsCE4.1以上的嵌入式版本提供了必要的運行時庫。

目標系統(tǒng)

你并不需要WindowsCE目標設(shè)備來體驗書中提供的例子。各種SDK平臺都帶有WindowsCE模擬器,讓你

可以在WindowsXP對WindowsCE程序下執(zhí)行基本測試。在你手邊沒有實際的設(shè)備的時候,可以很方便地

使用模擬器。模擬器執(zhí)行PC模擬器中的WindowsCE版本,而PC模擬器會在PC上執(zhí)行一個實際的Windows

CE操作系統(tǒng)。

在決定使用哪種WindowsCE硬件來測試的時候,你應(yīng)該考慮很多因素。首先,如果應(yīng)用程序式一個商業(yè)產(chǎn)

品,你至少應(yīng)該為每種目標CPU購買一個系統(tǒng)。你需要在所有目標CPU上進行測試,因為雖然源代碼可能

相同,但執(zhí)行結(jié)果可能不同,并且每種目標CPU分配的內(nèi)存大小也不同。

CD里的內(nèi)容

附書光盤包含了書中所有例子的源代碼。我提供了MSeVC的工程文件,你可以打開這些預配置的文件。所

有的例子都是為WindowsCE4.2、PocketPC2003和Smartphone2003設(shè)計的。

除了例子,光盤中還包含免費的eVC。這和你從微軟站點下載或者通過光盤購買的版本一樣,可以把這些

工作看作是贈品。還包括了PocketPC2003的平臺SDK。

光盤還包括一個StartCD程序,提供圖形化界面,讓你可以訪問CD里的內(nèi)容。如果你開了Windows自動運

行功能,當你把光盤插到光驅(qū)中,這個程序就會自動運行。如果不能自動運行,進入CD根目錄,運行即可。

文件為CD中的內(nèi)容提供了更多的信息,介紹了包含的工具和SDK的系統(tǒng)要求,以及對包含產(chǎn)品的支持信息。

下面是為了安裝和運行MSeVC所需要的系統(tǒng)要求。注意eVC是運行在Windows2000,WindowsXP,或者

WindowsServer2003上的。

*帶Pentium處理器的PC:推薦Pentium150MHz或者更高。

*MicrosoftWindowsXP,Windows2000ServicePack2(orlater)orWindowsServer2003

*32MB內(nèi)存,推薦48MB

*硬盤空間:最小安裝360MB,完全安裝720MB

*帶光驅(qū)

*VGA或更高分辨率的顯示器,推薦SVGA

*微軟鼠標或兼容鼠標設(shè)備。

其它資源

雖然我試圖將本書做成“一站式”的WindowsCE編程書籍,但沒有一本書可以覆蓋各個方面的。通常,要

了解更多Windows編程知識,我推薦經(jīng)典書籍一CharlesPetzold寫的Windows編程(微軟出版社,1998)

?書。這是迄今為止最好的Windows編程書籍。Charles提供了例子,演示如何解決困難而又常見的Windows

問題。要更多的了解Win32核心API,我推薦JeffRichter的《Windows核心編程》(Programming

ApplicationsforMicrosoftWindows(MicrosoftPress,1999))。Jeff揭示了進程、線程和內(nèi)存管理

方面的很多細節(jié)技術(shù)。要了解更多的MFC編程知識,沒有比JeffProsise的《MFC程序設(shè)計》(Programming

WindowswithMFC(MicrosoftPress,1999).)更好的書籍了。這本書是MFC版的Petzold編程書籍,

可以說是MFC程序員必讀。

要更多的了解.NET編程,我推薦CharlesPetzold的《C#Windows程序設(shè)計》(ProgrammingWindowswith

C#(MicrosoftPress,2002))。Charles將他令人驚嘆的技巧應(yīng)用到了.NET框架的WindowsForm中。

這是趕上.NET客戶端編程發(fā)展速度的?本非常的好書。

第1.章HelloWindowsCE

概述

從經(jīng)典的《TheCProgrammingLanguage》一書開始,傳統(tǒng)上編程方面的書都是從"Hello,world”程序

開始的。這是一個合理恰當?shù)拈_始。每個程序都有一個基本底層結(jié)構(gòu),分析它可以揭示所有運行在這個操

作系統(tǒng)上的應(yīng)用程序都具有的基礎(chǔ),避一些設(shè)計復雜的任務(wù)將結(jié)構(gòu)搞的難以理解。

在本書"Hello,world”一章里,包含了關(guān)于設(shè)置和使用編程環(huán)境的細節(jié)。用于開發(fā)微軟WindowsCE應(yīng)

用程序的環(huán)境與開發(fā)標準微軟Windows應(yīng)用程序的環(huán)境有些不同,因為WindowsCE程序是在運行XP的PC

機器上編寫,卻主要在獨立的基于WindowsCE的目標機器上進行調(diào)試的。

經(jīng)驗豐富的舊ndows程序員可能會跳過這一章進入有更多內(nèi)容的主題,但我建議你至少瀏覽一下本章,

了解標準叫ndows編程和WindowsCE編程之間的區(qū)別。兩個開發(fā)過程中許多細微而又重要的不同之處和

WindowsCE應(yīng)用程序的基本構(gòu)架包含在第一章里。

1.1WindowsCE不同之處

WindowsCE有許多特性使得它不同于其它Windows平臺。首先,運行WindowsCE的系統(tǒng),大多數(shù)可

能不使用Intelx86兼容微處理器。實際上,WindowsCE運行在4種不同的CPU系列里:SHx,MIPS,ARM,

和x86o幸運的是,開發(fā)環(huán)境幾乎將各種不同CPU的所有差異與程序員隔離開了。

WindowsCE程序事先不能確定屏幕或鍵盤。PocketPC設(shè)備有一個240*320的縱向屏幕,而其它系統(tǒng)

具有傳統(tǒng)的480*240,640*240,640*480像素分辨率的橫向屏幕。一些嵌入式設(shè)備則根本沒有顯示器。一些

目標設(shè)備可能不支持彩色,并且大部分WindowsCE設(shè)備用觸摸屏替代了鼠標。一些在觸摸屏設(shè)備上,輕觸

屏幕,表示鼠標左鍵點擊,沒有明顯的方法代表鼠標右鍵。為了能處理右鍵,Windows約定,當輕觸屏幕

的時候,按下Alt鍵,由眄ndowsCE程序把這個組合序列解釋為鼠標右鍵點擊。

WindowsCE設(shè)備具有更少的資源

運行晅ndowsCE系統(tǒng)的目標設(shè)備上,各種資源變化極大。當寫一個標準Windows程序的時候,程序

員可以對目標設(shè)備做許多假定,并且設(shè)備幾乎都是IBM兼容機。目標設(shè)備通常有硬盤用于存儲,同時虛擬

內(nèi)存系統(tǒng)用硬盤作為交換設(shè)備來模擬一個兒乎沒有數(shù)量限制的虛擬內(nèi)存。程序員知道用戶有鍵盤、雙鍵鼠

標以及可以當前支持256色、至少有800*600分辨率的顯示器。

WindowsCE程序所運行的設(shè)備兒乎都沒有硬盤作為大容量存儲。沒有硬盤不僅僅意味著沒有地方存儲

大量文件,也意味著不能交換數(shù)據(jù)到磁盤上來創(chuàng)建虛擬內(nèi)存。所以WindowsCE程序幾乎總是在少量內(nèi)存環(huán)

境里運行的。因為資源缺乏,內(nèi)存分配經(jīng)常失敗。當空閑內(nèi)存達到一個嚴重低的級別,EndowsCE可能會

自動終止一個程序。RAM的限制對WindowsCE程序有很大的影響,并且是將現(xiàn)有的Windows應(yīng)用程序移植

到WindowsCE過程涉及的主要挑戰(zhàn)之一。

Unicode

在寫哨ndowsCE程序時,程序員可以使用的一個特性是Unicode.Unicode是一個字符編碼標準,使

用16位表示一個字符,相對的,ASCII標準是用單個8位編碼一個字符。Unicode允許相當簡單將程序移

植到不同的國際市場,因為世界上所有己知的字符都可以用65,536個Unicode值里的一個來表示。處理

Unicode相對容易,只要避免假設(shè)字符串是用ASCII代表和字符是按單個字節(jié)存儲的。

使用Unicode的一個結(jié)果是每個字符占2個字節(jié)而不是一個,字符串長了一倍。程序員必須小心計算

緩沖區(qū)和字符串的長度。你不能再假設(shè)260字節(jié)可以存儲259個字符和一個0結(jié)尾符。作為標準char數(shù)據(jù)

類型的替代品,你應(yīng)該使用TCHAR數(shù)據(jù)類型。TCHAR在MSWindows95和98中定義為char型,在聽ndows

2000,XP,WindowsCE中,使用Unicode功能的程序里,TCHAR定義為unsignedshort類型。這些類型定義,

允許在基于ASCII和Unicode的操作系統(tǒng)上源代碼級的兼容。

新控件

WindowsCE上有許多為特殊環(huán)境設(shè)計的新控件。包括命令條、菜單條控件,提供類似菜單和工具條的

功能,在具有更小屏幕的WindowsCE設(shè)備上,這些為了節(jié)省空間都合并一行里。其它控件也為WindowsCE

做了改進。WindowsCE里的編輯控件(editcontrol)可以設(shè)置為自動將單詞首字母大寫,這對在無鍵盤

的PDA上進行設(shè)計是很重要的。對于Windows桌面版本里的控件,呵ndowsCE則提供了大部分。例如,日

期和時間調(diào)整控件、日歷控件使日歷和管理器應(yīng)用程序更加適合諸如H/PC和PocketPC等手持設(shè)備。其它

Windows標準控件做了功能裁減,這反應(yīng)了WindowsCE特殊的硬件系統(tǒng)配置所具有的緊湊簡潔特性。

組件化

WindowsCE編程中另一個需要注意的方面是WindowsCE可以被微軟或OEM廠商分解和重新配置,以

更好地適應(yīng)目標市場或設(shè)備。Windows程序員通常只是檢查Windows版本,看是否是Windows95/98,Me

系列或者2000,XP系列。通過獲得版本,程序員可以判斷哪些API函數(shù)可以使用。然而,WindowsCE可

以按無數(shù)種方式配置。

迄今為止,WindowsCE最流行的配置是PocketPC。微軟定義了具體WindowsCE組件集合,這些都體

現(xiàn)在所有稱為PocketPC的設(shè)備上。然而,一些用WindowsCE生產(chǎn)的OEM產(chǎn)品一PDA設(shè)備,并不叫Pocket

PC。這些設(shè)備同PocketPC設(shè)備在API上略微不同。如果你沒有意識到這一點,你很容易寫一個程序能運

行在一個平臺,卻不能運行在另一個平臺。在嵌入式平臺上,OEM廠商決定包括什么組件,并可以為它特

定的平臺創(chuàng)建一個SDK開發(fā)包。如果OEM廠商對第三方開發(fā)感興趣,它會為它的設(shè)備提供一個可定制的SDK

包。新的平臺不斷出現(xiàn),它們有許多共同的地方,也有許多不同之處。程序員需要了解目標平臺,在嘗試

用一個可能不被設(shè)備支持的功能集時,需要讓程序檢查在特殊平臺上什么函數(shù)可用。

Win32子集

最后,因為WindowsCE比XP小很多,它不能像它大塊頭的兄弟XP那樣支持所有的函數(shù)調(diào)用。當你面

對一個不支持打印功能的操作系統(tǒng),比如原始模式下的WindowsCE時,不要調(diào)用任何打印函數(shù),WindowsCE

還去除了一些XP中支持的冗余功能。雖然呵ndowsCE可能不支持你喜歡的功能,但其它不同的函數(shù)集可

能會工作的很好。有時WindowsCE編程似乎主要是用WindowsCE中稀少的API來找出實現(xiàn)一個特性的方

式,雖然成千上萬的函數(shù)很少被調(diào)用。

1.2依然是Windows編程

雖然WindowsCE和Windows的其它版本之間確實存在差異,但不應(yīng)該夸大這種差異。編寫WindowsCE

應(yīng)用程序依然是編寫Windows應(yīng)用程序。

有同樣的消息循環(huán),同樣的窗口,大部分情況下,具有同樣的資源和控件。差異并不會掩蓋相同的地

方。匈牙利命名方式是重要的相同點之-o

匈牙利命名方法

自從CharlesPetzold寫<Windows程序設(shè)計》一書開始,大部分Windows程序都采用了匈牙利命名

方法,這是一種傳統(tǒng)和良好的命名方法。這種編程風格是CharlesSimonyi多年前在微軟發(fā)明的,它給程

序里每個變量用1到2個字母的前綴來表示變量的類型。例如,命名為Name的字符串數(shù)組應(yīng)該命名為

szName,前綴sz表示變量類型是以0做終止符的字符串。匈牙利命名法的價值在于極大的提高了源程序的

可讀性。其它的程序員,或者你看一段代碼,不應(yīng)該重復的看變量聲明來判定變量的類型。表1T列出了

變量典型的匈牙利前綴。

表1-1變量的匈牙利前綴

變量類

型匈

牙利前綴

Integer

iorn

Word

(16-bit)wors

Doubleword(32-bitunsigned)Dw

Long(32-bitsigned)L

Char

C

String

Sz

Pointer

P

Long

pointerIp

Handle

h

Windowhandlehwnd

Struct

sizecb

你可以看到晅ndows早期的一些痕跡。Ip或者長指針,在Intel16位編程模式下,指針分位短指針

(16位偏移)和長指針(附加偏移段)。其它前綴由類型的縮寫構(gòu)成。例如,刷子的句柄通常是hbr。前

綴可以是組合的,就像Ipsz,指出一個以0結(jié)尾的長指針。WindowsAPI中大部分結(jié)構(gòu)是采用匈牙利表示

法來給它們的域命名的。本書通篇使用這種命名法。我鼓勵你在你的程序里用這種命名方法。

1.3第一個WindowsCE程序

說了這么多,就讓我們一起看一下你的第一個WindowsCE程序吧。列表1-1顯示了Hellol一為Windows

CE寫的一個簡單的Hell。World應(yīng)用程序。

Listing1-1:Hellol,一個簡單的Windows應(yīng)用程序

〃================================—=

//Heilol-Asimpleapp1icationforWindowsCE

//WrittenforthebookProgrammingWindowsCE

//Copyright(C)2003DouglasBoling

〃=_=_=================—=======

#include"windows.h〃

//Programentrypoint

intWINAPIWinMain(HINSTANCEhlnstance,HINSTANCEhPrevInstance,

LPWSTRIpCmdLine,intnCmdShow){

printfC'HelloWorld\n,/);

return0;

)

如您所見,除了程序入口點外,代碼看上去十分類似經(jīng)典的Kernighan和Ritchie版程序。在注釋之

后,有一行代碼

ttinclude"windows,h”

這個文件包含了一組文件,它們中定義了WindowsAPI及其用到的結(jié)構(gòu)和常量。

程序的入口點是本程序和標準C程序之間最大的差別。作為C標準入口intmain(char**argv,int

argc)的替代品,WindowsCE通過標準Windows入口點[注1]intWINAPIWinMain(IIINSTANCEhInstance,

HINSTANCEhPrevInstance,LPWSTRIpCmdLine,intnCmdShow);構(gòu)建程序環(huán)境。

WindowsCE在?些方面不同于桌面版的Windows。

第1個參數(shù),hlnstance為其它應(yīng)用程序指明具程序?qū)嵗?,也為需要驗證這個EXE的WindowsAPI函

數(shù)提供了程序?qū)嵗?/p>

參數(shù)hPrevInstance是從舊的Win16Api(Windows3.1及更早的系統(tǒng))遺留下來的。包括WindowsCE

在內(nèi)的所有Win32操作系統(tǒng)中,hPrevInstance始終是0,可以忽略掉。

參數(shù)IpCmdLine指向一個Unicode字符串,包含了命令行文本。從微軟WindowsCE瀏覽器啟動的應(yīng)用

程序沒有命令行參數(shù),但在某些情況下,例如當系統(tǒng)自動啟動一個程序時,系統(tǒng)包含一個命令行參數(shù)來說

明程序為什么被啟動。參數(shù)IpCmdLine是WindowsCE與XP出現(xiàn)差異的情況之一,在WindowsCE里,命

令行字符串是Unicode字符串,在其它版本的Endows里,命令行字符串總是ASCII的。

最后一個參數(shù),nCmdShow,指明了程序主窗口的初始狀態(tài)。由父進程,通常是瀏覽器傳遞這個參數(shù)到

程序里。它對應(yīng)用程序如何配置主窗口給出了說明。該參數(shù)可能會規(guī)定窗口最初顯示成圖標

(SW_SHOWMINIMIZE),或者顯示最大化(SLSHOWMAXIMIZED)來覆蓋整個桌面,或者顯示為普通(SW_RESTORE)

大小來表明窗口按標準可變大小方式顯示在屏幕上。其它值規(guī)定窗口初始狀態(tài)對用戶不可見,或者規(guī)定窗

口可見但不能成為活動窗口。在WindowsCE里,這個參數(shù)的值被限制成3個狀態(tài):普通(SW'_SH(W)、隱

藏(SWJ1DE)和非激活顯示(SN1SHOWNOACTIVATE)。除非應(yīng)用程序需要強制它的窗口預先確定狀態(tài),在

程序主窗口被創(chuàng)建后,這個值是不加修改,只是簡單的傳遞給ShowlVindow函數(shù)的。

下一行是這個應(yīng)用程序唯一的功能行:printf("Hell。World'n");

WindowsCE支持大部分標準C庫,包括printf,getchar等等。這―?行有趣的地方在于它不像Windows

CE其它任何地方,這個串不是Unicode而是ANSI。下面是對這個現(xiàn)象的合理解釋:對于用ANSI標準編譯

的C標準庫,printf和諸如strcpy等其它字符串庫函數(shù)用的是ANSI字符串。當然,WindowsCE支持這些

標準函數(shù)的Unicode版,例如wprintf,getwchar,和wcscpy。

最后,用return0;結(jié)束程序。

其它進程可以用Win32API函數(shù)GetExitCodeProcess獲取返I可值。

構(gòu)建第一個應(yīng)用程序

要在你的系統(tǒng)上從頭創(chuàng)建Hellol,可以啟動MSeVC++,在[File]菜單上選擇[新建]創(chuàng)建一個新工程。

當看到新工程的對話框,可以明顯的看到WinCE編程與標準Win32編程的變化。你有機會選擇在圖1-1中

所顯示的各種平臺。對于非MFC或ATL工程,首選是WCEPocketPC應(yīng)用(用于PocketPC)和WCE應(yīng)用

(用于其它WindowsCE系統(tǒng))。您還可以選擇適當?shù)哪繕薈PU。例如,選擇Win32(WCEMIPI)來為使用MIPS

CPU的WindowsCE平臺編譯程序。無論是何種目標設(shè)備,都要確保選擇WCE模擬器。這樣你就可以在用XP

下的模擬器中運行例子程序了。

圖1T平臺列表使eVC++能夠面向不同的WindowsCE平臺。

接下來,eVC++會詢問您是否想創(chuàng)建一個空的工程、一個簡單程序或者一個Hell。World應(yīng)用。時本

書里所有的例子,都選擇空工程。這樣做是為了避免代碼向?qū)蚶犹砑尤魏晤~外的代碼。在[File]菜單

選擇[New],創(chuàng)建新文件。

當為Hell。1創(chuàng)建或從CD復制了合適的源文件,選擇眄n32(WCEx86em)Debug作為目標平臺,之后

build這個程序。這一步會編譯源代碼,如果沒有編譯錯誤的話,系統(tǒng)自動啟動模擬器,并把EXE程序放

到模擬器文件系統(tǒng)里,接下來你可以啟動Hellol。如果你在眄ndows98或Me系統(tǒng)下,模擬器系統(tǒng)能夠會

顯示一個錯誤信息,因為模擬器只能在Win2000或XP下運行。

如果你有WindowsCE系統(tǒng),比如PocketPC(PPC),把PPC連接到PC上,方法和同步PC的內(nèi)容到PPC

一樣。打開微軟ActiveSync,建立PPC和PC的鏈接。為了WindowsCE設(shè)備能夠運行,雖然ActiveSync

鏈接并不是必須的,但我發(fā)現(xiàn)讓它運行可以為開發(fā)環(huán)境和WindowsCE系統(tǒng)之間建立一個更穩(wěn)定的鏈接。

一但PC和WindowsCE設(shè)備之間的鏈接成功和運行,切換回eVC++,選擇合適的目標設(shè)備(如適合iPaq

PocketPC的Win32[WCEARM]Debug)進行編譯和rebuild。和為模擬器創(chuàng)建程序一樣,如果沒有錯誤,

eVC++自動下載編譯程序到遠程設(shè)備上。程序要么被放到對象存儲的根目錄上,要么放在\windows\start

菜單目中。

運行該程序

要在嵌入式WinodowsCE設(shè)備H/PC上運行Heilol,單擊手持式PC的MyComputer圖標,找到根目錄

下的文件,之后雙擊應(yīng)用程序圖標啟動程序。

要在PocketPC上運行程序,從設(shè)備的Start菜單選擇程序就可以了。因為eVC++已經(jīng)把程序下載到

\windows\start菜單所在的目錄了。這種方式下,下載的應(yīng)用程序自動顯示在Start菜單里。

有問題?

如果在PocketPC上點擊圖標或開始菜單選擇Hellol程序,似乎沒什么反應(yīng)。在手持式PC上,程序

似乎只是刷新了一下屏幕。這是因為程序啟動、寫到控制臺并結(jié)束了。除非你從一個已經(jīng)創(chuàng)建的控制臺啟

動程序,否則WindowsCE會在Heilol執(zhí)行printf語句時,創(chuàng)建一個控制臺窗口,并且在He11o1結(jié)束的

時候自動關(guān)閉控制臺。

在PocketPC上,應(yīng)用程序可以運行,但PocketPC并不為諸如printf之類的輸出提供控制臺顯示的

功能。通過把驅(qū)動程序放到PocketPC的Windows目錄里,可以為PocketPC增加控制臺支持。驅(qū)動程序

從驅(qū)動程序接口獲取輸入,創(chuàng)建屏幕窗口,打印輸出字符串??刂婆_啟動程序可以從手持式PC和嵌入式版

本的WindowsCE獲得。

注1:雖然從技術(shù)上可以改變?nèi)肟邳c原型來匹配C的標準入口點,但通常不值得這么麻煩的。

1.4Hello2

既然已經(jīng)有了基礎(chǔ),那么是時候把Hellol升級一下,至少應(yīng)該讓人可以看見它。因為很多WindowsCE

系統(tǒng)沒有控制臺驅(qū)動程序,Hello2創(chuàng)建一個消息框而不是用printf來顯示"HelloCE”文字。Hello2的

程序如下表1-2所示:

列表1-2:Hello2,使用MessageBox函數(shù)的簡單應(yīng)用程序

//Heilo2-Asimpleapp1icationforWindowsCE

//WrittenforthebookProgrammingWindowsCE

//Copyright(C)2003Doug1asBoling

〃=================================================

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論