Windows程序的生命周期

这篇博客探讨了Windows程序从启动到结束的生命周期,包括进程创建、内存分配、C Runtime库的作用、WinMain函数的执行、窗口类注册、消息处理机制以及窗口关闭和程序退出的过程。通过对Windows程序生命周期的详细解释,帮助读者深入理解程序运行的基本原理。
摘要由CSDN通过智能技术生成

    几年前曾经看过侯俊杰老师的《MFC深入浅出》,觉得这本书对MFC的讲解比较深入,由浅入深,对C++的基础、Windows程序的基础、MFC的原理等讲的都比较好。通过几年的工作学习,我对MFC的理解也有了进一步的提高,想再去看一遍这本书,最近看了第一章,就想写点东西来增加自己的理解,也顺便开始我的博客之旅。我的第一篇文章,想谈谈Windows程序的开始和结束。

    每当我们双击桌面上的应用程序图标时,Windows的Shell程序(我的理解可能类似于Windows的任务管理器之类,检测用户的动作)就会创建一个进程,就像我们在程序中显式调用CreateProcess一样,但是这时程序并没有真正运行起来。首先,系统会为创建的进程分配内存空间,一般32位的机器上都是4GB,用于加载程序的数据、代码以及相关的依赖库文件。在这4G的地址空间中,有2G的空间是进程独有的,即每个进程的2G空间不相干扰、互不能访问,另外2G空间用于加载Windows内核程序,这些是每个进程共享的。在这之后,系统会调用C Runtime库中的Startup代码,并在其中调用应用程序的main或者WinMain函数,我的理解应该是进程运行环境准备好后,C Runtime的Startup代码会创建一个主线程,这样main或WinMain函数就会运行在主线程中了。

    每一个Win32程序都有一个WinMain函数,这相当于控制台程序的main函数,是我们自己写的代码的入口点,虽然它并不是程序被调用的第一个函数。进入WinMain函数后程序需要调用RegisterClass注册一个窗口类,这应该是告诉系统窗口的名称、类型、大小等属性,是描述Win32程序的类,而显示出来的窗口只是这个类的一个实例。注册窗口时必须要

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值