除了使用App Wizard创建MFC应用程序之外,如何获得MFC支持?

时间:2012-05-08 06:41:13

标签: c++ visual-studio-2008 visual-c++ mfc

我知道当我们使用App Wizard在VC ++中创建MFC应用程序时,向导会自动将所需的库添加到项目中。

我想手动创建一个MFC应用程序。怎么做?

2 个答案:

答案 0 :(得分:4)

创建新的MFC应用程序时,您将在预编译的头文件中找到此代码:

#include <afxwin.h>         // MFC core and standard components
#include <afxext.h>         // MFC extensions

这是如何包含MFC头文件。即使您尝试创建新的Win32控制台应用程序并要求向导包含MFC支持,您将再次在预编译的标头中找到这些行:

#include <afx.h>
#include <afxwin.h>         // MFC core and standard components
#include <afxext.h>         // MFC extensions

因此,如果您想创建一个仅以某种方式使用MFC类的控制台应用程序,那么只需创建一个新的空项目,转到其属性并在常规中更改使用MFC < / strong>从使用标准Windows库在静态库中使用MFC 。然后你只需要包含这些标题就可以了。 ;)

示例:

#include <iostream>
#include <afx.h>
#include <afxwin.h>         // MFC core and standard components
#include <afxext.h>         // MFC extensions

int main()
{
    CByteArray a;
    a.Add(7);
    std::cout << (int)a[0];
}

答案 1 :(得分:4)

你可以手动创建一个MFC应用程序,有很多依赖和烦恼。但这样做很有趣。这是一个小教程。

创建以下HelloMFC文件:

#include <afxwin.h>

  class HelloApplication : public CWinApp
  {
  public:     
   virtual BOOL InitInstance();
  };

  HelloApplication HelloApp;

  class HelloWindow : public CFrameWnd
  {        
   CButton* m_pHelloButton;
  public:     
   HelloWindow();
  };


  BOOL HelloApplication::InitInstance()
  {        
   m_pMainWnd = new HelloWindow();       
   m_pMainWnd->ShowWindow(m_nCmdShow);      
   m_pMainWnd->UpdateWindow();      
   return TRUE;
  }


  HelloWindow::HelloWindow()
  {        
   Create(NULL,             
    "Hello World!",               
    WS_OVERLAPPEDWINDOW|WS_HSCROLL,                
    CRect(0,0,140,80));        
   m_pHelloButton = new CButton();
   m_pHelloButton->Create("Hello World!",WS_CHILD|WS_VISIBLE,CRect(20,20,120,40),this,1);
  }

要在命令行编译它,需要链接所有库。您会注意到上面的代码中没有WinMain或main。 MFC在图书馆中埋葬了它的主要部分。它在appmodul.cpp中定义,您可以在MFC \ SRC目录中找到它。

无论如何,以下是编译上述代码的方法:

  

cl.exe hellomfc.cpp / EHsc / I atlmfc \ include / I包含/我   包括\ Winsdk atlmfc \ lib \ amd64 \ nafxcw.lib Libs \ libcmt.lib Libs \ Ke   rnel32.Lib Libs \ User32.Lib Libs \ Gdi32.Lib Libs \ MSImg32.Lib   Libs \ ComDlg32.Lib Lib s \ WinSpool.Lib Libs \ AdvAPI32.Lib   Libs \ Shell32.Lib Libs \ ComCtl32.Lib Libs \ ShLwApi .Lib Libs \ Uuid.lib   atlmfc \ lib \ amd64 \ atls.lib Libs \ Ole32.Lib Libs \ OleAut32.Lib Li   bs \ oldnames.lib Libs \ WS2_32.Lib Libs \ MsWSock.Lib Libs \ OleAcc.Lib   Libs \ comsuppw.l ib Libs \ GdiPlus.lib Libs \ Imm32.Lib Libs \ WinMM.Lib   Libs \ MsXml2.Lib Libs \ OleDlg.L ib Libs \ Urlmon.Lib   /链接/ SUBSYSTEM:WINDOWS

注意:上面显然取决于库文件的具体位置,但这些是必需的库。