VC++学习第三章

本文深入解析MFC程序的内部结构,解释为何在创建MFC工程时找不到winmain函数,并阐述程序执行流程,揭示全局变量初始化与主程序的关系。同时,文章详细说明了MFC程序的独特之处,即每个程序只能由一个从cwinapp派生的应用程序类实例化,以及Afx前缀函数的作用与特点。

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

一、MFC程序的内部结构

在VS中,没有建立MFC程序的时候,我们在普通的cpp文件中写窗口类程序,要有一系列的步骤,比如要创建winmain函数,要创建窗口类,注册窗口类等等。但是在创建一个MFC的工程的时候,我们会发现找不到winmain函数了。

但是这样一来,我们就发现,一个MFC程序,我们不知道它是从什么地方开始执行的。

其实一个MFC的程序里面也是有WinMain函数的,它是在程序的链接的时候添加进来的。在MFC库文件中的APPMOUDLE.CPP这个文件中,就会找到相应的winmain函数。可以在这里设置断点,然后运行我们刚才建立的mfc程序,就会发现,程序会先跳转到这个函数。

在调试运行的时候,你可能会看见,程序一开始进来的可能并不是winmain函数,而是一些全局变量的构造函数,这是因为,在程序执行之前,编译器要为程序中所有的全局变量进行初始化,之后再执行主程序。也就是说,一些全局变量(静态变量)都是在主程序之前进行分配内存和初始化的。


每一个MFC程序都只能由一个从cwinapp中派生出来的应用程序类,每一个这样的应用程序类都只能够实例化一个对象。实例化这个应用程序的对象就能够代表整个应用程序。


如果程序当中带有Afx前缀的函数,都是程序的框架函数,作用域的范围是全局的,因此我们可以在任意一个类中使用他。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值