C++第一篇:从0开始创建一个MFC程序,就可以知道MFC是怎么回事了

郑鹏飞3年前C++1015

1、创建一个新的Win32项目:

image.png

image.png

2、添加头文件:stdafx.h

// stdafx.h : 标准系统包含文件的包含文件,
// 或是经常使用但不常更改的
// 特定于项目的包含文件

#pragma once

#ifndef VC_EXTRALEAN
#define VC_EXTRALEAN            // 从 Windows 头中排除极少使用的资料
#endif

#include "targetver.h"

#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS      // 某些 CString 构造函数将是显式的

// 关闭 MFC 对某些常见但经常可放心忽略的警告消息的隐藏
#define _AFX_ALL_WARNINGS

#include <afxwin.h>         // MFC 核心组件和标准组件
#include <afxext.h>         // MFC 扩展

#include <afxole.h>         // MFC OLE 类
#include <afxodlgs.h>       // MFC OLE 对话框类

#include <afxdisp.h>        // MFC 自动化类



#ifndef _AFX_NO_OLE_SUPPORT
#include <afxdtctl.h>           // MFC 对 Internet Explorer 4 公共控件的支持
#endif
#ifndef _AFX_NO_AFXCMN_SUPPORT
#include <afxcmn.h>             // MFC 对 Windows 公共控件的支持
#endif // _AFX_NO_AFXCMN_SUPPORT

#include <afxcontrolbars.h>     // 功能区和控件条的 MFC 支持



#include <afxrich.h>            // MFC Rich Edit 类






#ifdef _UNICODE
#if defined _M_IX86
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"")
#elif defined _M_X64
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df' language='*'\"")
#else
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
#endif
#endif

3、添加头文件:targetver.h

#pragma once

// 包括 SDKDDKVer.h 将定义最高版本的可用 Windows 平台。

// 如果要为以前的 Windows 平台生成应用程序,请包括 WinSDKVer.h,并将
// WIN32_WINNT 宏设置为要支持的平台,然后再包括 SDKDDKVer.h。

#include <SDKDDKVer.h>

4、类向导:添加一个窗口Frame:

image.png

不出意外的话,在类向导里:就能找到MFC类

image.png

由于没有添加资源,所以提示了:

image.png

做一个添加资源的动作,然后再次添加MFC类:

image.png

在MainFrm.cpp里,添加

CMainFrm::CMainFrm()
{
	Create(NULL, L"Hello ZhengPengfei.");
}

CMainFrm::~CMainFrm()
{
}

image.png

5、类向导:添加一个MFC类:CMyApp:CWinApp,用来启动程序

由于还不知道怎么直接创建Main函数用来启动,暂时只好用这个来启动。

image.png

6、把CMyApp的protected改为public

image.png

同样的,把CMainFrm里的protected也改为public

image.png

7、在MyApp.cpp里:增加 CMyApp theApp; 所有的一切都是从它开始的!

image.png

然后它就会开始执行 CMyApp::InitInstance();

接下来,咱们就在

BOOL CMyApp::InitInstance()
{

	CMainFrm * MainFrm = new CMainFrm;

	if (!MainFrm || !MainFrm->Create(NULL, L"Hello ZhengPengfei.")) //增加了这句后,可以不用在MainFrm.cpp里增加Create语句了。
	{
		delete MainFrm;
		return FALSE;
	}
	//MainFrm->Create(NULL, L"Hello ZhengPengfei.");
	MainFrm->ShowWindow(SW_SHOWNORMAL);
	MainFrm->UpdateWindow();
	m_pMainWnd = MainFrm;
	return TRUE;
}

8、把配置里的:配置属性->常规->MFC的使用:改为静态或共享

image.png

9、按F5或者点“本地Windows调试器”,恭喜!终于写了第一个可以运行的有窗口的C++ MFC程序!

image.png

image.png


我是郑鹏飞。 如果您觉得我的文章对您有帮助,可以点击站点上的 关于站点/支持和帮助
转载请注明 : 文章转载自不了阁-飞哥 blog.forbs.cn
本站文章除注明转载/出处外,均为本站原创或翻译。若要转载请务必注明出处,尊重他人劳动成果共创和谐网络环境。

相关文章

C++容易学习和编写、使用吗?C语言其实是一门非常非常简单的语言,简单到:它只需要你理解:“什么是C语言”,就足够了!

C++容易学习和编写、使用吗?C语言其实是一门非常非常简单的语言,简单到:它只需要你理解:“什么是C语言”,就足够了!

容易!非常容易!从实质上来说,C语言其实是一个非常非常简单的语言!我可以以C语言零基础的情况下,只需要两个月的时间,就可以用C++语言实现一个VxTerm!所以,我说它真的很简单,这个回答,应该是可以...

c++语言:超长文本字符串变量,在C++中以文本文件方式加入超长文本变量并且编译到软件文件中的方法

c++语言:超长文本字符串变量,在C++中以文本文件方式加入超长文本变量并且编译到软件文件中的方法

此模块为本人独自写出来的。在软件中有可能需要一大段超长文本,编译到软件中。普通的文本字符串,可以直接用char *s = "字符串...";实现,如果...

用C++写一个MFC程序(一):开始在窗口中添加一个按钮,并给它添加事件

用C++写一个MFC程序(一):开始在窗口中添加一个按钮,并给它添加事件

1、在MainFrm.h中定义一个按钮:2、在CMainFrm的OnCreate事件中把按钮摆出来:同时,在MainFrm.h头文件中字义一个ID_Button1运行程序,就可以看到按钮啦:接下来,要...

C++心得:CString 与 WPARAM的转换这么简单?直接把地址转换过去就可以了?

C++心得:CString 与 WPARAM的转换这么简单?直接把地址转换过去就可以了?

发送端: CString a; GetDlgItem(IDC_EDIT1)->GetWindowText(a); GetParent()->PostMessageW(...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。