我知道当我们使用 App Wizard 在 VC++ 中创建 MFC 应用程序时,该向导会自动将所需的库添加到项目中。
我想手动创建一个 MFC 应用程序。怎么做?
我知道当我们使用 App Wizard 在 VC++ 中创建 MFC 应用程序时,该向导会自动将所需的库添加到项目中。
我想手动创建一个 MFC 应用程序。怎么做?
当您创建一个新的 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 类的控制台应用程序,那么只需创建一个新的空项目,转到它的属性,然后将Use of MFC从Use Standard Windows Libraries更改为Use MFC in a Static Library。然后你只需要包含这些标题就可以了。;)
例子:
#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];
}
您可以手动创建 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 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 库\MsXml2.Lib 库\OleDlg.Lib 库\Urlmon.Lib /link/SUBSYSTEM:WINDOWS
注意:以上显然取决于您的库文件的具体位置,但这些是必需的库。