windows.h和MFC

时间:2011-02-17 08:55:00

标签: c++ mfc afx

为什么我不能在afx(MFC)项目中包含windows.h?

3 个答案:

答案 0 :(得分:11)

通常,MFC应用程序代码包括afx.hafxwin.h(后者包括前者)。前两行windows.h

#ifndef _WINDOWS_
#define _WINDOWS_

表示如果包含此标头,则_WINDOWS_将被定义。 Afx.h包含afxver_.h,此标题包含afxv_w32.h,其中包含以下代码:

#ifdef _WINDOWS_
    #error WINDOWS.H already included. MFC apps must not #include <windows.h>
#endif
...
#include <windows.h>

因此,如果在MFC标头之前包含windows.h,则会在编译时生成此错误,如您所见,如果包含afxwin.h,则不需要包含windows.h {1}}你自己 - afxv_w32.h已经包含它。

答案 1 :(得分:2)

因为在MFC中你不应该直接使用它。 AFAIR你应该包括afx.h,反过来间接地包括windows.h。

答案 2 :(得分:0)

您可以包含windows.h;但您需要先包含 afx.h (或类似的)。如果出现错误:“MFC 应用程序不得#include ”;它是在包含 afx.h 之后包含类似 windows.h 的内容。

如果不确定它是如何被包含的,您可能需要开启“显示包含”。