永发信息网

为什么mfc中从InitInstance()中进入程序

答案:3  悬赏:10  手机版
解决时间 2021-02-12 06:04
为什么mfc中从InitInstance()中进入程序
最佳答案
学过PE文件格式,你就明白,程序在进入WinMain之前要做很多事情,比如初始Dos头,分配函数表,初始化全局变量。之后才进入程序入口(WinMain)

MFC对WindowsAPI进行了封装。在用向导编译成的二进时代码,MFC编译器链接器把源文件编译成PE文件格式存储在磁盘上。

程序执行的时候,从PE文件头开始执行,在进入Winmain函数之前,进行一系列的必备的初始化。

MFC对这一系列的过程进行了封装。提供给编程人员的第一个裸露程序入口就是CWinApp的InitInstance(),其实程序的入口依然是WinMain()函数。

大家都知道,每个程序都有拥有一个进程,每个进程至少有一个线程就是主线程。CWinThread类是MFC用来封装线程的,这个主线程就是在WinMain函数中创建的,包括UI线程和工作者线程。因此每个MFC程序至少使用一个CWinThread派生类。被MFC程序员熟知的CWinApp应用类就从这里派生。

InitInstance是CWinThread的一个虚函数,InitInstance就是“初始化实例”的意思,可见,它是在实例创建时首先被调用的。应用程序总要重载这个虚函数,进行系统设置,创建运行环境。例如,主窗口一定要在InitInstance()中创建,因为该函数退出后就进入该线程的消息循环。

MFC执行流程。

_tWinMain(WinMain的别名,用define替换的)-》AfxWinMain->初始化线程,调用InitInstance初始化窗口,调用Run函数进入消息循环。

希望对你有用。
全部回答
哈,小伙子精神不错啊... 是这样的..... mfc的基于于对话框的应用程序与文档的应用程序用的不是同一个run. 你上面的理解是文档类型的. 到于对话框,请看ctestapp::initinstance()中的代码,其中有以下几句: ctestdlg dlg; m_pmainwnd = &dlg; int nresponse = dlg.domodal(); 大致是这样吧.这个domodal内部有为模态对话框重建一个消息循环,模态对话框用得就是这样消息循环.你可以去百度下大牛们对模态对话框消息循环的分析. 当对话框退出的时候,initintance总是会返回false,而这在winmain里的有大致这样的代码: if(!initinstance())//函数不是这样直接写,但最终是调用这个函数 { xxxxxxxxxx goto failture; } 这个goto语句直接会将cwinapp::run直接跳过.从而直接结束winmain. 明白?给点分吧,打字不容易啊,兄弟
谁说mfc中从InitInstance()中进入程序? 你应该能找到mfc程序中都有一个全局变量theApp,最先执行的是这个theApp的构造函数。 至于怎么进入的InitInstance(),是因为mfc的这个InitInstance()是一个虚函数,mfc程序有一个_tWinMain,就相当于C程序的main,它又调用了AfxWinMain,在AfxWinMain中调用了InitInstance(),由于InitInstance()是虚函数,对于InitInstance()的调用就调用到你的程序中的InitInstance()了
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
我想买一个烤箱,可是有人说烤箱做的东西发硬
齐都工商所综合服务厅在什么地方啊,我要过去
5173发布的订单怎么撤销啊
密云哪家洗浴比较好。
有没有像“沾沾自喜”类似的词语
20周,老觉得肚子里面一跳一跳的,是宝宝在动
韩式烤肉这个地址在什么地方,我要处理点事
从化碧水湾温泉度假村
出口人对信用证的审核要点是什么
egg指什么
小保姆方便面的图片
有五个营养级的一条食物链,第五营养级的生物,
手机恢复出厂设置卡死在开机界面,,只有一个
中国移动兴业路指定专营店地址在哪,我要去那
brand building manager什么意思?
推荐资讯
有关优选法错误的是()
喀什西路/校园路(路口)我想知道这个在什么地
在优酷下载的视频怎么吧背景音乐给去掉?
中学生用的地球仪买哪种好
里美的护肤品怎么样呀
长痘了,朋友的妹妹介绍了一个禾新颜的护肤品
吉利帝豪4s店如何全额贷款买车,包括购置税,
龙砂山庄我想知道这个在什么地方
我玩魔兽争霸时,qq一响,屏幕就会自动切出去
单选题人肉搜索虽然可以在最短时间内揭露事件
玫琳凯形象工作室地址好找么,我有些事要过去
易购大卖场停车场怎么去啊,我要去那办事
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?