Win CE開(kāi)發(fā)特性及忠告
第三類(lèi)函數是Win32函數CompareString()。這個(gè)函數類(lèi)似于第二類(lèi)函數,但是它允許你指定當地設置(the locale)作為一個(gè)參數,而不是使用現有的當地設置(current locale settings)。CompareString()函數允許你選擇性地指定兩個(gè)字符串的長(cháng)度。你可以將第二個(gè)參數設置為NORM_IGNORECASE,從而使函數比較字符串時(shí)不比較大小寫(xiě)。
通常,即使不將第二個(gè)參數設置為NORM_IGNORECASE,CompareString()函數也不用來(lái)區分大小寫(xiě)。我們經(jīng)常用wcsncoll()函數來(lái)區分大小寫(xiě),除非使用當地的字符C(C locale)。所以,在我們的代碼中,不使用CompareString()函數來(lái)區分大小寫(xiě),而用wcsncoll()函數來(lái)區分大小寫(xiě)
不要使用相對路徑
與Windows NT不一樣,Windows CE沒(méi)有當前目錄這個(gè)概念,因此,任何路徑只是相對于根目錄而言的。如果你的軟件給文件或目錄使用相對路徑,那么你很可能把它們移到別的地方了。例如,路徑.abc在Windows CE中被當作abc看待。
移走了對calloc()和 time()函數的調用
C運行庫中的calloc()函數不能使用,但是malloc()函數可以代替calloc()函數。并且不要忘記,calloc()函數初始化時(shí)分配的內存為零,而malloc()函數不一樣。同樣,time()函數也不能使用,但你可以使用Win32函數GetSystemTime()函數代替time()函數。
經(jīng)過(guò)以上的警告后,你會(huì )高興地學(xué)習最后令你驚訝的兩點(diǎn)忠告。
不需要改變Win32 輸入/輸出(I/O)文件的調用
Win32的輸入輸出函數,Windows CE也支持。允許你象訪(fǎng)問(wèn)Win32文件系統那樣訪(fǎng)問(wèn)對象。CreateFile()函數在Windows CE中不能辯認標志FILE_FLAG_RANDOM_ACCESS,但是這個(gè)標志僅用作可選的磁盤(pán)訪(fǎng)問(wèn),并且不影響函數調用的功能。
不要擔心字節的狀態(tài)
當我們把應用程序寫(xiě)入Windows CE時(shí),有了一個(gè)美好的發(fā)現,那就是Windows CE的數字數據類(lèi)型的字節狀態(tài)與Intel結構的字節狀態(tài)一樣,在所有的處理器上,Windows CE均支持。
幾乎象所有的數據庫引擎一樣,Raima數據庫管理器在數據庫文件中以二進(jìn)制形式保存數字數據。這就意味一個(gè)記錄無(wú)論何時(shí)寫(xiě)入數據庫或從數據庫讀出,均被當作一系列的字節來(lái)處理,不管它域的內容。只要數據庫文件不要傳給別的任何系統,數字數據的字節狀態(tài)問(wèn)題就解決了。如果數據庫文件被一個(gè)來(lái)自原始系統且帶有不同字節狀態(tài)的處理器訪(fǎng)問(wèn),數字數據將被誤解。
無(wú)論何時(shí),當你在擁有不同處理器的機器上傳輸文件時(shí),就會(huì )出現這個(gè)問(wèn)題。在這個(gè)問(wèn)題上,值得高興的是所有類(lèi)型的處理器都使用相同的字節狀態(tài)。
在使用Windows CE時(shí),這些忠告應該引起你足夠的重視,避免學(xué)習時(shí)走彎路。
評論