Question
Pourquoi ne puis-je pas inclure Windows.H dans les projets AFX (MFC)?
La solution
En règle générale, le code d'application MFC comprend afx.h
ou afxwin.h
(Ce dernier comprend l'ancien). Deux premières lignes de windows.h
sommes
#ifndef _WINDOWS_
#define _WINDOWS_
ce qui signifie que _WINDOWS_
devient défini si cet en-tête est inclus.Afx.h
comprend afxver_.h
Et cet en-tête comprend afxv_w32.h
qui contient le code suivant:
#ifdef _WINDOWS_
#error WINDOWS.H already included. MFC apps must not #include <windows.h>
#endif
...
#include <windows.h>
Donc, si vous incluez windows.h
Avant les en-têtes MFC, vous obtiendrez cette erreur générée en temps de compilation et, comme vous pouvez le voir, si vous incluez afxwin.h
Vous n'avez pas besoin d'inclure windows.h
vous-même - il sera déjà inclus par afxv_w32.h
.
Autres conseils
Parce que dans MFC, vous n'êtes pas censé l'utiliser directement. Afair vous devez inclure AFX.H à la place, qui à son tour inclut indirectement Windows.h de la bonne façon.