mfc学习笔记之如何自己动手实现最简单的mfc程序

    在刚开始学完c++基本语法之后,发现要用c++写一个窗口应用程序必须与操作系统结合起来,于是自然而然的选择了从mfc入手,但是通过新建的mfc程序发现太过于臃肿,不知道如何下手,因此从网上查阅资料发现可以自己动手使用mfc库实现一个最简单的mfc程序。

  1. 由于mfc只是对win32API进行了大量的封装,因此可以通过修改win32项目来创建mfc工程


2. 工程名起名为FirstMFC,然后下一步选择windows应用程序,然后点击完成

3. 创建完成后发现主cpp文件已经为我们自动生成了win32创建窗口的代码,因为要用mfc实现,所以只需保留头文件,删掉其余的代码

FirstMFC.cpp内只剩下如下代码

// FirstMFC.cpp : 定义应用程序的入口点。
//

#include "stdafx.h"
#include "FirstMFC.h"

4.由于我们要使用MFC库,因此需要在stdafx头文件里包含afxwin.h  而afxwin.h内已经包含windows.h,因此可以直接将stdafx.h内的#include <windows.h>替换成<afxwin.h>。

5. 右键点击工程名,选择属性,在弹出对话框中MFC使用这一项选择在静态库中使用MFC,然后选择应用确定。

6. 因为mfc程序需要至少包含一个应用程序类和窗口框架类,因此我们需要在FirstMFC.cpp定义一个CFrameWnd和CWinApp的子类,并为CWinApp的子类创建一个全局的实

    例化对象,并在CwinApp的子类中重载InitInstance函数创建窗口,代码如下:

class CMyFrameWnd : public CFrameWnd
{

};

class CMyWinApp : public CWinApp
{
	virtual BOOL InitInstance();
};

CMyWinApp myApp;


InitInstance函数中创建窗口代码如下<pre name="code" class="cpp">BOOL CMyWinApp::InitInstance()
{
	CMyFrameWnd * pFrame = new CMyFrameWnd();
	pFrame->Create(NULL,"FirstMFC");
	m_pMainWnd = pFrame;
	pFrame->ShowWindow(SW_SHOW);
	pFrame->UpdateWindow();
	return TRUE;
}
从代码可以看出,InitInstance主要完成的工作就是窗口的创建过程,查阅csdn可以发现

CFrameWnd::Create

BOOL Create( LPCTSTR lpszClassName,

LPCTSTR lpszWindowName,

DWORD dwStyle = WS_OVERLAPPEDWINDOW,

const RECT& rect = rectDefault,

CWnd* pParentWnd = NULL,

LPCTSTR lpszMenuName = NULL,

DWORD dwExStyle = 0,

CCreateContext* pContext = NULL );

create函数的第一个参数为类名,可以置空,在创建的过程中mfc会自己重新为它赋值,第二个参数为要创建的窗口的名称,后面的参数固定参数,无须赋值






 至此,第一个MFC程序创建完毕,只定义了两个类,重写了一个类成员函数,不像新建一个MFC工程那样生成一大堆的冗余代码,便于我们分析mfc程序的整个执行流程。 


  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值