Visual Studio2013怎么创建MFC窗体

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Visual Studio2013怎么创建MFC窗体相关的知识,希望对你有一定的参考价值。

  对于使用新版vs2013的朋友们来说这方面的资料着实少,下面介绍下最基本的用vs2013创建一个熟知的标准MFC窗体。

  方法/步骤

    启动程序后,选择“文件>新建”菜单。

    如图所示依次展开左边“已安装>模版>其他语言>Visual C++>MFC”,确认好文件保存路径和项目名后,就可以点击确定了。

    点击确定后,会弹出MFC的程序向导,依旧选择下一步。

    设置方式如图中所示,设置完成后,就可以点击下一步了。

    数据库支持无,继续点击下一步。

    如图中所示,选择后,继续下一步。

    这里默认,继续下一步。

    这里可以更改类名,默认,点击完成即可。

    完成之后,在“资源视图”,依次展开,双击后,就会看到窗体了。

    ”资源试图“,默认是关闭的,在这里可以显示出来。点击菜单栏上的“视图>其他窗口>资源视图”就可以了。

    启动刚刚建立的MFC工程,正常启动后,那么MFC窗体就建立完成了。

参考技术A 双击打开VS2013,进入起始页,在左侧开始处选择“新建项目”;或者选择菜单栏中“文件”,依次选择“新建”、“项目”。可以看到起始页还包括许多介绍性文章的链接,包括VS2013新增功能的介绍等。

选择新建项目后,在新建项目对话框中选择 模块-》Visual C++-》MFC-》MFC应用程序,并确定好存放路径和项目名称,点击“确定”。

进入应用程序向导,一开始会给出默认的项目配置,点击“下一步”即可。

选择“基于对话框”,MFC可以选择在静态库中使用,或者在共享DLL中使用。一般选择共享使用就行,静态库中使用会把所有用到的dll集成到exe文件中,最终生成的文件一般可以直接使用,但占用更大空间。

选择主框架样式,可以自由选择是否添加最小化框、最大化框。如果觉得没必要“关于”对话框也可以去掉,对话框标题一般不需要更改。

高级功能一般默认即可,但如果用不上“ActiveX控件”可以去掉勾选;如果需要涉及网络编程就把“windows 套接字”选上。不过没选上也不要紧,在程序中可以自己添加部分代码导入套接字。

最后是自动生成的两个类的头文件和源文件名称,可以修改基类,但一般不用改,默认完成就行。至此,一个基于对话框的MFC项目就创建好了。
参考技术B 直接新建一个MFC工程就可以了啊,
http://jingyan.baidu.com/article/84b4f565ca09f960f6da3221.html

为啥最小 MFC 项目在 Visual Studio 2013 上存在链接错误?

【中文标题】为啥最小 MFC 项目在 Visual Studio 2013 上存在链接错误?【英文标题】:Why a minimum MFC project has linking error on Visual Studio 2013?为什么最小 MFC 项目在 Visual Studio 2013 上存在链接错误? 【发布时间】:2013-11-17 11:41:29 【问题描述】:

我创建了一个 Win32 控制台应用程序来编写一个简单的 MFC 项目。

源码如下:

#include <afxwin.h>

class MyApp : public CWinApp

public:
    BOOL InitInstance();

    MyApp()
    
    
;

class MainWindow : public CFrameWnd

protected:
    int OnCreate(LPCREATESTRUCT lpCreateStruct);
    void OnClose();
    LRESULT OnTimer(WPARAM wParam, LPARAM lParam);

    // This line is causing the error
    DECLARE_MESSAGE_MAP()
;

BOOL MyApp::InitInstance()

    MainWindow* mainWindow = new MainWindow();

    m_pMainWnd = mainWindow;
    mainWindow->Create(NULL, L"Main Window");
    mainWindow->ShowWindow(m_nCmdShow);

    return TRUE;


MyApp myApp;

int MainWindow::OnCreate(LPCREATESTRUCT lpCreateStruct)

    SetTimer(1, 2000, NULL);
    return 0;


void MainWindow::OnClose()

    if (MessageBox(L"Close?", L"Close", MB_YESNO | MB_ICONQUESTION) == IDYES)
    
        KillTimer(1);
        CFrameWnd::OnClose();
    


LRESULT MainWindow::OnTimer(WPARAM wParam, LPARAM lParam)

    MessageBeep(MB_ICONQUESTION);
    return 0;

当我尝试编译时,出现以下错误:

错误 1 ​​错误 LNK2001:未解析的外部符号“受保护:虚拟结构 AFX_MSGMAP const * __thiscall MainWindow::GetMessageMap(void)const” (?GetMessageMap@MainWindow@@MBEPBUAFX_MSGMAP@@XZ) D:\Projects\MinimumMFC\MinimumMFC\最小MFC.obj 最小MFC

【问题讨论】:

在使用 MFC 创建对话框应用程序时,您是否可以选择: 1. 在共享 DLL 中使用 MFC? 这看起来不像一个 Win32 控制台 应用程序。考虑编辑您的问题以匹配您的问题。 【参考方案1】:

我忘了在 MainWindow 声明之后声明 BEGIN_MESSAGE_MAP:

BEGIN_MESSAGE_MAP(MainWindow, CFrameWnd)
    ON_WM_CREATE()
    ON_WM_CLOSE()
    ON_MESSAGE(WM_TIMER, OnTimer)
END_MESSAGE_MAP()

完整的源代码应该是:

#include <afxwin.h>

class MyApp : public CWinApp

public:
    BOOL InitInstance();

    MyApp()
    
    
;

class MainWindow : public CFrameWnd

protected:
    afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
    afx_msg void OnClose();
    afx_msg LRESULT OnTimer(WPARAM wParam, LPARAM lParam);

    DECLARE_MESSAGE_MAP()
;

BEGIN_MESSAGE_MAP(MainWindow, CFrameWnd)
    ON_WM_CREATE()
    ON_WM_CLOSE()
    ON_MESSAGE(WM_TIMER, OnTimer)
END_MESSAGE_MAP()

BOOL MyApp::InitInstance()

    MainWindow* mainWindow = new MainWindow();

    m_pMainWnd = mainWindow;
    mainWindow->Create(NULL, L"Main Window");
    mainWindow->ShowWindow(m_nCmdShow);

    return TRUE;


MyApp myApp;

int MainWindow::OnCreate(LPCREATESTRUCT lpCreateStruct)

    SetTimer(1, 2000, NULL);
    return 0;


void MainWindow::OnClose()

    if (MessageBox(L"Close?", L"Close", MB_YESNO | MB_ICONQUESTION) == IDYES)
    
        KillTimer(1);
        CFrameWnd::OnClose();
    


LRESULT MainWindow::OnTimer(WPARAM wParam, LPARAM lParam)

    MessageBeep(MB_ICONQUESTION);
    return 0;

【讨论】:

以上是关于Visual Studio2013怎么创建MFC窗体的主要内容,如果未能解决你的问题,请参考以下文章

用Microsoft Visual Studio 2019写MFC程序(Bresenham画直线为例)

MS Visual Studio 2013 MFC 应用程序:为消息/输出服务创建文本框

为啥最小 MFC 项目在 Visual Studio 2013 上存在链接错误?

错误无法在 Visual Studio 社区 2013 中打开文件“mfc80u.lib”

如何根据用户输入创建动态变化的对话框 Visual Studio 2010 (mfc)

为啥我的 Visual Studio 2013 项目需要 mfc100.dll?