WTL部分加入到MFC中

这篇文章介绍了如何 将WTL加入到MFC中, 但是却非完全加入。
因为WTL的atlctrls.h文件并没有加入到MFC,atrlctrls.h文件包含了WTL/ATL的大部分最有价值的控件,所以本文参考加以一般, 但标题却没有明确指出(所以很吸引我读完了本文),
  1. 在”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没有这样的类。

  1. 做一个新类, 继承自Cstatic(或其他CWnd-derived类)
  2. 打开.h加入 WTL头文件
#include <atlscrl.h>

如果你没有使用预编译头文件, 你需要在这里,在其他头文件使用前加入atlwin.h

#include <atlwin.h>
  1. 引入Cwindow头文件
#include "Wnd2Window.h"
..........后面不完整,不继续看了, 如果有需要的自己去看吧^^

posted on 2011-04-08 08:25  oleeceo  阅读(1463)  评论(0)    收藏  举报

导航