用VC6进行UNICODE编程
来源:互联网 发布:航空公司运营数据 编辑:程序博客网 时间:2024/05/08 13:09
用VC6进行UNICODE编程
最近试图将自己的程序编译成Unicode版本,费了不少力气,相关内容整理如下,适用于VC6,但VC7、VC8应该也差不多的(后者新建项目缺省即按Unicode编译)。
1. 添加 UNICODE 和 _UNICODE 预处理定义
位置:Project Settings -> C/C++ -> Preprocessor definitions
添加了这两个定义后,MFC的一些内置类型如 TCHAR、CString 都将转为支持宽字符类型(wchar_t)
2. 使用宽字符相关类型,如:
char -> TCHAR、char * -> LPTSTR、const char * -> LPCTSTR
3. 对字符串常量使用 _T() 宏
4. 替换C库中的中字符串操作函数,如 strlen -> _tcslen、strcmp -> _tcscmp 等
类似的还有C库中字符串与数字的转换函数,如 atoi -> _ttoi、itoa -> _itot 等
5. 将 Project Settings -> Link -> Output -> Entry Point 设为 wWinMainCRTSTartup
否则会有如下错误:
msvcrtd.lib(crtexew.obj) : error LNK2001: unresolved external symbol _WinMain@16
6. C++标准库中的string,有对应的宽字符版本wstring,两者均为basic_string的特化版本
可在StdAfx.h中:
#ifdef _UNICODE
#define tstring wstring
#else
#define tstring string
#endif
然后在代码中使用 tstring 即可,类似的还有 fstream/wfstream、ofstream/wofstream 等
7. 宽字符版本的英文字符仍可直接与整型值进行比较,如:
CString s = _T("ABC");
ASSERT(s[0] == 'A');
8. 对于仍需使用ANSI字符串的地方,如第三方类库的接口,仍可继续使用;如需进行Unicode字符串和ANSI字符串的互转换,可使用 MultiByteToWideChar 和 WideCharToMultiByte
- 用VC6进行UNICODE编程
- 用VC6进行UNICODE编程
- 用VC6进行UNICODE编程
- VC6--Unicode编程总结
- VC6--Unicode编程总结
- 如何在vc6中进行unicode编译
- 设置VC6.0支持Unicode编程环境
- vc6 unicode
- VC6 UNICODE
- VC中进行Unicode编程
- 使用C++进行Unicode编程
- 使用C++进行Unicode编程
- 使用C++进行Unicode 编程
- vc6用unicode 编码方式来编译程序
- vc6使用unicode
- vc6使用unicode
- vc6 unicode编码
- VC6使用UNICODE问题
- MyEclipse 的快捷键 大全
- ARMASM汇编伪指令
- (十一)十字街头 - 3
- Java中的Asc码与字符互相转化
- 堆和栈的区别、windows进程中的内存结构
- 用VC6进行UNICODE编程
- 转:动态修改webservice地址
- 3D向量类
- 汇编表达式和运算符
- 在MyEclipse中debug使用手册
- 从外部的js文件中获取ASPX页面的控件ClientID
- 搞笑故事一则。
- WebGL Now Available in WebKit Nightlies
- linux 命令