主題:編譯通不過(guò) 共有48434人關(guān)注過(guò)本帖 |
---|
yy |
1樓 信息 | 搜索 | 郵箱 |
加好友 發(fā)短信 |
Post By:2013-3-22 11:40:00 [顯示全部帖子]
SHFILEINFOW沒(méi)定義,這個(gè)結(jié)構(gòu)體在shellapi.h里定義的,根據(jù)你是否定義了UNICODE決定到底是該使用SHFILEINFOA還是SHFILEINFOW。
mbctype.h這個(gè)頭文件CE沒(méi)有,CE只有ctype.h。 WINCE比windows精簡(jiǎn)的很多,其中WINCE只支持UNICODE,所以移植的時(shí)候ANSI的都要改成UNICODE的,就是char的都要改成WCHAR的,char字符串和WCHAR字符串可以用mbstowcs和wcstombs來(lái)轉(zhuǎn)。你兩個(gè)問(wèn)題都是這個(gè)原因。
|
單帖管理 | 引用 | 回復(fù) |
yy |
2樓 信息 | 搜索 | 郵箱 |
加好友 發(fā)短信 |
Post By:2013-3-22 14:12:00 [顯示全部帖子]
把windows上的程序移植到CE上確實(shí)不是改改配置就可以的,要改的地方很多的,大部分原因是CE精簡(jiǎn)了一些重復(fù)封裝的庫(kù)函數(shù)還有就是UNICODE的問(wèn)題。被精簡(jiǎn)掉的庫(kù)函數(shù)可以用其他函數(shù)代替,UNICODE的問(wèn)題一般錯(cuò)誤很多,但是并不難改。
你前面很多寬字符串處理函數(shù)的錯(cuò)誤應(yīng)該是你的參數(shù)沒(méi)弄對(duì),printf("test");對(duì)應(yīng)wprintf(L"test"); int len = strlen("test");對(duì)應(yīng)int len = wcslen(L"test");寬字符串要記得加L 后面GDI里面TextOut這個(gè)函數(shù)CE是沒(méi)有的,這個(gè)函數(shù)就是把DrawText封裝了下,你自己用DrawText重新實(shí)現(xiàn)下吧。 const char [6]' to 'LPCTSTR這個(gè)錯(cuò)誤就是你吧一個(gè)窄字符數(shù)組直接當(dāng)寬字符串指針傳了,你要先用mbstowcs轉(zhuǎn)一下,或者你干脆把你整個(gè)工程的所有字符串都改成寬字符的。 |
單帖管理 | 引用 | 回復(fù) |