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

use*_*312 4 c++ mfc visual-studio-2008 visual-c++

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

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

Lih*_*ihO 5

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

#include <afxwin.h>         // MFC core and standard components
#include <afxext.h>         // MFC extensions
Run Code Online (Sandbox Code Playgroud)

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

#include <afx.h>
#include <afxwin.h>         // MFC core and standard components
#include <afxext.h>         // MFC extensions
Run Code Online (Sandbox Code Playgroud)

所以,如果你想创建一个只以某种方式使用MFC类控制台应用程序,则只需创建一个新的空项目,打开属性和一般改变使用MFC的使用标准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];
}
Run Code Online (Sandbox Code Playgroud)

  • @BROY:这是一个很棒的社区,由愿意分享经验并乐于帮助您的人们组成。但是,当他们不知道您要解决的问题时,他们将无法为您提供帮助。 (3认同)

Snu*_*vie 5

你可以手动创建一个 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);
  }
Run Code Online (Sandbox Code Playgroud)

要在命令行编译它,需要链接所有库。您会注意到上面的代码中没有 WinMain 或 main。MFC 将其主要内容隐藏在库中。它定义在appmodul.cpp您可以在 MFC\SRC 目录中找到的位置。

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

cl.exe hellomfc.cpp /EHsc /I atlmfc\include /I Includes /I Includes\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 Libs\WinSpool.Lib Libs\AdvAPI32.Lib Libs\Shell32.Lib Libs\ComCtl32.Lib Libs\ShLwApi .Lib Libs\Uuid.lib atlmfc\lib\amd64\ 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 /link/SUBSYSTEM:WINDOWS

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