《Windows CE應(yīng)用程序設(shè)計(jì)》課件第1章_第1頁(yè)
《Windows CE應(yīng)用程序設(shè)計(jì)》課件第1章_第2頁(yè)
《Windows CE應(yīng)用程序設(shè)計(jì)》課件第1章_第3頁(yè)
《Windows CE應(yīng)用程序設(shè)計(jì)》課件第1章_第4頁(yè)
《Windows CE應(yīng)用程序設(shè)計(jì)》課件第1章_第5頁(yè)
已閱讀5頁(yè),還剩122頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第一章WindowsCE程序框架1.1程序設(shè)計(jì)環(huán)境1.2WindowsCE程序工作方式1.3WindowsCE程序框架1.4程序框架的解釋1.5匈牙利表示法1.6VisualStudio開(kāi)發(fā)環(huán)境1.7EmbeddedVisualC++開(kāi)發(fā)環(huán)境1.8小結(jié)

1.1程序設(shè)計(jì)環(huán)境

WindowsCE程序設(shè)計(jì)平臺(tái)是基于VisualStudio2005/2008或EmbeddedVisualC++4.0SP4開(kāi)發(fā)環(huán)境的,同時(shí),需要具有WindowsCE操作系統(tǒng)模擬器或智能設(shè)備模擬器,特別是PocketPC2005模擬環(huán)境或WindowsMobile6模擬環(huán)境。

1.2WindowsCE程序工作方式

WindowsCE程序采用所謂的消息響應(yīng)工作方式,這也是桌面Windows程序的工作方式,即WindowsCE操作系統(tǒng)管理設(shè)備的一切資源。

1.3WindowsCE程序框架

筆者得益于DouglasBoling先生的《ProgrammingMicrosoftWindowsCE.NET》一書(shū),當(dāng)然,10年前從Petzold先生的書(shū)中也得到了類(lèi)似的啟發(fā)。WindowsCE程序設(shè)計(jì)具有明顯的框架特性,任何復(fù)雜的程序設(shè)計(jì)都可以以此框架為基礎(chǔ),通過(guò)添加窗口和消息處理過(guò)程來(lái)完成。

該框架程序運(yùn)行結(jié)果如圖1-1所示。圖1-1框架程序在WindowsMobile6仿真器上的運(yùn)行結(jié)果

1.4程序框架的解釋

這里再次強(qiáng)調(diào)一下WindowsCE程序的工作原理:WindowsCE操作系統(tǒng)仍然是窗口操作系統(tǒng),即界面上的各種元素都是窗口,不但對(duì)話(huà)框等窗體屬于窗口,各種控件也都屬于窗口,這些窗口接收到WindowsCE操作系統(tǒng)發(fā)送來(lái)的事件消息后,指示W(wǎng)indowsCE操作系統(tǒng)調(diào)用窗口的窗口過(guò)程,這個(gè)窗口過(guò)程就是窗口的事件消息處理程序;WindowsCE操作系統(tǒng)調(diào)用窗口過(guò)程時(shí),會(huì)把窗口句柄、消息ID號(hào)和與消息相關(guān)的兩個(gè)32位參數(shù)傳遞給窗口過(guò)程;窗口過(guò)程的執(zhí)行就是對(duì)傳遞來(lái)的各種消息做出響應(yīng)和處理。因此,WindowsCE程序工作在事件消息驅(qū)動(dòng)模式下??梢韵胂笠幌?,顯示屏是前臺(tái),WindowsCE操作系統(tǒng)是后臺(tái),前臺(tái)與后臺(tái)之間通過(guò)一條電話(huà)線(xiàn)連接,通過(guò)電話(huà)線(xiàn)前臺(tái)與后臺(tái)可以交互通信。但是,只能后臺(tái)向前臺(tái)撥號(hào),即通信建立的方式是:后臺(tái)WindowsCE操作系統(tǒng)主動(dòng)發(fā)送消息到窗口,窗口被動(dòng)地收到消息后告訴WindowsCE操作系統(tǒng)它的窗口過(guò)程在哪里;然后,WindowsCE操作系統(tǒng)再去執(zhí)行相應(yīng)的窗口過(guò)程。當(dāng)然,WindowsCE操作系統(tǒng)在執(zhí)行窗口過(guò)程前可以進(jìn)行適當(dāng)?shù)某跏蓟ぷ?。因此,編?xiě)WindowsCE程序的關(guān)鍵是創(chuàng)建窗口,并編寫(xiě)窗口過(guò)程。下面回到上一節(jié)提到的程序框架,首先看一下主程序入口文件myFirst.c。

主程序入口文件包括的頭文件名是myFirst.h,在myFirst.h里面定義的以下部分是主程序入口文件用到的,即

#include<windows.h>

intregisterWnd(HINSTANCE);

intshowMainWnd(HINSTANCE,LPWSTR,int);

intquitMainWnd(HINSTANCE,int);

windows.h頭文件是所有的WindowsCE程序必須包括的頭文件,是WindowsCE的預(yù)定義常量、類(lèi)型和過(guò)程的聲明文件。主程序入口文件中包括一個(gè)主過(guò)程,即WinMain過(guò)程,如下:

intWINAPIWinMain(HINSTANCEhInstance,

HINSTANCEhPrevInstance,

LPWSTRlpCmdLine,intnShowCmd)

WinMain過(guò)程源碼的第一步是定義一個(gè)MSG結(jié)構(gòu)體對(duì)象msg,該結(jié)構(gòu)體定義如下:

WinMain過(guò)程源碼的第二步是調(diào)用自定義的registerWnd過(guò)程注冊(cè)窗口類(lèi),該過(guò)程體位于mainWndProc.c中,過(guò)程體如下:

WinMain過(guò)程源碼的第三步為調(diào)用自定義過(guò)程showMainWnd創(chuàng)建主窗口并顯示主窗口。showMainWnd的過(guò)程體位于mainWndProc.c中,過(guò)程體如下:該過(guò)程首先定義一個(gè)窗口句柄hWnd,然后使用全局變量hInst存儲(chǔ)程序?qū)嵗浔?,接著調(diào)用系統(tǒng)過(guò)程CreateWindow創(chuàng)建窗口,CreateWindow過(guò)程的原型如下:

WinMain過(guò)程的第四步為消息循環(huán),使用GetMessage過(guò)程獲取WindowsCE操作系統(tǒng)發(fā)送來(lái)的消息。GetMessage過(guò)程原型如下:

WinMain過(guò)程的第五步,即最后一步為調(diào)用自定義過(guò)程quitMainWnd關(guān)閉主窗口,退出程序。該過(guò)程體位于mainWndProc.c中,過(guò)程體如下:首先是包括自定義頭文件myFirst.h,這個(gè)頭文件將稍后再作解釋。

然后定義全局常量字符串TEXT(“myFirst”)作為主窗口類(lèi)名,接著定義全局應(yīng)用程序?qū)嵗浔鷋Inst。

接著定義結(jié)構(gòu)體消息查找表,這里自定義類(lèi)型MessageProc是在頭文件myFirst.h中聲明的,具體如下:這里定義了四個(gè)消息的消息處理過(guò)程,在此,稍微多說(shuō)幾句,談一下都是什么情況下WindowsCE操作系統(tǒng)才會(huì)產(chǎn)生并發(fā)送這四個(gè)消息,并且具體地闡明這四個(gè)消息的參數(shù)都是什么值。

(1)?WM_CREATE消息:當(dāng)應(yīng)用程序調(diào)用CreateWindowEx或CreateWindow過(guò)程創(chuàng)建窗口時(shí),在窗口被顯示之前,WindowsCE操作系統(tǒng)向新創(chuàng)建的窗口發(fā)送WM_CREATE消息,其原型如下:

WM_CREATElpcs=(LPCREATESTRUCT)lParam;

(2)?WM_PAINT消息:在介紹這個(gè)消息之前,需要介紹一個(gè)客戶(hù)區(qū)有效和無(wú)效的概念??蛻?hù)區(qū)在前文中已提到過(guò),是指由用戶(hù)管理和維護(hù)的窗口顯示區(qū)域,當(dāng)窗口顯示后,如果有其他的窗口顯示在其上,其他的窗口將遮擋一部分該窗口,被遮擋的這部分窗口即稱(chēng)為無(wú)效區(qū)域,當(dāng)上面的窗口關(guān)閉后,這部分無(wú)效區(qū)域必須進(jìn)行重新繪制,這時(shí)WindowsCE操作系統(tǒng)向當(dāng)前窗口發(fā)送WM_PAINT消息。

WM_PAINT消息原型如下:

WM_PAINThdc=(HDC)wParam;

該消息只有wParam參數(shù),沒(méi)有l(wèi)Param參數(shù)。

hdc指向需要繪圖的設(shè)備環(huán)境,如果為NULL,則使用缺省的設(shè)備環(huán)境繪圖。設(shè)備環(huán)境由wParam參數(shù)傳遞。

(3)?WM_DESTROY消息:當(dāng)窗口被破壞和關(guān)閉時(shí),例如,用戶(hù)用任務(wù)管理器關(guān)閉正在運(yùn)行的程序時(shí),窗口將收到WM_DESTROY消息,由于WindowsCE的DefWindowProc過(guò)程不會(huì)自動(dòng)地處理WM_DESTROY消息,所以需要編寫(xiě)該消息的處理過(guò)程,即收到該消息后,執(zhí)行自定義過(guò)程goDestroyMain,破壞主窗口后,所有主窗口的子窗口自動(dòng)被破壞和關(guān)閉。WM_DESTROY消息的原型如下:

WM_DESTROYwParam=0;

lParam=0;

該消息的wParam和lParam參數(shù)均為0。

(4)?WM_CLOSE消息:窗口或應(yīng)用程序結(jié)束時(shí)系統(tǒng)產(chǎn)生WM_CLOSE消息。本實(shí)例中,點(diǎn)擊窗口右上角的Close按鈕“×”將導(dǎo)致系統(tǒng)產(chǎn)生并發(fā)送WM_CLOSE消息。WM_CLOSE消息的原型如下:

WM_CLOSEwParam=0;

lParam=0;

該消息的wParam和lParam參數(shù)均為0。此外,自定義的消息處理過(guò)程的返回值建議為0,本實(shí)例中所有消息處理過(guò)程的最后一條語(yǔ)句均為

return0;

當(dāng)然,其他的正整數(shù)型返回值也是可以用的,只是-1是不能使用的。WindowsCE約定返回值為0表示消息處理成功,可以繼續(xù)新的消息接收和處理過(guò)程。主窗口過(guò)程如下:熟悉了窗口過(guò)程對(duì)消息處理的方式之后,下面逐個(gè)介紹本實(shí)例中的四個(gè)消息處理過(guò)程。

第一個(gè)為goCreateMain,前文也提到過(guò)消息處理過(guò)程名稱(chēng)的命名方法,這里再?gòu)?qiáng)調(diào)一下,即go+首字母大寫(xiě)的消息名+首字母大寫(xiě)的窗口名。盡管如此,消息處理過(guò)程是可以隨意取合法的名稱(chēng)的,而且這個(gè)名稱(chēng)與變量名的命名方法相同。每個(gè)消息處理過(guò)程的參數(shù)都相同,并且與窗口過(guò)程的參數(shù)表相同,這樣做是為了可以使用消息查找表的方法而設(shè)計(jì)的。當(dāng)然,對(duì)于某些消息的處理過(guò)程,其參數(shù)表可以與窗口過(guò)程不同。這種使用消息查找表循環(huán)定位消息號(hào)與消息處理過(guò)程的方法,是DouglasBoling先生的書(shū)上使用的,筆者參考使用了這一技巧,同時(shí),筆者建議讀者也采用這種方法。

goCreateMain過(guò)程體如下:在goCreateMain中,首先定義了一個(gè)窗口句柄wndCB,調(diào)用CommandBar_Create過(guò)程創(chuàng)建一個(gè)命令欄控件,該過(guò)程的聲明在頭文件commctrl.h中,其原型如下:在goCreateMain中的CommandBar_Create調(diào)用中,全局程序?qū)嵗齢Inst(與形參形式相同)、主窗口句柄hWnd和在頭文件myFirst.h中宏定義的整型量IDC_CMDBAR依次傳遞給形參。這里IDC_CMDBAR是自定義的命令欄ID號(hào),必須是程序中獨(dú)一無(wú)二的整型數(shù),該整型數(shù)不能再用于表示同一程序文件中其他控件的ID號(hào)。然后,調(diào)用CommandBar_AddAdornments過(guò)程在命令欄上創(chuàng)建一個(gè)Close按鈕,該過(guò)程的原型如下:最后一個(gè)參數(shù)dwReserved為保留參數(shù),設(shè)為0。

goPaintMain為WM_PAINT消息的處理過(guò)程,其過(guò)程體如下:

goPaintMain過(guò)程首先定義了畫(huà)板ps、矩形區(qū)rect和設(shè)備環(huán)境hdc。畫(huà)板ps結(jié)構(gòu)體對(duì)象包含了繪制窗口客戶(hù)區(qū)域所用的繪圖信息,其聲明如下:矩形區(qū)RECT結(jié)構(gòu)體的聲明如下:

typedefstruct_RECT{LONGleft;LONGtop;LONGright;LONGbottom;}RECT;四個(gè)形參分別表示矩形區(qū)域的左邊界、上邊界、右邊界和下邊界,最左上角的點(diǎn)的坐標(biāo)為(LEFT,TOP),最右下角的點(diǎn)的坐標(biāo)為(RIGHT,BOTTOM)。在WindowsCE屏幕坐標(biāo)中,例如對(duì)于240×320的顯示屏,則左上角坐標(biāo)為(0,0),而右下角為(239,319),而對(duì)于定義的任何矩形區(qū)域來(lái)說(shuō),必須保證RIGHT>LEFT,BOTTOM>TOP。圖1-2中表示了客戶(hù)區(qū)的坐標(biāo)體系。圖1-2客戶(hù)區(qū)坐標(biāo)體系

goPaintMain過(guò)程接著使用GetClientRect過(guò)程得到當(dāng)前繪圖用的窗口客戶(hù)區(qū),GetClientRect過(guò)程的原型如下:

BOOLGetClientRect(HWNDhWnd,LPRECTlpRect);

其中,hWnd為繪圖客戶(hù)區(qū)所在的窗口句柄,lpRect為一個(gè)長(zhǎng)指針,指向代表客戶(hù)區(qū)大小的矩形RECT結(jié)構(gòu)體對(duì)象。本實(shí)例中調(diào)用GetClientRect(hWnd,&rect)之后,rect矩形區(qū)的左上角和右下角的坐標(biāo)點(diǎn)限制了繪圖客戶(hù)區(qū)域的大小,即繪圖客戶(hù)區(qū)的左邊界為rect.left,頂邊界為rect.top,右邊界為rect.right,底邊界為rect.bottom。由于客戶(hù)區(qū)的頂部為命令欄,真正的繪圖客戶(hù)區(qū)應(yīng)該為此命令欄下方的區(qū)域,故通過(guò)以下語(yǔ)句將客戶(hù)區(qū)的頂部下移命令欄的高度,即

rect.top+=CommandBar_Height(GetDlgItem(hWnd,IDC_CMDBAR));

CommandBar_Height過(guò)程取得命令欄的高度值,以像素點(diǎn)為單位,其原型如下:

intCommandBar_Height(HWNDhwndCB);

其中,hwndCB為命令欄的窗口句柄。一般地,返回的命令欄的高度值約為26。

GetDlgItem過(guò)程的原型如下:

HWNDGetDlgItem(HWNDhDlg,intnIDDlgItem);

其中,hDlg指向控件的父窗口;nIDDlgItem指定控件的ID號(hào)。這里使用IDC_CMDBAR參數(shù)調(diào)用該過(guò)程可取得主窗口中的命令欄窗口句柄。

然后,調(diào)用BeginPaint過(guò)程獲得繪圖窗口的設(shè)備環(huán)境hdc,并將繪圖信息填充到畫(huà)板ps中,如下:

hdc=BeginPaint(hWnd,&ps);

BeginPaint過(guò)程的原型如下:

HDCBeginPaint(HWNDhwnd,LPPAINTSTRUCTlpPaint);

其中,hwnd為繪圖的窗口句柄;lpPaint為指向畫(huà)板結(jié)構(gòu)的長(zhǎng)指針,調(diào)用結(jié)束后將被填充繪圖信息。

WindowsCE程序?qū)τ谫Y源的管理十分有規(guī)律,一些共用資源被開(kāi)辟出來(lái)后,必須在使用完后釋放,以供其他過(guò)程使用。例如,這里的BeginPaint過(guò)程獲得了設(shè)備環(huán)境hdc資源,在使用完后,必須調(diào)用EndPaint過(guò)程釋放hdc。因此,可以說(shuō)BeginPaint和EndPaint是配對(duì)使用的過(guò)程。WindowsCE中有很多配對(duì)使用的過(guò)程。在我們對(duì)各種資源有更充分的認(rèn)識(shí)和理解之前,可以把WindowsCE的資源理解為內(nèi)存中的關(guān)鍵存儲(chǔ)區(qū)域。

EndPaint過(guò)程的調(diào)用比較固定,如下:

EndPaint(hWnd,&ps);

在BeginPaint和EndPaint之間為繪圖的語(yǔ)句,本實(shí)例中只有一條語(yǔ)句,即在窗口中央顯示一行文字“學(xué)好WindowsCE程序設(shè)計(jì)!”,如下:

DrawText(hdc,TEXT(“學(xué)好WindowsCE程序設(shè)計(jì)!”),-1,&rect,

DT_CENTER|DT_VCENTER|DT_SINGLELINE);

DrawText過(guò)程用于在矩形區(qū)中顯示文本,其原型如下:在WindowsCE中對(duì)文本輸出的支持函數(shù)較少,除了DrawText過(guò)程外,還有一個(gè)更加常用的ExtTextOut過(guò)程,ExtTextOut過(guò)程使用當(dāng)前選擇的字體在矩形區(qū)中輸出文本,其原型如下:下面接著介紹goDestroyMain消息處理過(guò)程,其過(guò)程體如下:當(dāng)主窗口收到WM_DESTROY消息后,將調(diào)用該過(guò)程,該過(guò)程將執(zhí)行PostQuitMessage過(guò)程,導(dǎo)致窗口收到WM_QUIT消息。PostQuitMessage過(guò)程的原型如下:

voidPostQuitMessage(intnExitCode);

其中,nExitCode整型數(shù)傳遞給WM_QUIT消息的wParam參數(shù)。當(dāng)用戶(hù)點(diǎn)擊右上角的Close按鈕時(shí),主窗口即收到WM_CLOSE消息,執(zhí)行g(shù)oCloseMain消息處理過(guò)程,其過(guò)程體如下:

goCloseMain過(guò)程將調(diào)用MessageBox過(guò)程創(chuàng)建一個(gè)簡(jiǎn)單消息對(duì)話(huà)框。MessageBox過(guò)程原型如下:此外,缺省設(shè)置MB_APPLMODAL表示消息對(duì)話(huà)框?yàn)橛心J綄?duì)話(huà)框。所謂的有模式對(duì)話(huà)框是指當(dāng)對(duì)話(huà)框打開(kāi)后,對(duì)話(huà)框會(huì)擁有焦點(diǎn),表現(xiàn)為對(duì)話(huà)框的標(biāo)題欄顏色加深,如果不關(guān)閉該模式對(duì)話(huà)框,則不能對(duì)其父窗口進(jìn)行操作。對(duì)立概念的無(wú)模式對(duì)話(huà)框則在不關(guān)閉對(duì)話(huà)框的情況下,可以對(duì)其父窗口操作,典型的例子是OfficeWord軟件中的查找對(duì)話(huà)框即為無(wú)模式對(duì)話(huà)框。如果消息對(duì)話(huà)框不在窗口頂層顯示,還可以指定MB_SETFOREGROUND使消息對(duì)話(huà)框浮到頂層顯示,或指定MB_TOPMOST限制對(duì)話(huà)框總處于頂層顯示。

消息對(duì)話(huà)框返回0表示創(chuàng)建對(duì)話(huà)框失敗,否則,將返回預(yù)定義的按鈕ID號(hào),例如,IDABORT、IDCANCEL、IDIGNORE、IDNO、IDOK、IDRETRY或IDYES,表示對(duì)應(yīng)的按鈕被按下了。

本實(shí)例中創(chuàng)建的對(duì)話(huà)框如圖1-3所示,該對(duì)話(huà)框?qū)⒎祷豂DYES或IDNO,取決于用戶(hù)點(diǎn)擊哪個(gè)按鈕。

當(dāng)用戶(hù)點(diǎn)擊“否”按鈕時(shí),對(duì)話(huà)框返回IDNO,則調(diào)用return0返回;否則,調(diào)用PostQuitMessage(1)導(dǎo)致主窗口接收WM_QUIT消息,退出程序。圖1-3包含兩個(gè)按鈕的消息對(duì)話(huà)框

1.5匈牙利表示法

由于WindowsCE支持長(zhǎng)變量名,所以,變量名或過(guò)程名的命名應(yīng)盡可能地做到見(jiàn)名知意,此外,可以采用約定的匈牙利表示法,在變量名或過(guò)程名等標(biāo)識(shí)符前加上一個(gè)表示變量類(lèi)型或返回值類(lèi)型的小寫(xiě)字母或字母組合前綴,將使得變量名和程序更易讀懂。

一般地,匈牙利表示法對(duì)前綴的定義如表1-1所示。

1.6VisualStudio開(kāi)發(fā)環(huán)境

讀到這里,可能有些讀者急于上機(jī)調(diào)試一下本章的程序了。本節(jié)和1.7節(jié)將給出實(shí)現(xiàn)和運(yùn)行WindowsCE程序的具體方法和步驟。

WindowsCE程序設(shè)計(jì)可以基于多種開(kāi)發(fā)環(huán)境,這里重點(diǎn)介紹兩種,即VisualStudio2008和EmbeddedVisualC++4.0SP4。本節(jié)將介紹VisualStudio2008,下一節(jié)將介紹EmbeddedVisualC++4.0SP4。在WindowsXP或Vista上安裝VisualStudio2008是件簡(jiǎn)單愉快的事情,選好安裝目錄后,按照安裝提示一步步地進(jìn)行,便可安裝完成。安裝完成后,在Windows開(kāi)始菜單中會(huì)有MicrosoftVisualStudio2008的快捷啟動(dòng)菜單項(xiàng),點(diǎn)擊便可進(jìn)入VisualStudio2008(簡(jiǎn)稱(chēng)VS9。之所以簡(jiǎn)稱(chēng)VS9,是因?yàn)閂isualStudio2008的版本號(hào)是9.0),如圖1-4

所示。

在圖1-4中點(diǎn)擊“文件?|?新建?|?項(xiàng)目”,進(jìn)入圖1-5所示界面。圖1-4VS9啟動(dòng)界面圖1-5VS9新建項(xiàng)目對(duì)話(huà)框在如圖1-5所示的“新建項(xiàng)目”對(duì)話(huà)框中,選擇“VisualC++?|?智能設(shè)備?|?Win32智能設(shè)備項(xiàng)目”,在“名稱(chēng)”一欄中輸入項(xiàng)目名稱(chēng)為myFirstWithVS9,點(diǎn)選右上角的下拉列表框,選中“.NETFramework2.0”(如果選擇?.NETFramework3.5,且使用外部智能手機(jī)設(shè)備進(jìn)行程序設(shè)計(jì),VS9會(huì)自動(dòng)在智能手機(jī)上安裝?.NETFramework3.5軟件包)。點(diǎn)擊“確定”按鈕進(jìn)入下一步,如圖1-6所示。圖1-6Win32智能設(shè)備項(xiàng)目向?qū)c(diǎn)擊圖1-6左側(cè)的“平臺(tái)”,并把“WindowsMobile5.0PocketPCSDK”和“WindowsMobile6ProfessionalSDK”選到右邊的“選定的SDK”欄中,如圖1-7所示。圖1-7Win32智能設(shè)備項(xiàng)目向?qū)脚_(tái)設(shè)置點(diǎn)擊圖1-7中的“下一步”按鈕或“應(yīng)用程序設(shè)置”,選中復(fù)選框“空項(xiàng)目”。如圖1-8所示。圖1-8Win32智能設(shè)備項(xiàng)目設(shè)置點(diǎn)擊圖1-8中的“完成”按鈕結(jié)束“Win32智能設(shè)備項(xiàng)目向?qū)?-?myFirstWithVS9”的設(shè)置,進(jìn)入如圖1-9所示界面。圖1-9myFirstWithVS9空項(xiàng)目點(diǎn)擊圖1-10所示的“文件?|?新建?|?文件”菜單,得到如圖1-11所示“新建文件”對(duì)話(huà)框。圖1-10文件菜單選項(xiàng)圖1-11“新建文件”對(duì)話(huà)框在圖1-11中選擇“VisualC++?|?頭文件(.h)”,點(diǎn)擊“打開(kāi)”按鈕,然后編寫(xiě)頭文件,并存盤(pán)為myFirst.h,如圖1-12所示。接著,選擇菜單“文件?|?將myFirst.h移入(I)?|?1myFirstWithVS9(1)”,把頭文件加入到當(dāng)前項(xiàng)目中。按照上述方法,依次編寫(xiě)myFirst.cpp和mainWndProc.cpp文件,并把這兩個(gè)文件加入到項(xiàng)目中,如圖1-13所示。圖1-12新建myFirst.h頭文件圖1-13myFirstWithVS9工程文件注意這里程序文件的擴(kuò)展名為?.cpp。

然后,按圖1-14和圖1-15所示選取WindowsMobile6為程序工作平臺(tái),這需要外接WindowsMobile6智能設(shè)備,這里使用了一臺(tái)WindowsMobile6PPC智能手機(jī)。圖1-14選取WindowsMobile6ProfessionalSDK圖1-15選取WindowsMobile6ProfessionalDevice通過(guò)USB口將WindowsMobile6智能手機(jī)與計(jì)算機(jī)連接。對(duì)于WindowsXP系統(tǒng),計(jì)算機(jī)上需要安裝軟件MicrosoftActiveSync4.5,連接成功后,如圖1-16所示。圖1-16MicrosoftActiveSync為了向讀者展示在WindowsMobile6智能手機(jī)上的運(yùn)行結(jié)果,我們使用了掌智手機(jī)助手軟件,該軟件可以把手機(jī)屏幕截取到計(jì)算機(jī)上。如圖1-17和圖1-18所示。圖1-17掌智手機(jī)助手圖1-18掌智手機(jī)助手屏幕截取圖下面,我們?cè)倩氐絍S9來(lái),如圖1-19所示,點(diǎn)擊菜單“生成(B)?|?生成解決方案(B)”或按F6,則會(huì)編譯連接整個(gè)項(xiàng)目,如果有語(yǔ)法錯(cuò)誤,請(qǐng)逐個(gè)改正。如果生成成功,會(huì)在圖1-19所示窗口的左下角顯示“已保存的項(xiàng)”的地方,顯示“生成成功”。過(guò)一會(huì)兒后,會(huì)顯示“就緒”。

接著,如圖1-20所示,點(diǎn)擊菜單“生成(B)?|?部署解決方案(D)”。圖1-19生成解決方案圖1-20部署解決方案稍后,在圖1-20左下角的狀態(tài)欄中顯示“就緒”的地方,會(huì)顯示“部署已成功”,表示程序已成功下載到了WindowsMoblie6智能手機(jī)上。如圖1-21所示,可見(jiàn)程序自動(dòng)部署(或下載)到了智能手機(jī)的ProgramFiles目錄下的同名目錄(myFirstWithVS9)下。

有兩種方法可在WindowsMobile6手機(jī)上執(zhí)行myFirstWithVS9程序。方法一如圖1-21和圖1-22所示,

在圖1-22所示的手機(jī)屏幕上,用觸摸筆點(diǎn)擊myFirstWithVS9,即可在手機(jī)上運(yùn)行該程序,運(yùn)行結(jié)果如圖1-23和圖1-24所示。圖1-24為點(diǎn)擊屏幕左上角的Close按鈕后彈出的消息對(duì)話(huà)框。

圖1-21智能手機(jī)ProgramFiles目錄圖1-22智能手機(jī)myFirstWithVS9目錄圖1-23程序運(yùn)行結(jié)果

圖1-24程序彈出的消息對(duì)話(huà)框方法二如圖1-25所示。點(diǎn)擊菜單“調(diào)試(D)?|?開(kāi)始執(zhí)行(不調(diào)試)(H)”或按Ctrl+F5,則直接在智能手機(jī)上執(zhí)行程序。如圖1-26和圖1-27所示。圖1-25調(diào)試菜單項(xiàng)圖1-26掌智手機(jī)助手截圖運(yùn)行結(jié)果

圖1-27運(yùn)行結(jié)果如果不使用WindowsMobile6智能手機(jī)設(shè)備,可以選用圖1-15中的“CHSWindowsMobileProfessionalEmulator”,表示中文版的WM6專(zhuān)業(yè)仿真器,WindowsMobile6簡(jiǎn)稱(chēng)為WM6。然后,選擇“生成(B)?|?部署解決方案(D)”,部署成功后,會(huì)彈出WM6中文版仿真器,如圖1-28所示。一般地,仿真器上能正常運(yùn)行的程序,在WM6智能手機(jī)設(shè)備上仍然能正常運(yùn)行,因此,中文版WM6仿真器是調(diào)試WindowsCE程序的首選。在中文版WM6仿真器上運(yùn)行myFirstWithVS9工程,也有兩種方法。方法一:首先,按圖1-29所示選擇菜單“文件?|?配置”,進(jìn)入圖1-30。在圖1-30中,設(shè)置“共享文件夾”為“D:\MyCEBook\chap01\myFirstWithVS9\myFirstWithVS9\

WindowsMobile6ProfessionalSDK(ARMV4I)”,即為myFirstWithVS9項(xiàng)目的目錄。該目錄將作為WM6仿真器的存儲(chǔ)卡“StorageCard”,如圖1-31和圖1-32所示。圖1-28中文版WM6仿真器

圖1-29文件菜單圖1-30仿真程序?qū)傩詫?duì)話(huà)框圖1-31資源管理器

圖1-32StorageCard下的Release目錄在圖1-32中,點(diǎn)擊“myFirstWithVS9”可執(zhí)行文件,程序執(zhí)行結(jié)果如圖1-33和圖1-34所示。

圖1-33WM6仿真器上程序運(yùn)行結(jié)果

圖1-34點(diǎn)擊命令欄上關(guān)閉按鈕的響應(yīng)結(jié)果借助中文版WM6仿真器執(zhí)行myFirstWithVS9項(xiàng)目的另一種方法是點(diǎn)擊圖1-25中的菜單“調(diào)試(D)?|?開(kāi)始執(zhí)行(不調(diào)試)(H)”,這時(shí)直接在WM6仿真器上執(zhí)行myFirstWithVS9項(xiàng)目,如圖1-35所示。圖1-35程序運(yùn)行結(jié)果要把VS9集成開(kāi)發(fā)環(huán)境完整、細(xì)致地介紹一下,是件很費(fèi)篇幅且不太容易的事情。更深入地了解VS9集成開(kāi)發(fā)環(huán)境的使用方法,還要靠平時(shí)不間斷地使用VS9進(jìn)行程序設(shè)計(jì)。本書(shū)第二章起的所有程序,均使用VS9進(jìn)行開(kāi)發(fā)和調(diào)試。

1.7EmbeddedVisualC++開(kāi)發(fā)環(huán)境

這里還要介紹一種使用經(jīng)典的EmbeddedVisualC++?集成開(kāi)發(fā)環(huán)境進(jìn)行WindowsCE程序設(shè)計(jì)的方法。EmbeddedVisualC++?簡(jiǎn)稱(chēng)EVC,有時(shí)也寫(xiě)做eVC。EVC體積小,是專(zhuān)用于開(kāi)發(fā)WindowsCE程序的集成開(kāi)發(fā)環(huán)境,因此使用EVC開(kāi)發(fā)更加簡(jiǎn)單易行。安裝EVC軟件只需花幾分鐘時(shí)間就可以了,需要同時(shí)安裝標(biāo)準(zhǔn)的StandardSDK仿真器和PocketPC2003SDK仿真器。EVC編寫(xiě)的程序同樣可以運(yùn)行在WM6智能設(shè)備上。安裝完成后,WindowsXP的開(kāi)始菜單中會(huì)出現(xiàn)“MicrosofteMbeddedVisualC++4.0?|?eMbeddedVisualC++4.0”快捷菜單,點(diǎn)擊后進(jìn)入EVC集成開(kāi)發(fā)環(huán)境,如圖1-36所示。

如圖1-37所示,選擇菜單“File?|?New”,進(jìn)入圖1-38。圖1-36EVC環(huán)境主界面圖1-37File菜單項(xiàng)圖1-38新建工程對(duì)話(huà)框在圖1-38中,選擇“WCEPocketPC2003Application”,在“Projectname”欄中輸入myFirstEVC,然后點(diǎn)擊“OK”,進(jìn)入圖1-39。選擇單選鈕“Anemptyproject”,然后點(diǎn)擊“Finish”,將彈出圖1-40所示的工程信息對(duì)話(huà)框,點(diǎn)擊“OK”,進(jìn)入圖1-41。之后,在圖1-41所示界面上編寫(xiě)myFirst.h、myFirst.c和mainWndProc.c程序。

圖1-39WCEPocketPC2003應(yīng)用程序向?qū)?/p>

圖1-40工程信息圖1-41工程文件主界面在圖1-41中的工具條上,選擇POCKETPC2003、Win32(WCEARMV4)Release和POCKETPC2003Emulator。然后,如圖1-42所示,點(diǎn)擊菜單“Build?|?B

溫馨提示

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

評(píng)論

0/150

提交評(píng)論