关于ATL中的字符转换宏

原创 2006年05月31日 09:44:00

ATL提供了一些字符串转换宏,必要时它们在前面描述的各种字符类型之间进行转换。当编译选项使得源

字符类型与目标字符类型相同时,这些宏并不执行转换,事实上什么也没干。

宏的名字使用了各种字符数据类型的缩写:
T表示指向Win32 TCHAR字符数据类型的指针---LPTSTR参数
W表示指向Unicode wchar_t字符数据类型的指针---LPWSTR参数
A表示指向Win32 TCHAR字符数据类型的指针---LPSTR参数
OLE表示指向Win32 TCHAR字符数据类型的指针---LPOLESTR参数
C表示C/C++中的const修饰符

所有宏的名字使用"<源类型缩写>2<目标类型缩写>"的形式;例如,A2W宏把一个LPSTR转换成一个LPWSTR。

当宏的名字中出现C时,那么在它后面的类型缩写前面加上const修饰符;例如,宏T2COLE把LPTSTR转换成

LPCOLESTR。
宏的真正行为依赖于我们定义的预处理器符号,下面列出了ATL字符串转换宏:

   字符集预处理器符号
----------------------------------------------------------------------
 定义的预处理器符号  T成为  OLE成为 
----------------------------------------------------------------------
 None                            A           W
 _UNICODE                W          W
 OLE2ANSI                  A           A   
 _UNICODE和OLE2ANSI  W  A
----------------------------------------------------------------------


   ATL字符串转换宏
------------------------------------------------------------------------------------
 A2BSTR  A2W  OLE2CW  T2COLE  W2CA  
 A2COLE  A2WBSTR  OLE2T  T2CW  W2COLE
 A2CT  OLE2A  OLE2W  T2OLE  W2CT
 A2CW  OLE2BSTR T2A  T2W  W2OLE
 A2OLE  OLE2CA  T2BSTR  W2A  W2T
 A2T  OLE2CT  T2CA  W2BSTR
------------------------------------------------------------------------------------

所有的宏接受一个指向源字符集中字符串的指针作为参数。每个宏的行为像一个函数调用,它们会返回

一个指向目标字符中字符串的指针。当源字符集和目标字符集相同时,宏只是把指定的参数作为目标返

回。
转换宏使用了局部变量。我们必须在使用转换宏的函数开始处指定宏USES_CONVERSION(只需一次),以便

分配这些变量。

ATL字符串转换宏

有比MultiByteToWideChar和WideCharToMultiByte更简单的字符串转换宏,你相信吗? 头文件 d:/program files/microsoft visual ...
  • earbao
  • earbao
  • 2013年09月15日 00:58
  • 5150

ATL字符串转换宏

有比MultiByteToWideChar和WideCharToMultiByte更简单的字符串转换宏,你相信吗? 头文件 d:/program files/microsoft visual ...
  • u011135902
  • u011135902
  • 2016年07月20日 14:21
  • 780

ATL字符串转换宏

有比MultiByteToWideChar和WideCharToMultiByte更简单的字符串转换宏,你相信吗? 头文件 d:/program files/microsoft visual ...
  • u011135902
  • u011135902
  • 2016年07月20日 14:21
  • 780

ATL字符串转换宏

有比MultiByteToWideChar和WideCharToMultiByte更简单的字符串转换宏,你相信吗? 头文件 d:/program files/microsoft visual ...
  • earbao
  • earbao
  • 2013年09月15日 00:58
  • 5150

COM接口实现:IFACEMETHODIMP 与 STDMETHODIMP 的区别与注意点

 IFACEMETHODIMP 与 STDMETHODIMP 都是Visual C++的宏,专门用于Windows编程,作为COM接口函数实现的定义与声明的前缀,用法是相同的。以下是 IFACE...
  • Sunshine40
  • Sunshine40
  • 2014年05月27日 13:42
  • 1162

C++ STL,ATL,WTL之间的联系和区别

STL即 Standard Template Library (标准模板库) STL是惠普实验室开发的一系列软件的统称。它是由Alexander Stepanov、Meng Lee和Davi...
  • xdrt81y
  • xdrt81y
  • 2013年12月05日 16:09
  • 11289

VS2010 ATL服务程序编写全攻略(一) - 建立ATL服务

网上有很多关于编写ATL服务程序的代码和文章,但多数仍使用Visual C++ 6.0的ATL服务程序框架。对于XP系统,Visual C++ 6.0提供的框架能够正常工作,但对于Vista、Wind...
  • sonsie007
  • sonsie007
  • 2013年04月22日 15:06
  • 7270

设置VS2010和IE8 调试ATL控件

VS2008设置篇:     设置VS2008 通过IE8 调试ATL的ActiveX控件的步骤如下: (1)       设置项目属性 通过菜单项 “项目—》你的项目属性”如下图: (2...
  • lianfuguo
  • lianfuguo
  • 2014年07月31日 23:51
  • 994

ATL字符串转换宏

有比MultiByteToWideChar和WideCharToMultiByte更简单的字符串转换宏,你相信吗? 头文件 d:/program files/microsoft visual stu...
  • az44yao
  • az44yao
  • 2015年05月23日 07:25
  • 880

ATL字符串转换宏

有比MultiByteToWideChar和WideCharToMultiByte更简单的字符串转换宏,你相信吗? 头文件 d:/program files/microsoft visual ...
  • bytxl
  • bytxl
  • 2015年06月08日 14:21
  • 432
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于ATL中的字符转换宏
举报原因:
原因补充:

(最多只允许输入30个字)