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

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 閱讀(3268) 評論(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>
            日韩视频专区| 亚洲人成免费| 欧美一级成年大片在线观看| 免费观看久久久4p| 亚洲美女中文字幕| 中文精品视频一区二区在线观看| 国产精品福利在线观看| 欧美一区二区三区日韩视频| 久久国产色av| 亚洲美女av网站| 一本久久综合亚洲鲁鲁| 国产乱肥老妇国产一区二| 麻豆九一精品爱看视频在线观看免费 | 亚洲第一色中文字幕| 亚洲国产日韩美| 国产精品美女视频网站| 麻豆成人小视频| 欧美日本韩国在线| 久久成人国产| 欧美成人精品福利| 午夜精品99久久免费| 久久嫩草精品久久久久| 国产啪精品视频| 欧美国产日韩a欧美在线观看| 欧美午夜片在线观看| 久久久www成人免费精品| 欧美成人a∨高清免费观看| 午夜精品视频在线观看一区二区| 久久免费视频在线| 亚洲综合欧美| 久久综合色天天久久综合图片| 亚洲小说欧美另类社区| 亚洲三级观看| 国内精品视频久久| 日韩亚洲精品在线| 一区视频在线看| 一区二区三区四区国产| 亚洲福利视频一区| 亚洲综合视频一区| 亚洲精品乱码久久久久| 午夜一级在线看亚洲| 亚洲国产成人tv| 国产欧美日韩亚洲| 亚洲人成在线观看网站高清| 国产一区二区三区久久精品| 亚洲免费激情| 亚洲电影免费在线观看| 亚洲在线免费| 一本色道久久88综合日韩精品 | 国产精品一区在线观看| 91久久精品国产91久久性色tv | 欧美一区二区三区的| 欧美成人免费全部观看天天性色| 欧美在线在线| 欧美日韩精品伦理作品在线免费观看| 老鸭窝亚洲一区二区三区| 国产精品av一区二区| 欧美v亚洲v综合ⅴ国产v| 国产欧美日韩不卡免费| 亚洲麻豆av| 亚洲国产一区二区三区高清| 欧美一区在线看| 亚洲免费一区二区| 欧美喷水视频| 欧美国产欧美亚洲国产日韩mv天天看完整| 国产精品资源| 一区二区三区国产盗摄| 日韩视频免费观看| 麻豆精品一区二区av白丝在线| 久久久99精品免费观看不卡| 国产精品久久久999| 亚洲乱码国产乱码精品精天堂 | 一区二区三区四区在线| 另类激情亚洲| 乱人伦精品视频在线观看| 国产日韩欧美一区二区| 国产精品99久久不卡二区 | 亚洲欧美综合国产精品一区| 欧美日韩国产成人在线| 欧美激情亚洲精品| 在线观看国产成人av片| 久久国产精品黑丝| 欧美在线亚洲综合一区| 国产精品日韩精品欧美精品| 一区二区三区精品| 一区二区三区久久网| 欧美激情导航| 亚洲国产欧美国产综合一区| 亚洲精品一区在线| 伊人久久久大香线蕉综合直播| 先锋影音一区二区三区| 欧美伊久线香蕉线新在线| 国产精品美女久久| 久久久久久亚洲精品不卡4k岛国| 国产欧亚日韩视频| 亚欧成人在线| 久久久五月婷婷| 国产日韩精品一区二区三区在线| 亚洲免费网址| 久久国产精彩视频| 国产一区清纯| 久久久久se| 欧美成人影音| 国产精品国产馆在线真实露脸| 一本一本久久a久久精品综合妖精| 亚洲天堂视频在线观看| 国产精品theporn| 亚洲一区二区三区在线看| 午夜免费日韩视频| 国产欧美一区二区精品婷婷 | 亚洲欧洲99久久| 国产精品亚洲精品| 欧美亚洲尤物久久| 欧美一区二区视频97| 免费观看在线综合| 亚洲高清视频中文字幕| 99在线观看免费视频精品观看| 欧美日韩国产一区二区三区地区| 一本色道婷婷久久欧美| 午夜在线a亚洲v天堂网2018| 国产亚洲免费的视频看| 久久久久国内| 亚洲国产一二三| 亚洲一区二区三区乱码aⅴ蜜桃女| 国产精品久久久久9999高清| 性欧美1819sex性高清| 免费成人黄色片| 日韩一级黄色大片| 国产精品v欧美精品v日韩| 亚洲欧美激情在线视频| 久久综合久久综合久久| 亚洲欧洲精品一区| 欧美视频一区在线| 欧美一二三视频| 欧美国产精品中文字幕| 国产精品99久久久久久久久久久久 | 精品动漫3d一区二区三区| 牛牛精品成人免费视频| 99视频在线精品国自产拍免费观看| 亚洲欧美在线x视频| 黄色影院成人| 欧美片第一页| 欧美一区二区在线免费播放| 欧美国产先锋| 欧美大成色www永久网站婷| 久热国产精品视频| 一本大道久久a久久精品综合| 国产精品美腿一区在线看| 久久精品系列| 亚洲久久成人| 久久精品国产欧美亚洲人人爽| 亚洲国产视频直播| 国产精品qvod| 久久久综合免费视频| 亚洲国产精品国自产拍av秋霞| 亚洲欧美日韩在线不卡| 在线观看日韩av电影| 欧美三区美女| 欧美一级在线播放| 亚洲欧洲在线视频| 久久精品成人一区二区三区| 亚洲毛片一区二区| 国产视频欧美| 欧美日本一道本| 久久久99国产精品免费| 99精品视频网| 欧美成ee人免费视频| 亚洲欧美日韩一区二区在线| 亚洲国产视频a| 国产精品超碰97尤物18| 麻豆精品视频在线观看| 亚洲欧美国产日韩中文字幕| 亚洲人成网在线播放| 亚洲精品国产欧美| 国产日韩欧美高清| 欧美日本在线看| 久久久精品五月天| 亚洲视频综合在线| 欧美成人福利视频| 亚洲砖区区免费| 亚洲精品乱码久久久久久| 国内成+人亚洲+欧美+综合在线| 欧美日韩激情小视频| 久久夜色精品亚洲噜噜国产mv| 一本一本大道香蕉久在线精品| 欧美午夜精品久久久久免费视| 久久在线视频在线| 午夜精品成人在线| 一区二区av在线| 亚洲国产精品一区二区久| 欧美一区二区视频在线观看| 99热这里只有精品8| 在线播放中文字幕一区| 国产欧美精品xxxx另类| 欧美日韩亚洲一区二区| 蜜乳av另类精品一区二区| 欧美中文在线字幕| 亚洲一本大道在线| 亚洲免费大片| 亚洲人成在线播放|