MFC之MFC的初始化过程

限时加码!20+主流AI编程工具免费用 购周边加赠Coding Plan Lite,Claude Code、Cursor等即刻畅享,学习进阶更高效! 阅读详情

当你创建好一个MFC程序时,你可能要去找程序的入口,然后各种编辑,各种搞。若你是第一次接触MFC,则会发现怎么也找不到WinMain函数或main函数,一个程序不可能没有程序入口的,这就是接下来要讲的MFC初始化过程。

MFC将WinMain函数封装起来了,还做了一系列的初始化过程。

MFC的组成(MFC的初始化过程):
1.必须有一个CwinApp的派生类
2.必须用派生类在全局定义一个对象theApp
3.在派生类中必须重新InitInstance虚函数作为主函数
4.MFC程序就用CWinApp派生类中的InitInstance虚函数作为主函数,即程序入口。

下面来查看一下InitInstance()函数


第一步:找到类视图,若在界面上找不到,去视图中添加,在类视图中下面可看到InitInstance()函数,点击进入




第二步:整理一下InitInstance()函数中不必要的代码,留下图中的两行代码即可。显示出之前的对话框。

其中可看到,在此类中定义了一个CMFCAppApp类的全局对象theApp,对照前面说的要有一个派生类的全局对象。

想显示哪个对话框,就在InitInstance()函数中实例化一个对话框类函数,并用类成员函数DoModal()显示出来。

其中要知道MFC中一个对话框对应一个类,对话框的操作都是通过类对象操作。

其中,Domodal函数最终还是要调用EndDialog函数,返回值是点击的ID。

MFC六大核心机制之一:MFC程序的初始化流程 1,手动编写MFC 下面就是我们要手写MFC的代码, class CMyApp:public CWinApp { public: virtual BOOL InitInstance(); }; class CMainWnd:public CFrameWnd { public: CMainWnd(); }; CMyApp theApp; BOOL CMyApp::InitInstance() {... 阅读详情

相关推荐

MFC初始化过程

MFC应用程序不但具有一般的Win32程序的主要入口WinMain函数,还有一个CWinApp派生类的全局实例 theApp。 Mfc程序(EXE)的程序运行过程如下: 首先是全局构造 CObject构造函数à CCmdTarget àCWinThreadàCWinAppà theApp构造函数 然后进入WinMain函数 WinMainàAfxWinMainàAfxWinInitàtheApp.

solotony的专栏 1万+

MFC六大核心机制之一:MFC程序的初始化

很多做软件开发的人都有一种对事情刨根问底的精神,例如我们一直在用的MFC,很方便,不用学太多原理性的知识就可以做出各种窗口程序,但喜欢钻研的朋友肯定想知道,到底微软帮我们做了些什么,让我们在它的框架下可以简单的写程序。本文开始就跟大家分享一位同行前辈写的MFC核心机制分析(稍作整理),语言朴实易懂,在读完此深入浅析的剖析系列后,相信留给大家的是对MFC运行机制的深入理解。        MF

周小宇的专栏 836

MFC应用程序的初始化过程

  一个MFC应用程序的生命周期(一)程序的进入点        MFC作为Win32 API的一种封装,它的程序进入点自然是WinMain。但是,这个WinMain也被封装起来,用户是看不到的,只是在编译器进行连接时会被自动连接。        下面我们就来寻找一下MFC程序被隐藏了的WinMain。搜索MFC的源文件,可以发现MFC的WinMain定义在 appmodul.

lesky的专栏 5823

探索MFC读书笔记——MFC初始化

MFC初始化过程: 一、首先看一下基本的类图: 1、从图中可以看出,最原始的基类是CObject;而常见的MFC类CWinThread、CDocument、CWnd都是从CObject的子类CCmdTraget派生而来,CWinApp是从CWinThread派生而来, CFrameWnd、CView从CWnd派生而来。 2、注意CWinApp是一个线程类(作为独立线程运行),有自己的...

xiaoxiaoyusheng2012的专栏 902

VS2010/MFC 文档视图类项目:初始化和清理文档和视图

转自https://msdn.microsoft.com/zh-cn/library/cc485606%28v=vs.71%29.aspx 使用下列原则初始化文档和视图并对其进行事后清理: MFC 框架初始化文档和视图;您初始化向文档和视图添加的任何数据。框架在文档和视图关闭时进行清理;您必须解除分配从这些文档和视图的成员函数中在堆上分配的任何内存。 注意   请记住,整个应用程序的

明月清风 精进不止 1183

MFC 程序初始化

CWinApp为应用程序类 MFC 中的主应用程序类封装用于 Windows 操作系统的应用程序的初始化、运行和终止。基于框架生成的应用程序必须有且仅有一个从 CWinApp 派生的类的对象。在创建窗口之前先构造该对象。 CWinApp 是从 CWinThread 派生的,后者表示可能具有一个或多个线程的应用程序的主执行线程。在最新版本的 MFC 中,InitInstance、Run、

cytj129的专栏 1151

深入浅出MFCMFC的程序的初始化过程

对于一个标准的MFC的程序,弃去细枝末节,其主要的初始化流程主要如下: 首先是基本类的内容的声明与实现: 这些通常由VS内部自动生成,包含了一些MFC类的基本结构: //MFC.h #pragma once //最基础的基本类型的定义 #define BOOL int #define TRUE 1 #define FALSE 0 #include using namespace std;

qq_30168505的博客 4018

MFC中通用控件初始化过程

摘要:介绍了MFC中通用控件初始化过程.关键字:通用控件 初始化 comctl32.dll这是我在阅读某源代码时无意中想到的一个问题,进行了一番研究,现在把结果贴出来,希望对感兴趣的人能有所帮助。InitCommonControls和InitCommonControlsEx从Win95开始,Windows提供了一些新的Win32控件,称为通用控件. 如:Toolbar,Status b

Buddy 's Workstation 2358

MFC六大关键技术之初始化过程

MFC六大关键技术之初始化过程 我并不认为MFC减轻了程序员们的负担,MFC出现的目的虽然似乎是为了让程序员不用懂得太多就可以进行视窗编程,但本人在MFC里徘徊了很久很久(因为那时没有书本详细介绍MFC的原理),毫无收获。可能朋友们会说,怎么一定要了解MFC的具体呢,“黑箱”作业不行吗?这不是微软的初衷吗?   不行!!!如果这样,我宁愿永远不选择MFC!在学电脑之前,本人学习的东西大

SimKon的专栏 657

MFC程序的初始化过程

  MFC程序是一个Windows程序,它的内部也有窗口注册操作,窗口产生操作,消息循环操作和窗口函数。 MFC中CwinApp类的两个虚函数InitApplication和InitInstance,前者负责“每一个程序只做一次”的操作,后者负责“每一个例程都得做一次”的操作。通常,系统会(并且有能力)为我们注册一些标准的窗口类(当然也准备了一些标准的窗口函数)。程序设计者在自己的CmyW

armman的专栏 1192

技术资料-【剖析MFC六大关键技术之初始化过程

我并不认为MFC减轻了程序员们的负担,MFC出现的目的虽然似乎是为了让程序员不用懂得太多就可以进行视窗编程,但本人在MFC里徘徊了很久很久(因为那时没有书本详细介绍MFC的原理),毫无收获。可能朋友们会说,怎么一定要了解MFC的具体呢,“黑箱”作业不行吗?这不是微软的初衷吗?  不行!!!如果这样,我宁愿永远不选择MFC!在学电脑之前,本人学习的东西大都与艺术不无关系,小学时参加过全国书画比赛获银

Gary·hou专栏 1406

MFC六大关键技术之(一)—— 初始化过程

题外话:我并不认为MFC减轻了程序员们的负担,MFC出现的目的虽然似乎是为了让程序员不用懂得太多就可以进行视窗编程,但本人在MFC里徘徊了很久很久(因为那时没有书本详细介绍MFC的原理),毫无收获。可能朋友们会说,怎么一定要了解MFC的具体呢,“黑箱”作业不行吗?这不是微软的初衷吗?不行!!!如果这样,我宁愿永远不选择MFC!在学电脑之前,本人学习的东西大都与艺术不无关系,小学时参加过全国书画比赛

sunjd2001的专栏 3498

MFC初始化过程

  设计一个简单完整MFC程序,产生一个窗口。当然这不能让AppWizard自动生成。我们可以在Win32 Application工程下面这样写:#include class MyApp : public CWinApp{public: BOOL InitInstance()                         //②程序入点 {  CFrameWnd *Frame=new CFr

armman的专栏 3488

MFC程序初始化过程

//MFC.h #define BOOL int #define TRUE 1 #define FALSE 0 #include <iostream> using namespace std; class CObject { public: CObject(){}; ~CObject(){}; }; class CCmdTarget ...

weixin_33908217的博客 148

MFC 解密(1) 窗口初始化过程

解密 MFC 窗体 创建过程 以及windows消息机制在MFC中的体现

小胖子吃辣肉面的专栏 2918

MFC 控件初始化过程

  之前为了学习MFC下浏览器的用法,参考博文:http://www.cnblogs.com/firefly_liu/archive/2009/05/18/1459514.html,虽然按照作者的方法实现了浏览器的功能,但是作者在ON_SIZE消息中调整浏览器控件大小的方法出现断言错误,主要错误如下:   在进入到下面函数段时,SetWindowPos()出现错误。 void CNetHttp...

weixin_30363817的博客 481
上一篇: MFC之初识MFC
下一篇: MFC之消息映射机制
XGamerR
博客等级 码龄10年 26粉丝 79原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值