WTL部分加入到MFC中
这篇文章介绍了如何 将WTL加入到MFC中, 但是却非完全加入。
因为WTL的atlctrls.h文件并没有加入到MFC,atrlctrls.h文件包含了WTL/ATL的大部分最有价值的控件,所以本文参考加以一般, 但标题却没有明确指出(所以很吸引我读完了本文),
- 在”stdafx.h”中增加
#define _WTL_NO_AUTOMATIC_NAMESPACE
避免WTL头文件 建立全局的WTL命名空间。
避免WTL的CRect, CDC与MFC的冲突。
2.
#include <atlbase.h>
#include <atlapp.h>
extern WTL::CAppModule _Module;
ATL/WTL代码可能使用全局的_Module变量, 所以必须声明一个
#include <atlwin.h>
我们在这里添加 是为了利用预编译头文件, 你也可以在使用时再添加。
3.
在main file里 theApp声明后边, 声明_Module(之前那个只是引用)
/////////////////////////////////////////////////////////////////////////////
// The one and only CMixedWindowApp object
CMixedWindowApp theApp;
WTL::CAppModule _Module; // add this line
4.
在InitInstance里初始化
BOOL CMixedWindowApp::InitInstance()
{
// Initialize ATL
_Module.Init(NULL, AfxGetInstanceHandle());
}
5.
添加ExitInstance, 在其中释放_Module.Term()
int CMixedWindowApp::ExitInstance()
{
_Module.Term();
return CWinApp::ExitInstance();
}
Make an hybrid window class
可能你想给一个static框加上一个滚动条。 并且使用WTL的滚动条和MFC的Cstatic, 但MFC没有这样的类。
- 做一个新类, 继承自Cstatic(或其他CWnd-derived类)
- 打开.h加入 WTL头文件
#include <atlscrl.h>
如果你没有使用预编译头文件, 你需要在这里,在其他头文件使用前加入atlwin.h
#include <atlwin.h>
- 引入Cwindow头文件
#include "Wnd2Window.h"
..........后面不完整,不继续看了, 如果有需要的自己去看吧^^