混用ATL MFC WTL的问题-CString的冲突
MFC的定义是全局的,和ATL混用好像没啥问题,不过和WTL混在一起要出现CString的冲突,说是无法解析多个定义。
atlstr.h是这样定义的,也就是在混合MFC的情况下ATL里头的CString 的定义被取消掉了
#ifndef _AFX
typedef CAtlStringW CStringW;
typedef CAtlStringA CStringA;
typedef CAtlString CString;
#endif
afxstr.h是这样定义的
typedef ATL::CStringT< wchar_t, StrTraitMFC< wchar_t > > CStringW;
typedef ATL::CStringT< char, StrTraitMFC< char > > CStringA;
typedef ATL::CStringT< TCHAR, StrTraitMFC< TCHAR > > CString;
这两种CString肯定是一回事,不过为了顺利使用WTL,还是需要ATL名称空间里的ATL::CString,虽然可以使用ATL::CAtlString,WTL里面肯定不会认CAtlString
我在stdafx.h里头试图用#undef CString 去掉全局的MFC CString,没有成功, 用#undef _AFX 使用在ATL头文件之前定义一下,也没成功
问哈大家有啥子好办法?MFC可否被定义成名称空间namespace,不过试了下错误一大堆
atlstr.h是这样定义的,也就是在混合MFC的情况下ATL里头的CString 的定义被取消掉了
#ifndef _AFX
typedef CAtlStringW CStringW;
typedef CAtlStringA CStringA;
typedef CAtlString CString;
#endif
afxstr.h是这样定义的
typedef ATL::CStringT< wchar_t, StrTraitMFC< wchar_t > > CStringW;
typedef ATL::CStringT< char, StrTraitMFC< char > > CStringA;
typedef ATL::CStringT< TCHAR, StrTraitMFC< TCHAR > > CString;
这两种CString肯定是一回事,不过为了顺利使用WTL,还是需要ATL名称空间里的ATL::CString,虽然可以使用ATL::CAtlString,WTL里面肯定不会认CAtlString
我在stdafx.h里头试图用#undef CString 去掉全局的MFC CString,没有成功, 用#undef _AFX 使用在ATL头文件之前定义一下,也没成功
问哈大家有啥子好办法?MFC可否被定义成名称空间namespace,不过试了下错误一大堆
...全文
相关推荐
链接器错误,CString,ATL,MFC和您!
由于CStringT模板类和ATL与MFC问题导致的链接器错误
在非MFC程序中引用CString
CString在当今软件设计界里还是小有名气的,说它是MFC中使用的最多的类一点也不过,然而在使用sdk编windows程序的时候,确不能利用CString类,只能用sdk的运行时库,比如strlen,strcpy,strstr等等,本文讨论的是在非mfc程序中使用CString类的方法,算是个引子,如果有更好的实现方法,欢迎大家讨论。
通过PostMessage,SendMessage将CString发送和发布到Windows
一种将CString对象发送到当前进程中的Windows的可靠机制。
VS2010中MFC读写Excel
在VS2010中MFC实现对Excel表格的动态读、写、创建。其中包含详细的实现过程截图,简单易懂。
为MFC对话框程序添加菜单和菜单响应函数
使用MFC向导创建了一个基于对话框的程序,实现了为对话框添加菜单和菜单消息响应。


