VC6.0设定UNICODE编译环境

摘要:
VC++6.0支持Unicode编程,但默认的是ANSI,所以开发人员只需要稍微改变一下编写代码的习惯便可以轻松编写支持UNICODE的应用程序。]对话框,在C/C++标签对话框的“预处理程序定义”中去除_MBCS,加上_UNICODE,UNICODE。.在没有定义UNICODE和_UNICODE前,所有函数和类型都默认使用ANSI的版本;在定义了UNICODE和_UNICODE之后,所有的MFC类和WindowsAPI都变成了宽字节版本了。

VC++ 6.0支持Unicode编程,但默认的是ANSI,所以开发人员只需要稍微改变一下编写代码的习惯便可以轻松编写支持UNICODE的应用程序。
1. 安装完成后:需要把VC98\MFC\LIB下的MFC42U*.*手动拷贝到对应的安装目录下
2. 为工程添加UNICODE和_UNICODE预处理选项:打开[工程]->[设置…]对话框,在C/C++标签对话框的“预处理程序定义”中去除_MBCS,加上_UNICODE,UNICODE。(注意中间用逗号隔开).在没有定义UNICODE和_UNICODE前,所有函数和类型都默认使用ANSI的版本;在定义了UNICODE和_UNICODE之后,所有的MFC类和Windows API都变成了宽字节版本了。
3. 设置程序入口点:因为MFC应用程序有针对Unicode专用的程序入口点,我们要设置entry point。否则就会出现连接错误。设置entry point的方法是:打开[工程]->[设置…]对话框,在Link页的Output类别的Entry Point里填上wWinMainCRTStartup。
4. 使用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编码意识。
5. 修改字符串运算问题  一些字符串操作函数需要获取字符串的字符数(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开头的通用字符串操作函数。

免责声明:文章转载自《VC6.0设定UNICODE编译环境》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇c# 扩展方法奇思妙用变态篇二:封装 if/else、swith/case 及 whileMSIL实用指南-生成异常处理下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

IntelliJ IDEA 编译程序出现 非法字符 的 解决方法

IntelliJ IDEA 编译程序出现 非法字符 的 解决方法 idea报Error:(1, 21) java: 非法字符: 'ufffd' 的解决办法 韩风666 2020-04-30 21:53:56 1043 收藏 分类专栏: javaee报错 版权 方法1,直接去掉汉字或包名 方法2, 注意:经常不灵 点击该类,选择 utf-16转码,再u...

C++单元测试工具之CPPUnit使用

CppUnit[1]是Micheal Feathers由JUnit移植过来的一个在GNU LGPL条约下的并在sourcefogre网站上开源的C++单元测试框架。(转自百度) 本文是对cppunit的一个初步体验,将分别在windows 7和ubuntu 12上进行尝试 文章本着极端细致的原则,力求让每个第一次接触的人都能按照教程完整实现,同时文章也贴出...

liteos 从入门到放弃

这两天收到一份sdk,hisi 3516cv200 liteos的sdk 正好手头有硬件,就随便编译玩玩. 解压sdk. Hi3518E_SDK_V5.0.5.0 ll@ubuntu:~/work2016/liteos/Hi3518E_SDK_V5.0.5.0$ ls -lh total 32K drwxrwxr-x 4 ll ll 4.0K Oct 25...

Linux下C语言多文件的编译以及makefile的应用

1.关于编译和链接     一般来说,无论是C、C++,首先要把源文件编译成中间代码文件,在Windows下也就是.obj文件,UNIX下是.o文件,即Object File,这个动作叫做编译(compile)。然后再把大量的Object File合成执行文件,这个动作叫作链接(link)。         也就是源文件(.c 文件或者.cpp文件)首先会...

KEIL MDK 5.12帮你快速建工程模板的技巧

KEIL 5帮你快速建工程模板的技巧 本人使用keil mdk 5.12有一段时间了,发现keil mdk 5.12里面驱动库比较方便。这个新功能可以节省我们的时间,也可以让初学者能尽快上手和掌握这个芯片。大家以后既就可以很方便的建自己的工程模板了,再也不会为了找芯片的驱动库而烦恼。 今天外我来教大家来怎么使用这个建工程的利器吧。 首先是新建工程吧,如下图...

NDK下 将Platinum SDK 编译成so库 (android upnp)

Platinum UPnP SDK 是一个跨平台的C++库,利用该库,可以很容易就构建出DLNA/UPnP控制点(DLNA/UPnP Control Point)和DLNA/UPnP设备(DLNA/UPnP Device),其中包括有UPnP AV Media Server, Media Render & Control Point的例子。它可以在...