探索WTL和MFC混合使用的问题,兼容VC2010编译器
2011-05-07 18:30
447 查看
MFC和WTL写界面都有优缺点.MFC编程快速,WTL灵活.目前工作是为了实现即时通信的UI,但是一些特效用MFC实现是相当困难的,例如对话框针对控件的分隔条.但是WTL则处理的相当好,但是两者一般是不能混合编程的.
探索几天,公布试验结果,整理下预编译包含文件的顺序
注意:
1.必须用ATL的CString,否则,不管你怎么折腾,MFC/WTL/ATL总是出现两两冲突,因为ATL/MFC/WTL都有CString的实现,且MFC的CString没有命名空间,再者afx.h中先包含了ATL,然后包含了MFC;
2.code时用ATL空间的对象时,必须用ATL::空间名,因为我取消了ATL的自动命名空间.
3.在C**App theApp;后要换行写WTL::CAppModule _Module;否则你用WTL模板对象的时候会中断,因为WTL程序模块对象初始化时对界面线程临界锁进行了创建等动作.
开发环境VC2010+VS2010SP1+WTL8.1
希望我的探索,能给一线编程的朋友带来惊喜
!
探索几天,公布试验结果,整理下预编译包含文件的顺序
注意:
1.必须用ATL的CString,否则,不管你怎么折腾,MFC/WTL/ATL总是出现两两冲突,因为ATL/MFC/WTL都有CString的实现,且MFC的CString没有命名空间,再者afx.h中先包含了ATL,然后包含了MFC;
2.code时用ATL空间的对象时,必须用ATL::空间名,因为我取消了ATL的自动命名空间.
3.在C**App theApp;后要换行写WTL::CAppModule _Module;否则你用WTL模板对象的时候会中断,因为WTL程序模块对象初始化时对界面线程临界锁进行了创建等动作.
开发环境VC2010+VS2010SP1+WTL8.1
// stdafx.h : 标准系统包含文件的包含文件, // 或是经常使用但不常更改的 // 特定于项目的包含文件 #pragma once #ifndef _SECURE_ATL #define _SECURE_ATL 1 #endif #ifndef VC_EXTRALEAN #define VC_EXTRALEAN // 从 Windows 头中排除极少使用的资料 #endif #include "targetver.h" #define _ATL_NO_AUTOMATIC_NAMESPACE //不自动用ATL空间 #define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // 某些 CString 构造函数将是显式的 // 关闭 MFC 对某些常见但经常可放心忽略的警告消息的隐藏 #define _AFX_ALL_WARNINGS #include <afxwin.h> // MFC 核心组件和标准组件 #include <afxext.h> // MFC 扩展 #define _WTL_NO_AUTOMATIC_NAMESPACE #define _CSTRING_NS WTL #define _WTL_USE_CSTRING #define _SECURE_ATL 1 #include <atlbase.h> #include <atlstr.h> #include <atlapp.h> #include <atlframe.h> #include <atlctrls.h> #include <atlddx.h> #include <atlwin.h> #include <atlmisc.h> extern WTL::CAppModule _Module; #include <atlwin.h> #include <atlctrls.h> #include <afxdisp.h> // MFC 自动化类 #ifndef _AFX_NO_OLE_SUPPORT #include <afxdtctl.h> // MFC 对 Internet Explorer 4 公共控件的支持 #endif #ifndef _AFX_NO_AFXCMN_SUPPORT #include <afxcmn.h> // MFC 对 Windows 公共控件的支持 #endif // _AFX_NO_AFXCMN_SUPPORT #include <afxcontrolbars.h> // 功能区和控件条的 MFC 支持
希望我的探索,能给一线编程的朋友带来惊喜
!
相关文章推荐
- VC++控制台程序使用Mysql,以及和MFC程序的兼容问题,工具VS2010ultimate
- [C] 跨平台使用TCHAR——让Linux等平台也支持tchar.h,解决跨平台时的格式控制字符问题,多国语言的同时显示(兼容vc/gcc/bcb,支持Windows/Linux/Mac)
- vc2010使用CMFCEditBrowseCtrl控件导致程序退出崩溃解决
- MessageBox ,CFileDialog 和 fopen 之VC 和MFC 混合使用
- 关于VC、MFC和ACCESS的一些使用问题
- 【vc++ 2010问题】使用visual c++/studio 2010编译程序后,出现_CrtIsValidHeapPointer(pUserData)错误
- 一个CTaskDialog类使用的例子 MFC VC 2010
- [C] 跨平台使用TCHAR——让Linux等平台也支持tchar.h,解决跨平台时的格式控制字符问题,多国语言的同时显示(兼容vc/gcc/bcb,支持Windows/Linux/Mac)
- [C] c99int(让VC等编译器自动兼容C99的整数类型)V1.02。源码托管到github、添加CMake编译配置文件、使用doxygen规范注释
- docablepane 可停靠窗口在使用过程中的问题小结 vc mfc
- 这是我学习COM遇到的几个基本问题其解决 黄森堂(vcmfc)著 1.我用ATL生成一个组件对象,我在COM中使用IDD_IEncrypt,这个在哪里写义,是啥?GUID? 答:IDD_IEncry
- ACE 与MFC 混合使用 内存泄露问题
- WTL 8.0 在VC 2008 下使用问题
- 软件crash后生成dmp,可用VC编译器和Windbg查看 简单使用问题
- 在vc中的MFC regular dll中使用ado的导入问题
- Windows下WTL与MFC使用Invalidate()闪烁问题解决
- docablepane 可停靠窗口在使用过程中的问题小结 vc mfc
- VC/MFC 使用jsoncpp步骤及注意的问题
- XP 安装后使用vc2010,进入类视图后,点击一个函数,后vs报错退出问题
- [C] 跨平台使用TCHAR——让Linux等平台也支持tchar.h,解决跨平台时的格式控制字符问题,多国语言的同时显示(兼容vc/gcc/bcb,支持Windows/Linux/Mac)