在 VC6.0 下设置 Unicode 编译环境

VC++ 6.0支持 Unicode 编程,但默认的是 ANSI,所以开发人员只需要稍微改变一下编写代码的习惯便可以轻松编写支持 UNICODE 的应用程序。


使用 VC++ 6.0 进行 Unicode 编程主要做以下几项工作:


1、为工程添加 UNICODE 和 _UNICODE 预处理选项。
  具体步骤:打开 [工程]->[设置…] 对话框,在 C/C++ 标签对话框的“Preprocessor”中去除 _MBCS,加上 _UNICODE,UNICODE。(注意中间用逗号隔开).
  在没有定义 UNICODE 和 _UNICOD E前,所有函数和类型都默认使用 ANSI 的版本;在定义了 UNICODE 和 _UNICODE 之后,所有的 MFC类 和 Windows API 都变成了宽字节版本了。


2、设置程序入口点
  因为 MFC 应用程序有针对 Unicode 专用的程序入口点,我们要设置entry point。否则就会出现连接错误。
     设置 entry point 的方法是:打开 [工程]->[设置…] 对话框,在 Link 页的 Output 类别的 Entry-point Symbol 里填上 wWinMainCRTStartup


3、使用 ANSI/Unicode 通用数据类型
  微软提供了一些ANSI和Unicode兼容的通用数据类型,我们最常用的数据类型有 _T ,TCHAR,LPTSTR,LPCTSTR。
   顺便说一下,LPCTSTR 和 const TCHAR* 是完全等同的。其中L表示 long 指针,这是为了兼容 Windows 3.1 等 16 位操作系统遗留下来的,在 Win32 中以及其它的32位操作系统中,long 指针和 near 指针及 far 修饰符都是为了兼容的作用,没有实际意义。P(pointer)表示这是一个指针;C (const)表示是一个常量;T(_T宏)表示兼容 ANSI 和 Unicode,STR(string)表示这个变量是一个字符串。综上可以看出, 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)。您应该注意该问题并仔细分析字符串操作函数,以确定能够得到正确的结果。
ANSI 操作函数以 str 开头,如 strcpy(),strcat(),strlen();
Unicode 操作函数以 wcs 开头,如 wcscpy,wcscpy(),wcslen();
ANSI/Unicode 操作函数以 _tcs 开头 _tcscpy (C运行期库);
ANSI/Unicode 操作函数以 lstr 开头 lstrcpy (Windows函数);
考虑ANSI和Unicode的兼容,我们需要使用以_tcs开头或lstr开头的通用字符串操作函数。



注:本文转载自:http://ipedo.blog.sohu.com/88199794.html


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值