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

下載本文檔

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

文檔簡(jiǎn)介

第六章文件管理6.1文件讀寫6.2文件復(fù)制與移動(dòng)6.3命令欄圖標(biāo)按鈕6.4Unicode與GB編碼6.5文件管理實(shí)例6.6文件管理實(shí)例解釋6.7小結(jié)

6.1文件讀寫

在WindowsCE中進(jìn)行文件讀寫操作的方法與在桌面Windows系統(tǒng)中的文件讀寫相似,即首先創(chuàng)建或打開文件,返回對(duì)文件操作的句柄,調(diào)用CreateFile過程實(shí)現(xiàn);然后,定位文件指針,調(diào)用過程SetFilePointer實(shí)現(xiàn);接著,進(jìn)行文件的讀寫操作,調(diào)用ReadFile或WirteFile過程實(shí)現(xiàn);最后,關(guān)閉文件,調(diào)用CloseHandle過程實(shí)現(xiàn)。以上五個(gè)過程的調(diào)用原型如下所示:對(duì)文件的讀寫是從當(dāng)前文件指針位置開始的,定位文件指針的過程原型為:其中,hFile為文件句柄,由CreateFile過程返回;如果lpDistanceToMoveHigh為NULL,則lDistanceToMove為一個(gè)32位有符號(hào)數(shù),正為向左移動(dòng),負(fù)為向右移動(dòng);如果lpDistanceToMoveHigh不為NULL,則與lDistanceToMove組成64位有符號(hào)數(shù),可以移動(dòng)4GB大小的距離;dwMoveMethod可取FILE_BEGIN、FILE_CURRENT或FILE_END位標(biāo)志,分別表示移動(dòng)文件指針的參考點(diǎn)為文件頭、當(dāng)前文件指針位置或文件末尾。一般地,文件打開時(shí),文件指針指在文件頭部。把文件指針指向文件頭部可使用如下語(yǔ)句:

SetFilePointer(hFile,0,NULL,FILE_BEGIN);

獲得當(dāng)前文件指針的語(yǔ)句為

dwCurrentFilePtr=SetFilePointer(hFile,0,NULL,FILE_CURRENT);

將文件指針定位在文件末尾的語(yǔ)句為

SetFilePointer(hFile,0,NULL,FILE_END);讀寫文件的過程ReadFile和WriteFile參數(shù)相近,集中描述如下:其中,hFile為CreateFile過程調(diào)用成功后返回的文件句柄;lpBuffer指向從文件中讀取數(shù)據(jù)或向文件寫入數(shù)據(jù)的字節(jié)型緩沖區(qū);nNumberOfBytesToRead或nNumber

OfBytesToWrite為從文件中讀取或?qū)懭胛募械淖畲笞止?jié)數(shù)加上1后的值;lpNumberOfBytesRead或lpNumber

OfBytesWritten指向?qū)嶋H從文件中讀取或?qū)懭胛募械淖止?jié)數(shù);lpOverlapped參數(shù)一般置為NULL。當(dāng)文件句柄不再被使用時(shí),需要調(diào)用如下過程將其關(guān)閉:

BOOLCloseHandle(HANDLEhObject);

該過程用于關(guān)閉一個(gè)已經(jīng)打開的對(duì)象句柄,也用于關(guān)閉文件句柄。關(guān)閉成功后返回TRUE,否則返回0,并可借助GetLastError過程進(jìn)一步獲得出錯(cuò)信息。

6.2文件復(fù)制與移動(dòng)

文件的復(fù)制與移動(dòng)不需要借助于文件句柄,只需要指定源文件名和目標(biāo)文件名,調(diào)用CopyFile或MoveFile過程即可。這兩個(gè)過程的調(diào)用原型如下:上述參數(shù)的含義是自解釋(根據(jù)過程中的參數(shù)名稱就可以判斷參數(shù)的含義)的:lpExistingFileName表示源文件名;lpNewFileName表示目標(biāo)文件名,對(duì)于復(fù)制和移動(dòng)文件來說,都可以指定目標(biāo)文件名。bFailIfExists為TRUE,則目標(biāo)文件存在時(shí),復(fù)制文件失?。欢鵀镕ALSE時(shí),當(dāng)目標(biāo)文件存在時(shí),自動(dòng)覆蓋目標(biāo)文件。

6.3命令欄圖標(biāo)按鈕

由前面所學(xué)知識(shí)可知,在窗口頂部的命令欄中可以添加菜單和關(guān)閉程序按鈕。不僅如此,命令欄中還可以添加圖標(biāo)按鈕。如下文圖6-5所示,在命令欄上添加了兩個(gè)圖標(biāo)按鈕,分別用于打開文件和保存文件的快捷操作。在命令欄中添加圖標(biāo)按鈕,可以分三步完成:首先,調(diào)用CommandBar_AddBitmap向命令欄中添加圖標(biāo)容器;然后,創(chuàng)建HIMAGELIST對(duì)象imageList與圖標(biāo)容器相關(guān)聯(lián),并向imageList中添加圖標(biāo);最后,創(chuàng)建TBBUTTON按鈕,調(diào)用CommandBar_AddButtons將按鈕功能添加到命令欄上,點(diǎn)擊按鈕的事件消息為WM_COMMAND,其LOWORD(wParam)即為按鈕的ID號(hào)。例如添加如圖6-5所示的兩個(gè)圖標(biāo)按鈕,相關(guān)語(yǔ)句如下:其中,索引號(hào)為與按鈕相關(guān)聯(lián)的圖像列表控件中的圖標(biāo)序號(hào),0表示其中的第一個(gè)圖標(biāo);命令I(lǐng)D號(hào)為按鈕的ID號(hào);TBSTATE_ENABLED表示按鈕的初始狀態(tài)是啟用的;TBSTYLE_BUTTON表示按鈕樣式為標(biāo)準(zhǔn)下壓按鈕。tbBtns中有兩個(gè)成員,表示要?jiǎng)?chuàng)建兩個(gè)按鈕。詳細(xì)參數(shù)說明請(qǐng)參考TBBUTTON的聲明。

6.4Unicode與GB編碼

Unicode與GB編碼對(duì)于ASCII碼是兼容的,然而,對(duì)于簡(jiǎn)體中文等則不兼容。桌面Windows系統(tǒng)采用的是GB編碼,而WindowsCE采用的是Unicode編碼,文件存儲(chǔ)一般采用桌面Windows系統(tǒng)的標(biāo)準(zhǔn),因此,WindowsCE中顯示和存儲(chǔ)簡(jiǎn)體中文字符時(shí)需要進(jìn)行轉(zhuǎn)換:當(dāng)從文件中讀出中文字符時(shí),需要由GB碼轉(zhuǎn)換為Unicode編碼才能正常地顯示中文;當(dāng)向文件中寫入中文字符時(shí),需要由Unicode編碼轉(zhuǎn)換為GB碼,才能與桌面Windows文件系統(tǒng)讀寫兼容。一般地,Unicode與GB碼間的轉(zhuǎn)換通過調(diào)用API函數(shù)MultiByteToWideChar和WideCharToMultiByte完成。由GB碼轉(zhuǎn)換為Unicode碼時(shí),調(diào)用反之,由Unicode碼轉(zhuǎn)換為GB碼時(shí),調(diào)用其中,CodePage一般可以指定為CP_ACP,表示使用系統(tǒng)的ANSI編碼表;dwFlags一般指定為MB_PRECO

MPOSED,即使用單字符值;lpMultiByteStr和lpWide

CharStr指向要轉(zhuǎn)換或被轉(zhuǎn)換的字符串;cbMultiByte和cchWideChar指定參與轉(zhuǎn)換的字節(jié)數(shù)和Unicode字符數(shù);lpDefaultChar設(shè)為NULL表示使用系統(tǒng)字體庫(kù),lpUseDefaultChar設(shè)為0。

6.5文件管理實(shí)例

文件管理實(shí)例包括八個(gè)程序文件,依次為資源文件myFileManagement.rc、頭文件myFileManagement.h、主程序入口文件myFileManagement.cpp、主窗口過程文件mainWndProc.cpp、子窗口過程文件fileChildWndProc.cpp、“關(guān)于”對(duì)話框文件myAboutDlg.cpp、“復(fù)制”對(duì)話框文件myCopyToDlg.cpp、“移動(dòng)”對(duì)話框文件myMoveToDlg.cpp。各程序文件的源碼清單參見本節(jié)的各小節(jié)。各程序文件的源碼清單參見本節(jié)以下各小節(jié)。在如圖6-1所示的工作環(huán)境中建設(shè)好解決方案及項(xiàng)目文件myFileManagement,點(diǎn)擊菜單“生成|生成解決方案”或按F6鍵,生成myFileManagement.exe文件。點(diǎn)擊圖6-1中鼠

標(biāo)所在的快捷工具按鈕處,圖上彈出了“連接到設(shè)備”的跟蹤幫助信息的地方,會(huì)打開“WindowsMobile6

Professional”仿真器,如圖6-2所示。圖6-1項(xiàng)目工作環(huán)境圖6-2WM6仿真器點(diǎn)擊圖6-2中的菜單“文件|配置”,將彈出如圖6-3所示的窗口。其中,“共享文件夾”是指計(jì)算機(jī)硬盤上的文件夾,這里設(shè)為了“D:\MyCEBook\chap06\myFileManagement\myFileManagement\WindowsMobile6ProfessionalSDK(ARMV4I)\Debug”,即存放了myFileManagement.exe文件的目錄。同時(shí),該目錄也是圖6-2仿真器的“StorageCard”目錄。通過這種方式,可以使WM6仿真器和計(jì)算機(jī)實(shí)現(xiàn)文件共享,如圖6-4所示。圖6-3仿真程序?qū)傩詧D6-4WM6與計(jì)算機(jī)共享文件在圖6-4中的WM6中點(diǎn)擊myFileManagement.exe即可運(yùn)行該程序,程序主窗口如圖6-5所示。

在計(jì)算機(jī)上編制一個(gè)文本文件,例如myPlan01.txt,然后,在圖6-5所示的界面中點(diǎn)擊“打開文件”按鈕,如圖6-6所示。圖6-5程序主窗口圖6-6在計(jì)算機(jī)上編輯,在WM6上顯示文件在圖6-5中輸入一些文本,這里摘錄了小說《天龍八

部》的一段文字,輸完后點(diǎn)擊“保存文件”,如圖6-7至圖

6-10所示。

圖6-7編輯界面圖6-8保存界面圖6-9彈出保存文件對(duì)話框圖6-10在WM6上編輯,在計(jì)算機(jī)上顯示文件內(nèi)容下面在智能手機(jī)上演示一下“復(fù)制”和“移動(dòng)”文件的操作界面,如圖6-11至圖6-16所示。

圖6-11主界面圖6-12“文件”菜單圖6-13復(fù)制文件對(duì)話框圖6-14復(fù)制文件完成圖6-15移動(dòng)文件對(duì)話框圖6-16移動(dòng)文件完成6.5.1資源文件myFileManagement.rc6.5.2頭文件myFileManagement.h6.5.3主程序入口文件myFileManagement.cpp6.5.4主窗口過程文件mainWndProc.cpp6.5.5子窗口過程文件fileChildWndProc.cpp6.5.6“關(guān)于”對(duì)話框過程文件myAboutDlg.cpp6.5.7“復(fù)制文件”對(duì)話框文件myCopyToDlg.cpp6.5.8“移動(dòng)文件”對(duì)話框文件myMoveToDlg.cpp

6.6文件管理實(shí)例解釋

參看圖6-12,其中菜單“文件|打開文件”與命令欄上的打開文件圖標(biāo)均具有相同的ID號(hào),即IDM_OPENTEXT

FILE,以及子窗口上的“打開文件”按鈕ID號(hào)IDC_

OPENFILEATCHILDWND的響應(yīng)過程均為goOpen

TextFileChildCmd。在這個(gè)過程中調(diào)用了通用打開文檔對(duì)話框,選擇需要打開的文件名;然后,調(diào)用CreateFile和ReadFile將文件內(nèi)容讀到緩沖區(qū),并轉(zhuǎn)換為Unicode碼后在文本框中顯示出來;最后,關(guān)閉文件句柄,釋放不再使用的緩沖區(qū)。

goOpenTextFileChildCmd過程代碼如下:同理,參看圖6-12,菜單“文件|保存文件”與命令欄上的保存圖標(biāo)具有相同的ID號(hào)IDM_SAVETEXTFILE,以及子窗口上“保存文件”按鈕的ID號(hào)IDC_SAVEFILEATCHIL

DWND的響應(yīng)過程均為goSaveTextFileChildCmd。在這個(gè)過程中,首先調(diào)用通用打開文件對(duì)話框獲得存儲(chǔ)文件名;然后,將文本框內(nèi)的內(nèi)容保存到寫入文件緩存中,并把Unicode碼轉(zhuǎn)換為GB碼;接著,調(diào)用CreateFile和WriteFile將文件緩沖區(qū)內(nèi)容保存到文件中;最后,關(guān)閉文件句柄。這里不再羅列代碼,請(qǐng)參考上一節(jié)的程序源碼。圖6-12中菜單“文件|復(fù)制文件”或“文件|移動(dòng)文件”被點(diǎn)擊后彈出如圖6-13和圖6-15所示的模式對(duì)話框,選擇“源文件”名和“目標(biāo)路徑”后,在“目標(biāo)文件名”中輸入復(fù)制或移動(dòng)文件后的新文件名,點(diǎn)擊“復(fù)制”或“移動(dòng)”按鈕后完成文件的拷貝和移動(dòng)工作。其中,源文件名和目標(biāo)路徑的選取均使用通用打開文件對(duì)話框,因此,目標(biāo)路徑的選取需要點(diǎn)擊目標(biāo)路徑中的任意一個(gè)文件名。因此,這里的移動(dòng)文件功能可以實(shí)現(xiàn)文件的重命名功能,即在同一路徑中移動(dòng)文件,目標(biāo)文件名為新的文件名。下面看一下復(fù)制文件的過程:

6.7小結(jié)

文件管理還包括文件刪除、目錄創(chuàng)建與刪除、文件屬性設(shè)定與修改、內(nèi)存映射文件管理、文件搜索等,這些過程為DeleteFile、CreateDirect

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論