http://hi.baidu.com/icexile/blog/item/2c698efdfd653a1009244dd8.html
WTL提供的CString类在ATL中也提供了相同的类后变得有点鸡肋,并且使用WTL::CString类后,经常会出现标题所示的编译错误(不能从“WTL::CString”转换为“ATL::CSimpleString &”的问题)。
实际上ATL不仅在<atlstr.h>中提供了CString类,还在<atltypes.h>中提供了CPoint、CSize和CRect类,因此,WTL中提供的同名类变得可有可无。我认为还是用ATL中的类会好一些,毕竟WTL没有文档嘛。
因此,应该在工程头文件中包含任何WTL头文件前定义以下两行:
// 一定要注意下面的顺序
#define _WTL_NO_CSTRING
#define _WTL_NO_WTYPES
典型的声明顺序应该这样:
#include <atlbase.h>
#include <

本文介绍了在ATL与WTL中使用CString时遇到的转换错误问题,特别是从"WTL::CString"到"ATL::CSimpleString &"的转换错误。建议使用ATL中的CString类,因为WTL的文档不足。通过在包含WTL头文件前定义 `_WTL_NO_CSTRING` 和 `_WTL_NO_WTYPES`,可以避免此类问题。并提供了一个获取控件文字的代码示例。

2768

被折叠的 条评论
为什么被折叠?



