WinCE5 0下寬字元的7條經驗總結(原創)

2021-04-13 05:46:47 字數 1147 閱讀 7926

wince5.0下寬字元的7條經驗總結 by  http://blog.csdn.net/xiaoxiongli/    blog

因為wince只支援unicode!!!--僅僅記住這句話,你肯定會栽跟頭,儘管它是真理!

在wince下程式設計需要用16位代表乙個字元的寬字元,由於在windows nt下程式設計習慣了,難免在wince下要犯錯誤,雖然我已經在wince下把「寬字元」三個字刻在腦海中了。

以下是我的經驗總結:

1:一般情況下(注意決不是全部,參見7)wince下設計字串的函式,用text括起來,類也一樣。

比如:cstring str; 

str.format(text("hello everyone!!!"));

2:如需用ascii字元(窄字元),也可以這麼用:

char* p; p = "hello";

這樣用是沒有問題的,但要牢記這裡是窄字元,是無法在wince下顯示的,通常情況下還是用寬字元為好,但特殊情況下:比如說用於網路傳輸的情況下會用到這種,比如說我要在pda上寫乙個網路程式,和pc主機進行通訊。當然寫成寬字元應該也沒有什麼問題吧?(應該沒有什麼問題)只不過是網路傳輸量增加了。

3: 所謂寬字元只是和字串有關的,和int或者其他型別無關,該是幾個位元組還是幾個位元組

4:使用函式要注意,不是spintf了,而是swprintf,注意w代表了wchar_t的意思,還有由於wince不支援

5:可以用tchar來增加移植性,不過我不太喜歡用這個東西

6:可以使用widechartomultibyte和multibytetowidechar來進行「寬窄轉換」

7:糾正乙個誤區,並非在所有的wince函式中都需要用寬字元,恰恰想法,有的函式需要用窄字元,比如winsock的某些函式。例如:send(socketabc,  "aaaaa",  sizeof("aaaaa"))就行,而send(socketabc,  text("aaaaa"),  sizeof(text("aaaaa")))就無法編譯通過了,當然想傳的話,用結構體是乙個不錯的選擇。

我就是初學wince,所以在這裡栽了跟頭,在ip設定上,用乙個cstring讀進來,沒有轉成窄字元就去連線,導致我用trace來看ip位址完全正確,而就是連不上伺服器,鬱悶,搞了整整一天多才搞出來,浪費了時間啊,最好直接用常量字元傳進去才連的上,這才發現是系統「做了手腳」。

WinCE 5 0 的目錄結構

platform builder 5已經自帶wince 5.0,安裝過程會指定wince 5.0的安裝路徑,預設為x wince500,wince500即為wince 5.0的根目錄。根目錄下主要有以下幾個目錄 public,platform,private,pbworkspaces,others,...

WinCE5 0下觸控螢幕的校準

幫朋友除錯乙個應用程式,應用程式搞定後,定製到系統內後,開機自動執行的時候,觸控螢幕無法使用,可能bsp不是最新的版本,不過自己順便可以學習下,校準觸控螢幕。我把ce裡自帶的那個觸控螢幕校準程式開機自啟動,校準過後,檢視登錄檔裡的值,發現很奇怪,竟然出現負值 1144,920 2332,1652 2...

WinCE5 0和WinCE6 0的編譯選項介紹

在wince5.0中,在 build os 選單中,我們會看到不同的編譯選項 sysgen build and sysgen 和 build and sysgen current bsp sysgen 不用多說,當你在 catalog 中新增或刪除了新的item的時候,就用這個吧。build and...