3

App Wizard を使用して VC++ で MFC アプリケーションを作成すると、ウィザードは必要なライブラリをプロジェクトに自動的に追加します。

MFC アプリケーションを手動で作成したいと考えています。どうやってするか?

4

2 に答える 2

6

新しい 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 の使用]を [標準の 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];
}
于 2012-05-08T08:48:57.913 に答える
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);
  }

コマンドラインでこれをコンパイルするには、リンクする必要があるすべてのライブラリがあります。上記のコードには WinMain または main がないことに気付くでしょう。MFC はそのメインをライブラリに埋めました。これは、MFC\SRC ディレクトリ内で定義されappmodul.cppています。

とにかく、上記のコードをコンパイルする方法は次のとおりです。

cl.exe hellomfc.cpp /EHsc /I atlmfc\include /I includes /I includes\Winsdk atlmfc\lib\amd64\nafxcw.lib Libs\libcmt.lib Libs\Kernel32.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 /link/SUBSYSTEM:WINDOWS

注:上記は明らかにライブラリファイルの特定の場所に依存しますが、それらは必要なライブラリです。

于 2012-10-12T00:31:33.773 に答える