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

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>
            亚洲免费在线观看视频| 精品成人在线| 欧美黄色一级视频| 国产日韩精品在线播放| 亚洲免费大片| 日韩网站在线看片你懂的| 久久久久国产一区二区| 先锋a资源在线看亚洲| 欧美极品aⅴ影院| 欧美大秀在线观看| 精品69视频一区二区三区| 亚洲一区二区免费视频| 亚洲色图自拍| 欧美日韩精品一本二本三本| 欧美激情第9页| 亚洲大胆人体在线| 久久久亚洲欧洲日产国码αv| 性做久久久久久久久| 国产精品v欧美精品v日韩精品| 亚洲国产日韩在线一区模特| 亚洲国产美国国产综合一区二区| 性视频1819p久久| 久久国产精品第一页| 国产精品一区二区在线| 亚洲欧美激情精品一区二区| 久久国产精品99久久久久久老狼| 国产精品男人爽免费视频1| 99精品热视频| 亚洲专区国产精品| 国产精品一区二区三区四区| 午夜精品999| 久久深夜福利| 亚洲国产裸拍裸体视频在线观看乱了中文 | 亚洲精品久久久蜜桃| 亚洲精品在线观看视频| 欧美乱人伦中文字幕在线| 亚洲精品美女在线观看| 亚洲无线视频| 国产美女精品视频| 久久久久久久999| 亚洲国产欧美不卡在线观看| 一区二区欧美国产| 欧美婷婷久久| 性18欧美另类| 欧美国产亚洲精品久久久8v| 一区二区国产精品| 国产精品乱人伦一区二区| 欧美在线精品免播放器视频| 免费久久99精品国产自在现线| 亚洲精品欧美日韩专区| 国产精品久久波多野结衣| 欧美一区二区三区免费看| 欧美成人免费全部| 亚洲综合色自拍一区| 国内精品视频久久| 欧美精品久久久久久久免费观看 | 久久嫩草精品久久久精品一| 欧美www视频在线观看| 一区二区三区精品视频在线观看| 国产精品一级二级三级| 久久综合图片| 亚洲一区二区网站| 免费在线播放第一区高清av| 亚洲一区二区在线播放| 国产综合久久| 欧美日韩中文| 久久婷婷国产综合精品青草| 99国产精品久久久久久久| 久久亚洲精品伦理| 亚洲一区二区久久| 在线观看精品一区| 国产精品亚洲激情| 欧美国产日韩视频| 久久精品五月婷婷| 中文国产一区| 91久久在线| 欧美韩国在线| 久久久亚洲精品一区二区三区| 亚洲视频在线免费观看| 亚洲第一精品福利| 国产午夜精品福利| 国产精品久久久久久久久久尿| 美女久久一区| 久久久久久9| 欧美一区深夜视频| 亚洲新中文字幕| 99av国产精品欲麻豆| 欧美激情视频在线播放| 久久亚洲不卡| 久久久成人网| 久久精品国产免费| 性做久久久久久久免费看| 亚洲少妇最新在线视频| 99re6这里只有精品| 亚洲激情综合| 91久久黄色| 亚洲日本一区二区| 亚洲国产欧美一区| 亚洲黄色小视频| 精品69视频一区二区三区| 国产在线观看精品一区二区三区| 国产精品捆绑调教| 国产精品一二三| 国产精品日韩精品欧美在线| 国产精品高潮呻吟久久av无限| 欧美精品一区在线播放| 欧美连裤袜在线视频| 欧美精品1区2区| 欧美人与禽性xxxxx杂性| 欧美日韩国产成人在线| 欧美屁股在线| 国产精品扒开腿爽爽爽视频| 欧美午夜视频在线| 国产精品免费网站在线观看| 国产精品伦一区| 国产欧美日韩亚洲精品| 国内精品国产成人| 伊人天天综合| 亚洲日本中文字幕免费在线不卡| 亚洲精品看片| 这里只有精品丝袜| 午夜一区在线| 久久在线免费观看视频| 欧美激情第9页| 亚洲免费电影在线| 亚洲欧美日韩精品在线| 久久久999成人| 欧美大片在线观看一区| 欧美视频三区在线播放| 国产精品视频免费| 极品少妇一区二区三区| 亚洲精品网站在线播放gif| 99国产精品久久久久老师| 午夜国产不卡在线观看视频| 久久久久久久久久久成人| 亚洲第一色中文字幕| 亚洲精品在线免费| 欧美一级播放| 欧美激情在线免费观看| 国产精品嫩草影院av蜜臀| 精品91视频| 亚洲午夜激情网页| 免费成人在线视频网站| 9i看片成人免费高清| 欧美一区二区三区视频免费| 欧美国产日韩视频| 国产欧美在线观看一区| 亚洲精品欧美日韩| 欧美中文字幕不卡| 最新日韩在线视频| 亚洲欧美成人一区二区在线电影 | 欧美伦理91i| 国产一区 二区 三区一级| 亚洲精品一区二区三| 欧美在线|欧美| 亚洲人成在线观看一区二区| 久久不射网站| 欧美午夜不卡视频| 亚洲日本理论电影| 久久精品人人做人人综合| 亚洲区中文字幕| 久久久久天天天天| 国产精品网站在线| 在线亚洲一区观看| 欧美黑人在线播放| 欧美主播一区二区三区| 国产精品久久国产愉拍| 亚洲美女区一区| 欧美 日韩 国产一区二区在线视频 | 99精品国产在热久久婷婷| 久久久久久噜噜噜久久久精品| 日韩视频久久| 欧美国产日韩精品| 在线精品国产成人综合| 欧美伊人久久久久久午夜久久久久| 最新国产成人在线观看| 久久综合色播五月| 激情婷婷亚洲| 久久国产乱子精品免费女| 国产精品99久久久久久久久久久久 | 亚洲区中文字幕| 蜜桃av一区二区| 久久青草欧美一区二区三区| 国产区在线观看成人精品| 亚洲欧美国产精品专区久久| 99精品久久久| 欧美视频一区| 亚洲专区免费| 亚洲午夜三级在线| 国产精品网站在线| 欧美亚洲日本国产| 亚洲欧洲av一区二区| 国产精品一区二区三区久久久| 亚洲一区成人| 亚洲一区影院| 国产日韩精品视频一区二区三区 | 久久精品国产第一区二区三区最新章节 | 久久久久久久精| 亚洲电影欧美电影有声小说| 欧美成年人在线观看|