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