青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

love in C++, live on MFC

to get ready...

C++博客 首頁 新隨筆 聯系 聚合 管理
  47 Posts :: 0 Stories :: 97 Comments :: 0 Trackbacks

動機 : 在沒有裝中文字體的機器上顯示中文

如果不是unicode,某些中文字符會在不同的codepage上出現亂碼;如果當前codepage為韓文時,某些中文字會變成韓文的樣子,奇怪.

Step1: define _UNICODE, undefine _MBCS

宏定義UNICODE, _UNICODE定義兩個也可以,定義一個也可以,windows的頭文件會保證兩個都會被定義.

#ifdef?_UNICODE
#ifndef?UNICODE
#define ?UNICODE? // ?UNICODE?is?used?by?Windows?headers

#endif
#endif

?
#ifdef?UNICODE
#ifndef?_UNICODE
#define ?_UNICODE???????? // ?_UNICODE?is?used?by?C-runtime/MFC?headers
#endif
#endif

?

Step2: 更改變量類型

比如 char -> TCHAR

但是 ,并不是說所有的char類型都不能用了.如果需要用,并且函數的參數/返回值什么的都不沖突,char類型還是可以用的.

Step3: 更改常量字符串形式

" abc " -> _T(" abc ")

因為開始寫程序時沒有注意 ,造成這樣的常量字符串形式非常多,一個個改起來很煩,我寫了個小插件,可以講 abc 選中后點一下 button就能變成_T( abc ),有點用,代碼也非常的短.

Step4: 替換某些函數

比如atoi -> _ttoi

在這里遇到一個問題,就是atof的替換.

按照msdn, atof應該被_ttof替換

TCHAR.H routine

_UNICODE & _MBCS not defined

_MBCS defined

_UNICODE defined

_tstof

atof

atof

_wtof

但是奇怪的是,VC6里面不認識_tstof這個函數,VC.net 2003就可以.

有兩個解決的辦法:

1)????? 因為atof只是替換為浮點數,所以這里用WideCharToMultiByte轉化一下之后再調用atof也是可行的

2)????? 呵呵,strtod的替換函數_tcstod,哈哈,當然參數要變一下,我覺得這個方法不錯,不要被msdn限制死了

Step5: 檢查一下調用其他 dll 的接口函數

因為項目還用了另外一個dll,其中有些接口需要char*參數,這個時候就必須用WideCharToMultiByte轉換一下了.

VC里面的設置:
1) 等把所有的編譯error改完了之后一編譯,除了個link錯誤,不過msdn有解釋:
If you are using Unicode and MFC, you will get an unresolved external on _WinMain@16 if you don’t create an entrypoint to wWinMainCRTStartup. Use the /ENTRY option or type this value in the Project Settings dialog box. (To find this option in the development environment, click Settings on the Project menu, then click the Link tab, and click Output in the Category box.)

2)終于編譯成功了,調試的時候卻發現CString的值不能在QuickWatch窗口中顯示了
tools->option->
in the debug tab u can find a check box Labeled "Display unicode strings"
Check it.

問題 : 直接用 ANSI dll 中的 CString

在使用dll的時候,需要直接使用dll中的一個變量,CString類型,因為這個dll還沒有改為unicode,所以在直接使用其變量時有點問題,使得值不對.(是不是這個原因還沒有完全驗證,應該是的)

到這里 , 宣布移植失敗 !

/*補充:
結果是失敗,但是基本移植代碼的所有步驟都有了。而且,也指出了如果需要調用的dll不是unicode,每次調用/傳遞參數時,都要轉換,很煩。
后來我把dll的代碼也移植了下,現在運行的很好,韓文、中文都可以顯示,不管你當前語言是什么。
*/

還有一篇講移植步驟的,更全面,適合更復雜的情況:
Cheat Sheet:Unicode-enabling Microsoft C/C++ Source Code (http://www.i18nguy.com/unicode/c-unicode.html)

?

posted on 2006-05-18 16:09 flyingxu 閱讀(3261) 評論(6)  編輯 收藏 引用 所屬分類: VC/MFCBug of Today

Feedback

# re: 把代碼移植成UNICODE 2006-05-19 09:47 沐楓
狂暈。看了半天,來了一句“失敗”!!!  回復  更多評論
  

# re: 把代碼移植成UNICODE 2006-05-22 23:48 flyingxu
@沐楓
呵呵,結果是失敗,但是基本移植代碼的所有步驟都有了。而且,也指出了如果需要調用的dll不是unicode,每次調用/傳遞參數時,都要轉換,很煩。
后來我把dll的代碼也移植了下,現在運行的很好,韓文、中文都可以顯示,不管你當前語言是什么。
  回復  更多評論
  

# re: 把代碼移植成UNICODE 2009-12-09 17:29 wzyzb@qq.com
@flyingxu
你的那個小程序能不能發給我用下 有源碼更好 先謝了,  回復  更多評論
  

# re: 把代碼移植成UNICODE 2009-12-09 17:30 wzyzb@qq.com
我的郵箱wzyzb@qq.com  回復  更多評論
  

# re: 把代碼移植成UNICODE 2010-01-08 20:00 tyt2008cn
樓主,拜求那個替換 "abc"為_T("abc")的小工具,
正準備把一個MFC工程移植為UNICODE,杯具中,我的郵箱tyt2008cn@126.com, 先謝過了!  回復  更多評論
  

# re: 把代碼移植成UNICODE[未登錄] 2010-11-19 16:23 jacky
我這里也有個工具,請看:
http://hi.baidu.com/qiujiejia/blog/item/46057f2bacf7abeae7cd407b.html

和:
http://hi.baidu.com/qiujiejia/blog/item/4af2261bbeba5deaaf5133bf.html  回復  更多評論
  

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久国产手机看片| 亚洲精品孕妇| 欧美在线免费| 国产日韩av在线播放| 欧美一级午夜免费电影| 亚洲图片欧洲图片av| 国产精品久久综合| 久久九九热re6这里有精品| 性欧美精品高清| 精品69视频一区二区三区| 免费久久精品视频| 欧美成人国产一区二区| 一本色道久久99精品综合| 99精品热视频只有精品10| 国产精品福利影院| 久久夜色精品国产亚洲aⅴ| 久久久久九九视频| 日韩一区二区电影网| 中日韩高清电影网| 狠狠色综合色综合网络| 亚洲国产精品va| 奶水喷射视频一区| 亚洲午夜日本在线观看| 香蕉尹人综合在线观看| 亚洲国产精品久久| 一区二区三区蜜桃网| 国产一区二区三区精品欧美日韩一区二区三区| 久久深夜福利免费观看| 欧美福利精品| 欧美亚洲午夜视频在线观看| 久久夜色精品国产欧美乱| 亚洲视频在线观看一区| 久久激情五月丁香伊人| 一区二区三区日韩精品视频| 午夜视频一区| 一区二区三区精品久久久| 午夜精品久久久久久久久| 亚洲人成亚洲人成在线观看| 亚洲夜晚福利在线观看| 亚洲经典在线看| 亚洲欧美日韩成人| 亚洲狼人精品一区二区三区| 性欧美video另类hd性玩具| 99精品视频免费全部在线| 欧美一区二区三区另类| 一区二区高清视频在线观看| 久久久久看片| 欧美中文日韩| 欧美视频日韩视频在线观看| 欧美国产精品| 国产一区在线看| 亚洲亚洲精品在线观看| 99国产麻豆精品| 免费看的黄色欧美网站| 久久综合九色综合久99| 国产精品日韩在线播放| 亚洲美女色禁图| 亚洲免费播放| 欧美黄色一区| 欧美福利网址| 亚洲国产高清自拍| 久久久久久噜噜噜久久久精品| 久久精品91久久香蕉加勒比 | 久久成人人人人精品欧| 欧美日韩一区三区四区| 亚洲日本va在线观看| 亚洲大胆av| 久久夜色精品国产亚洲aⅴ| 久久久久免费视频| 国语精品中文字幕| 久久精品国产一区二区三| 久久精品亚洲乱码伦伦中文| 国产欧美日韩综合| 欧美一区视频| 麻豆精品一区二区综合av| 激情久久中文字幕| 久久婷婷麻豆| 亚洲国产一区二区三区在线播| 亚洲国产高清在线| 欧美精品一区二区三区蜜桃| 亚洲激情在线激情| 99国产精品久久久久久久成人热| 欧美精品v国产精品v日韩精品| 亚洲国产一区二区精品专区| 日韩视频一区二区三区在线播放免费观看| 欧美二区乱c少妇| 亚洲免费观看高清完整版在线观看| 99热这里只有精品8| 欧美三级电影网| 欧美亚洲自偷自偷| 欧美xart系列高清| 99视频在线精品国自产拍免费观看| 欧美日韩福利| 亚洲欧美区自拍先锋| 久久精品国产亚洲一区二区| 1000精品久久久久久久久| 欧美激情1区2区| 亚洲一二三四久久| 免费欧美日韩| 亚洲免费一级电影| 狠狠做深爱婷婷久久综合一区 | 一本色道久久88综合亚洲精品ⅰ| 欧美亚洲在线播放| 一区精品在线| 欧美理论在线播放| 中文国产一区| 欧美激情第8页| 性欧美8khd高清极品| 亚洲国产91| 国产精品女人网站| 噜噜噜躁狠狠躁狠狠精品视频| 亚洲美女啪啪| 欧美国产视频在线| 欧美一区二区视频在线| 亚洲人成欧美中文字幕| 国产亚洲第一区| 欧美日韩综合网| 蜜桃精品久久久久久久免费影院| 亚洲一卡久久| 午夜精品理论片| 一区二区三区四区五区在线| 久久野战av| 亚洲欧美日本视频在线观看| 亚洲大片在线| 国产综合激情| 国产精品家庭影院| 欧美电影专区| 久久九九免费| 欧美亚洲一区| 亚洲手机视频| 9色精品在线| 亚洲国产一区二区三区高清| 麻豆久久婷婷| 久久久久久久久蜜桃| 亚洲宅男天堂在线观看无病毒| 91久久精品美女高潮| 国产亚洲aⅴaaaaaa毛片| 欧美视频在线观看免费网址| 欧美丰满少妇xxxbbb| 久久久久综合一区二区三区| 欧美一级久久| 午夜精品国产| 亚洲欧美日韩爽爽影院| 中文亚洲欧美| 亚洲一二区在线| 亚洲女同同性videoxma| 亚洲无线观看| 亚洲一区二区三区午夜| 亚洲网站在线播放| 亚洲一区不卡| 亚洲欧美国产视频| 亚洲欧美在线高清| 欧美在线网站| 久久久精品国产免费观看同学| 久久精品国产欧美激情| 久久精品国产77777蜜臀| 久久riav二区三区| 久久亚洲影音av资源网| 久久尤物视频| 欧美电影在线免费观看网站| 欧美日韩高清区| 国产精品拍天天在线| 国产精品中文字幕欧美| 国产亚洲观看| 亚洲国产1区| 一区二区成人精品| 亚洲欧美中日韩| 久久久久久尹人网香蕉| 欧美激情一区二区三区| 亚洲片在线资源| 亚洲一区在线观看视频| 久久gogo国模啪啪人体图| 蜜臀av性久久久久蜜臀aⅴ| 欧美日韩国产专区| 国产欧美在线看| 亚洲国产成人在线播放| 在线亚洲+欧美+日本专区| 欧美在线你懂的| 欧美大片在线观看| 在线亚洲美日韩| 久久久久久亚洲精品不卡4k岛国| 免费成人在线视频网站| 国产精品wwwwww| 一区二区在线看| 亚洲调教视频在线观看| 久久婷婷国产麻豆91天堂| 最近中文字幕mv在线一区二区三区四区| 亚洲蜜桃精久久久久久久| 性色av一区二区三区在线观看| 免费久久99精品国产自| 国产精品入口麻豆原神| 亚洲第一天堂无码专区| 亚洲免费一在线| 欧美高清视频一区二区| 亚洲欧美不卡| 欧美精品日韩精品| 精品动漫3d一区二区三区免费版| 夜夜爽99久久国产综合精品女不卡| 久久er99精品| 一区二区高清视频在线观看|