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

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 閱讀(3238) 評論(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>
            亚洲免费视频观看| 欧美一区二区在线免费观看| 一区二区三区日韩欧美| 亚洲乱码国产乱码精品精可以看 | 蜜臀久久久99精品久久久久久| 小处雏高清一区二区三区| 久久精品国产亚洲aⅴ| 老司机午夜精品| 亚洲欧洲日韩女同| 在线视频欧美日韩| 欧美在线|欧美| 欧美成人精品影院| 欧美色道久久88综合亚洲精品| 国产精品视频你懂的| 国产一区二区久久精品| 在线免费观看视频一区| 亚洲天堂免费观看| 牛夜精品久久久久久久99黑人| 亚洲欧洲日产国码二区| 午夜一区二区三视频在线观看| 久久九九国产精品| 欧美电影电视剧在线观看| 一本久久综合亚洲鲁鲁五月天| 欧美一区二区三区的| 欧美另类专区| 国产在线观看一区| 这里只有精品电影| 欧美波霸影院| 午夜精品视频在线观看一区二区| 你懂的视频欧美| 国产色视频一区| 亚洲一区二区免费视频| 欧美顶级艳妇交换群宴| 亚洲欧美日韩综合国产aⅴ| 欧美成人综合一区| 精品动漫3d一区二区三区| 一本大道久久a久久精品综合| 欧美视频导航| 一色屋精品亚洲香蕉网站| 亚洲午夜久久久| 亚洲第一精品夜夜躁人人躁| 亚洲综合色自拍一区| 欧美久久久久免费| 亚洲国产人成综合网站| 久久久在线视频| 亚洲女同性videos| 国产精品久久福利| 一区二区三区四区精品| 亚洲国产日韩欧美在线99| 久久午夜影视| 在线不卡中文字幕| 玖玖视频精品| 久久久久久久久久久久久久一区| 国产欧美短视频| 欧美在线日韩| 篠田优中文在线播放第一区| 国产精品推荐精品| 欧美一区二区三区四区夜夜大片| 一区二区欧美激情| 欧美图区在线视频| 亚洲午夜在线视频| 在线午夜精品自拍| 国产精品久久国产三级国电话系列| 一区二区精品在线| 亚洲午夜精品福利| 国产日韩综合| 久久久夜精品| 欧美成人国产va精品日本一级| 久久精品国产99精品国产亚洲性色| 国产在线麻豆精品观看| 久久综合九色99| 免费不卡视频| 这里只有精品在线播放| 亚洲主播在线观看| 国产综合视频| 欧美不卡视频一区| 欧美精品激情在线| 亚洲欧美色一区| 久久久久久久久久看片| 日韩午夜免费视频| 亚洲一区二区三区四区五区午夜 | 国产一在线精品一区在线观看| 午夜精品亚洲一区二区三区嫩草| 亚洲欧美另类在线观看| 国内精品国产成人| 欧美高清视频在线 | 亚洲欧洲三级电影| 亚洲靠逼com| 国产精品手机视频| 久久精品日韩一区二区三区| 美女国产一区| 亚洲欧美精品中文字幕在线| 久久久久国产精品午夜一区| 亚洲精品资源美女情侣酒店| 中日韩视频在线观看| 久久精品亚洲一区| 久久av一区二区三区| 久久精品视频一| 一区二区三区精品久久久| 性久久久久久久久| 日韩网站在线| 欧美在线综合| 亚洲专区欧美专区| 欧美xart系列高清| 久久成人综合视频| 欧美日韩精品久久久| 榴莲视频成人在线观看| 欧美午夜不卡在线观看免费 | 亚洲欧洲日本mm| 国产精品99久久久久久久久久久久 | 免费观看在线综合| 欧美性色aⅴ视频一区日韩精品| 欧美一区二区三区免费看| 欧美精品 日韩| 欧美a级大片| 国内精品免费午夜毛片| 一本色道**综合亚洲精品蜜桃冫 | 欧美在线视频一区| 亚洲欧美国产另类| 欧美日韩视频第一区| 欧美激情一区二区三区蜜桃视频| 国产女人aaa级久久久级| 99re6这里只有精品| 亚洲精品国产精品国自产观看| 午夜久久tv| 久久国产精品一区二区三区| 国产精品成人久久久久| 日韩视频免费看| 一区二区国产精品| 欧美巨乳波霸| 99国产精品久久久久久久久久| 亚洲日本中文字幕| 欧美福利网址| 亚洲精品一区二区三| 日韩视频在线观看国产| 欧美福利视频一区| 亚洲狼人精品一区二区三区| 亚洲视频免费| 国产精品h在线观看| 一区二区三区精品久久久| 亚洲午夜激情网站| 国产精品日日做人人爱| 午夜精品视频| 蜜桃av一区二区三区| 亚洲国产精品久久久久秋霞不卡| 久久亚洲综合色一区二区三区| 免费在线播放第一区高清av| 亚洲激情在线观看| 欧美日韩国产经典色站一区二区三区| 亚洲精品1234| 亚洲综合日韩在线| 国产偷久久久精品专区| 欧美日韩色一区| 亚洲国产视频a| 一区二区三区精品国产| 国产精品成人免费| 亚洲欧美日韩国产精品| 久久性天堂网| 亚洲黄网站在线观看| 欧美日韩精品欧美日韩精品 | 嫩草伊人久久精品少妇av杨幂| 欧美韩日一区二区| 亚洲无线视频| 国产一区二区三区在线观看视频| 久久免费观看视频| 艳女tv在线观看国产一区| 久久久精品国产免大香伊| 亚洲福利视频网| 欧美午夜精品久久久久久人妖 | 欧美日韩一区二区在线观看视频| 亚洲一区二区成人在线观看| 久久最新视频| 亚洲免费伊人电影在线观看av| 国产真实乱偷精品视频免| 欧美风情在线观看| 午夜精品区一区二区三| 亚洲国产精品久久久久| 欧美专区第一页| av成人天堂| 黄色精品一二区| 国产精品久久久久久久久| 男人天堂欧美日韩| 性色av一区二区三区在线观看| 亚洲国产免费看| 久久久久久久波多野高潮日日| 99亚洲精品| 亚洲高清成人| 狠狠综合久久av一区二区老牛| 欧美三级乱码| 免费看亚洲片| 久久久国产成人精品| 亚洲尤物视频网| 亚洲欧洲一区二区三区久久| 久久婷婷麻豆| 欧美一区二区三区视频在线| 一区二区三区四区在线| 亚洲精品欧美日韩专区| 国内精品美女在线观看| 国产精品影院在线观看| 国产精品久久久久77777|