最简单的MFC窗口和初始化过程

本文介绍如何使用MFC快速创建一个简易的Windows窗口程序。通过继承CFrameWnd和CWinApp类,仅需少量代码即可实现窗口的创建、显示及更新。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

vs2013 

1.生成一个win32程序,这里使用的工程名为Win32Project1.

2.项目属性,常规中,选择使用 静态MFC库

3.修改头文件include“windows.h”为 include<afxwin.h>

4.删除win32中的所有函数

5.编写如下代码

#include "stdafx.h"

#include "Win32Project1.h"


class CMyFrameWnd :public CFrameWnd
{


};
class CMyWinApp :public CWinApp
{
public:
virtual BOOL InitInstance();
};
CMyWinApp theapp;   //触发


BOOL CMyWinApp::InitInstance()
{
CMyFrameWnd *pFrame = new CMyFrameWnd();   //触发
pFrame->Create(NULL,_T("MFC"));    //注册窗口类,创建窗口
m_pMainWnd = pFrame;
pFrame->ShowWindow(SW_SHOW);  //显示窗口
pFrame->UpdateWindow();      //更新窗口
return TRUE;

}

编译运行,就得到了一个简单的窗口。 用C语言编写一个窗口,大致需要经过,

定义窗口风格,注册窗口类,显示窗口,派发消息,窗口过程处理消息几个步骤,一大堆代码才能最终建立一个简单窗口。

MFC 建立简单窗口的代码过程是极为简便的。那么,MFC是如何初始化这个一个窗口的呢?

首先,需要指出,一个窗口程序的诞生,无论是用MFC还是C,所经历的步骤是一样的。也就是说,都必须经过,定义窗口风格,注册窗口类,显示窗口,派发消息,窗口过程处理消息几个步骤。MFC把每次建立窗口都需要进行的重复过程隐藏和封装起来了,因而我们需要的干的事情变少了,但是工作总量并没有变,只不过其余的活被MFC库干掉了而已。那么,MFC,到底是如何进行封装,最后初始化成功的呢?

这里我们用到了两个类,CFrameWnd和CWinApp。MFC把应用程序流程(也就是每个应用程序建立都必须走的流程)封装在了CWinApp中,把窗口处理过程(比如说消息响应,判断)封装在了CFrameWnd中。所以用了这两个类,就包含了建立窗口的所有要素。

具体的来说,建立了CMyWinApp theapp; 就触发了 CwinApp 的构造函数,该构造函数负责把对象theapp地址传送给模块状态信息和线程状态信息的相应的成员变量,并给窗口建立时所需的一些变量都赋上了初值(虽然大部分都是NULL值,但是没关系,后边会在程序里重新赋值)。

在对象生成以后,程序会自动转向主函数(WinMain()),是编译的时候自动链接上去的,无需我们去写。在主函数中,首先获取对象地址。放到pApp和pThread中。

pApp->InitApplication( ) //初始化程序,可以重写

pApp->InitInstance( )   //已经重写了

会调用InitInstance函数。

这里重写了InitInstance函数中,*pFrame = new CMyFrameWnd();  触发了CMyFrameWnd 的构造函数。并得到了程序框架窗口指针。把它赋值给m_pMainWnd,程序主窗口指针,接着调用成员函数,完成窗口的定义,注册,显示工作。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值