MFC 关于WinMain

lucifer0328 2010-08-27 01:30:07
我知道WinMain是在appcore.cpp文件中。可是程序为什么会去这个文件中找WinMain函数呢?能详细最好。谢谢咯。
...全文
267 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
SuperLampard 2010-08-27
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 syhkgyxy2010 的回复:]
引用 6 楼 oldforest 的回复:
微软就是这么设计的

顶!
[/Quote]
lucifer0328 2010-08-27
  • 打赏
  • 举报
回复
哎。我还是不明白,程序里没有WinMain,为什么会把它和外部的WinMain联系起来呢?
cnsillycat 2010-08-27
  • 打赏
  • 举报
回复
人家这样设计的有什么办法。。。
zyj_604 2010-08-27
  • 打赏
  • 举报
回复
程序都有个入口地址
程序一旦被操作系统调用,会从程序的入口处开始执行,而微软在这个入口处,写了一个WinMain函数。WinMain又会调用其它函数
就像操作系统的BIOS一样,开机运行的第一个程序就是BIOS。然后BIOS启动操作系统
coolcoffee4051982 2010-08-27
  • 打赏
  • 举报
回复
真理一样的问题
fgsdcfgfsddfc 2010-08-27
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 oldforest 的回复:]
微软就是这么设计的
[/Quote]
顶!
oldforest 2010-08-27
  • 打赏
  • 举报
回复
微软就是这么设计的
bingxuebage 2010-08-27
  • 打赏
  • 举报
回复
编译器的问题!
zgl7903 2010-08-27
  • 打赏
  • 举报
回复
调试器里程序启动后暂停运行 看堆栈站顶
ljc0895 2010-08-27
  • 打赏
  • 举报
回复
用C++的,看不到
zgsdzhaolanxiang1 2010-08-27
  • 打赏
  • 举报
回复
这是 MFC的封装,,
lucifer0328 2010-08-27
  • 打赏
  • 举报
回复
咋没人回答?
yuanweihuayan 2010-08-27
  • 打赏
  • 举报
回复
建议你去看看孙鑫的《VC++深入详解》视频
向立天 2010-08-27
  • 打赏
  • 举报
回复
有兴趣的话你可以下载飞鸽传书的源码
他是基于win32的
不过自己模拟了类似MFC的实现
liangfei1983 2010-08-27
  • 打赏
  • 举报
回复
其实,WinMain()所谓的入口点函数,那只是相对于用户来说的,程序首先运行的时候,他会进入自己的入口点函数WinMainCRTStartup()这个入口点,在里面,初始化全局变量,设置环境,初始化堆栈,初始化多线程等等,等这些完成后,才会转入用户的WinMain()这个入口点函数!
oldforest 2010-08-27
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 dengzikun 的回复:]
在调用WinMain之前,要执行一段微软的初始化代码,WinMain返回后,还要执行一段微软的清理代码。
编译器中可以设置入口函数的名字。CWinApp是全局变量,和WinMain没有关系。
要想明白,跟踪程序。
[/Quote]
CWinApp是把WinMain和自己写的代码联系起来的关键,WinMain通过调用CWinApp中的成员函数启动我们写的代码。不过21楼说的有些不对,不是CWinApp的构造函数来调用_tWinMain() ,应用是由_tWinMain() 调用CWinApp中的函数
lucifer0328 2010-08-27
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 betty_ting 的回复:]
是这样的 :
当你用VC的向导创建一个MFC工程的时候,在APP应用类中,向导已经为我们定义了一个全局变量theApp,(LZ可以找下看),定义完这个theApp后,程序就要为该全局变量分配内存,就会调用theApp类的构造函数,由于你的程序的APP应用类的基类是CWinApp,在调用你的程序的APP应用类的构造函数之前,首先会进入CWinApp的构造函数,在CWinApp的构造函数调用了_tW……
[/Quote]

这不可能的吧。怎么可能会有其它函数能够调用WinMain函数?
dengzikun 2010-08-27
  • 打赏
  • 举报
回复
在调用WinMain之前,要执行一段微软的初始化代码,WinMain返回后,还要执行一段微软的清理代码。
编译器中可以设置入口函数的名字。CWinApp是全局变量,和WinMain没有关系。
要想明白,跟踪程序。
betty 2010-08-27
  • 打赏
  • 举报
回复
是这样的 :
当你用VC的向导创建一个MFC工程的时候,在APP应用类中,向导已经为我们定义了一个全局变量theApp,(LZ可以找下看),定义完这个theApp后,程序就要为该全局变量分配内存,就会调用theApp类的构造函数,由于你的程序的APP应用类的基类是CWinApp,在调用你的程序的APP应用类的构造函数之前,首先会进入CWinApp的构造函数,在CWinApp的构造函数调用了_tWinMain() (_tWinMain() 就是 WinMain(),由一个define定义了的 )接着在_tWinMain() 中调用了 AfxWinMain(),这些都是底层封装好的函数。
genghao 2010-08-27
  • 打赏
  • 举报
回复
这个孙鑫知道
加载更多回复(7)

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧