MSDN:Unicode 编程摘要 GET RSS
2007年1月12日06:54星期五  [MIME开发日志]

from MSDN网站

http://msdn.microsoft.com......ode_programming_summary.asp

若要利用 MFC 和 C 运行时对 Unicode 的支持,需要:

定义 _UNICODE。
在生成程序之前定义 _UNICODE 符号。

指定入口点。
在项目的属性页对话框中“链接器”文件夹的“输出”页中,设置 wWinMainCRTStartup 的入口点符号。

使用“可移植的”运行时函数和类型。
为 Unicode 字符串处理使用正确的 C 运行时函数。可以使用 wcs 函数族,但您可能更喜欢使用完全“可移植的”(支持国际化的)_TCHAR 宏。这些宏都以 _tcs 为前缀;它们一对一地替换 str 函数族。在“运行时库参考”的国际化节中对这些函数有详细介绍。有关更多信息,请参见 TCHAR.H 中的一般文本映射。

使用支持 Unicode 中描述的 _TCHAR 和相关的可移植数据类型。

正确地处理字符串。
Visual C++ 编译器将编码的字符串解释为

L"this is a literal string"
指出这是 Unicode 字符的字符串。可以对文字字符使用相同的前缀。一般使用 _T 宏对字符串进行编码,因此在 Unicode 下字符串编译为 Unicode 字符串,不使用 Unicode 时字符串编译为 ANSI 字符串(包括 MBCS)。例如,不使用:

pWnd->SetWindowText( "Hello" );
而使用:

pWnd->SetWindowText( _T("Hello") );
使用已定义的 _UNICODE,_T 将字符串翻译为以 L 为前缀的格式;否则 _T 将字符串翻译为不带 L 前缀的格式。

提示   _T 宏与 _TEXT 宏相同。
将字符串长度传递给函数时要小心。
一些函数需要获取字符串的字符数;另一些函数需要获取字符串的字节数。例如,如果已定义 _UNICODE,则下列对 CArchive 对象的调用无效(str 属于 CString):

archive.Write( str, str.GetLength( ) );    // invalid
在 Unicode 应用程序中,由于每个字符都是双字节宽,因此长度会给出字符数但不给出正确的字节数。所以必须使用:

archive.Write( str, str.GetLength( ) * sizeof( _TCHAR ) );    // valid
它指定要写入的正确字节数。

但是,MFC 成员函数是面向字符而非面向字节的,因此无需此额外的编码:

pDC->TextOut( str, str.GetLength( ) );
CDC::TextOut 采用字符数而非字节数。

总之,MFC 和运行时库对 Windows 2000 下的 Unicode 编程提供下列支持:

除数据库类成员函数外,所有 MFC(包括 CString)函数都支持 Unicode。CString 还提供 Unicode/ANSI 转换函数。
运行时库提供所有字符串处理函数的 Unicode 版本。(运行时库还提供适合 Unicode 或 MBCS 的“可移植”版本。这些版本是 _tcs 宏。)
TCHAR.H 提供可移植的数据类型以及翻译字符串和字符的 _T 宏。请参见 TCHAR.H 中的一般文本映射。
运行时库提供 main 的宽字符版本。使用 wmain 使应用程序成为“Unicode 识别”。
请参见
支持 Unicode





字体:
Permanant URI永久地址 http://www.anakv.com/Blog......cleid=a_20070112_145433
Trackback URI引用地址 http://www.anakv.com/Blog/tb.php?tb_id=1168584873
Posted by 宜勒图 | 评论(0) | 引用(0) | 阅读2372次
提示:
此文还没有评论。

称呼:    登陆   注册
   不注册,但记住我的信息
邮件:
(非必须)
评论: [UBB代码帮助]
粗体 斜体 下划线 链接 水平线 引用
验证码: 请输入你看见的数字
关闭UBB      提交时自动将内容复制到剪贴板

©2005-2008 anaku