使用WTL的Wizard直接生成的工程,一般不能直接编译通过,需要做一些设置,简单描述如下:(基于VS2010)
1、缺少atlapp.h
在Properties==>C/C++ == > Include additional Directory 。增加WTL的路径,如..\..\WTL80
2、 添加1后编译会有一大堆的头文件冲突。
在stdafx.h中把<atlapp.h>修改为"atlapp.h"。
<atlwin.h> 改为 "atlwinex.h"
即把引用AtlMfc里的文件变为引用WTL80里的文件
3、CMenuHandle的TrackPopupMenuEx编译不过
不使用atlframe
a 把CMainFrame的基类由CFrameWindowImpl改为CWindowImpl
b 删掉PreTranslateMessage里的处理,直接return FALSE
c 消息处理里删掉CHAIN_MSG_MAP(CFrameWindowImpl<CMainFrame>)
d 全局的run函数里,修改wndMain.Create() 为 wndMain.Create(param1, param2,...) 这个地方需要传递Create的正确参数
4、编译找不到atlres.h
Properties ==> Resources ==>Additional Include Directories 追加 WTL目录。如..\..\WTL80
可以编译通过
atlframe因为头文件引用的问题,所以暂时通过上面的修改方法来编译通过的。如果有更好的方式,使atlframe可以使用,麻烦评论告诉我一下,谢谢啊。