• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 1514
  • Last Modified:

in ATL #include <afxinet.h> causes MFC apps must not #include <windows.h> error

In an ATL IEHelper project I need to use
CInternetSession session;
and hence to include
<afxinet.h>

but I receive
afxv_w32.h(14) : fatal error C1189: #error :  WINDOWS.H already included.  MFC apps must not #include <windows.h>

I already placed the string #include<afxinet.h> in all possible places,  but the error still occured.
Pls advise the workaround.
0
rolling_ball
Asked:
rolling_ball
1 Solution
 
AssafLavieCommented:
Well, it seems that you writing a non-MFC project + trying to use an MFC class.
If you do want to use MFC, you need to switch to an MFC based project. Either start a new one (the easiest way if you project is still pretty small), or make some changes in the project's infrastructure (Like changing the four exported functions and the DLLmain in case of an inproc-server).
0
 
yuxiliuCommented:
AssafLavie is right
0
 
tdubroffCommented:
Yes you could restart your project and select the support MFC button, however its not hard to 'hand code' this functionality yourself.  Follow the steps below and you should be on your way:

1) In stdafx.h, just below the line #define STRICT, type in the following:

    // for MFC support
    #include <afxwin.h>
    #include <afxdisp.h>
    // end for MFC

2) In your main .cpp file, where the DllMain() function resides as well as where _Module is defined, type in the following just below the BEGIN_OBJECT_MAP(ObjectMap), END_OBJECT_MAP() macro pair:

    class CYourApp : public CWinApp
    {
    public:
      virtual BOOL InitInstance();
      virtual int ExitInstance();
    };

    CYourApp theApp;

    BOOL CYourApp::InitInstance()
    {
      _Module.Init(ObjectMap, m_hInstance);
      return CWinApp::InitInstance();
    }

    int CYourApp::ExitInstance()
    {
      _Module.Term();
      return CWinApp::ExitInstance();
    }

3) In the same file, comment out the DllMain() function


That should do it.  Hope this helps.

-Ted
0
 
rolling_ballAuthor Commented:
Thanks people.
tdubrof - your answer is excellent, I've done all you said and it starts working :)).

Another related question: previously I tryed to make this project support MFC, in project settings I changed to support MFC as shared dll, and saved and restarted project but it was still not supporting MFC.

0
 
tdubroffCommented:
I found a Microsoft page that explains everything in more detail:
http://support.microsoft.com/support/kb/articles/Q173/9/74.ASP?LN=CAN&SD=gn&FR=0
0

Featured Post

How to Use the Help Bell

Need to boost the visibility of your question for solutions? Use the Experts Exchange Help Bell to confirm priority levels and contact subject-matter experts for question attention.  Check out this how-to article for more information.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now