必须在vc安装时安装unicode的支持
一
1.在Project->Setting->Link->Output->Entry-point symbol加入一个Unicode的入口(Entry)"wWinMainCRTStartup";或者直接在CPP文件中加入"#pragma comment(linker, "/entry:/"wWinMainCRTStartup/" ")"就无需在Setting中做設置了。
2.还需要在Project->Setting->C/C++->Preprocessor difinitions中把,_MBCS去掉,它为多字节的,非UNICODE字节集的,然后加入UNICODE与_UNICODE(这是为C准备的)。
完成上面三步的设置后,在Debug模式下就可以Compile和Run了,注意在Release是无法compile的。这是为什么呢?因为Debug模式分做一些预編译与初始化方面的设置的,接着下面的步骤,就可以才Debug与Release模下运行了。
3.在Project->Build->Configurations中添加"UnicodeDebug"与"UnicodeRelease"这时你无论选择那一个模式都可以运行。
二
VC++6.0中编写Unicode编码的应用程序 VC++ 6.0支持Unicode编程,但默认的是ANSI,所以开发人员只需要稍微改变一下编写代码的习惯便可以轻松编写支持UNICODE的应用程序。 1、为工程添加UNICODE和_UNICODE预处理选项。 具体步骤:打开[工程]->[设置…]对话框,如图1所示,在C/C++标签对话框的“预处理程序定义”中去除_MBCS,加上_UNICODE,UNICODE。(注意中间用逗号隔开)改动后如图2:
在没有定义UNICODE和_UNICODE时,所有函数和类型都默认使用ANSI的版本;在定义了UNICODE和_UNICODE之后,所有的MFC类和Windows API都变成了宽字节版本了。 因为MFC应用程序有针对Unicode专用的程序入口点,我们要设置entry point。否则就会出现连接错误。
3、使用ANSI/Unicode通用数据类型 微软提供了一些ANSI和Unicode兼容的通用数据类型,我们最常用的数据类型有_T ,TCHAR,LPTSTR,LPCTSTR。 TCHAR* szText=_T(“Hello!”); TCHAR szText[]=_T(“I Love You”); LPCTSTR lpszText=_T(“大家好!”);使用函数中的参数最好也要有变化,比如: MessageBox(_T(“你好”)); 其实,在上面的语句中,即使您不加_T宏,MessageBox函数也会自动把“你好”字符串进行强制转换。但我还是推荐您使用_T宏,以表示您有Unicode编码意识。 4、修改字符串运算问题 一些字符串操作函数需要获取字符串的字符数(sizeof(szBuffer)/sizeof(TCHAR)),而另一些函数可能需要获取字符串的字节数sizeof(szBuffer)。您应该注意该问题并仔细分析字符串操作函数,以确定能够得到正确的结果。 六、举个Unicode编程的例子 第一步: void CUnicodeDlg::OnButton1() { TCHAR* str1=_T("ANSI和UNICODE编码试验"); m_disp=str1; UpdateData(FALSE); }添加静态文本框IDC_DISP,使用ClassWizard给该控件添加CString类型变量m_disp。使用默认ANSI编码环境编译该工程,生成Unicode.exe。 第二步:
弹出的对话框单击“是”,重新启动计算机使设置生效。 第三步:
参考网址 http://www.vckbase.com/document/viewdoc/?id=1733 |