我知道WinMain是在appcore.cpp文件中。可是程序为什么会去这个文件中找WinMain函数呢?能详细最好。谢谢咯。

解决方案 »

  1.   

    程序都有个入口地址
    程序一旦被操作系统调用,会从程序的入口处开始执行,而微软在这个入口处,写了一个WinMain函数。WinMain又会调用其它函数
    就像操作系统的BIOS一样,开机运行的第一个程序就是BIOS。然后BIOS启动操作系统
      

  2.   

    哎。我还是不明白,程序里没有WinMain,为什么会把它和外部的WinMain联系起来呢?
      

  3.   

    基于SDK的程序和控制台的程序都可以看得到winmain.MFC框架把winmain包含框架中,呈献给用户的是几个对象实例。你可直接在里面客制化即可。
      

  4.   

    基于SDK的程序和控制台的程序都可以看得到winmain.MFC框架把winmain包含框架中,呈献给用户的是几个对象实例。你可直接在里面客制化即可。
      

  5.   

    你看一下你的代码,你所写的应用程序对象不是从CWinApp继承来的吗,CWinApp就会把外部的WinMain和你的程序联系起来
      

  6.   


    顶! 
         好像在MFC中程序的入口函数是连接器连接上的, 所在的文件应该是appmodul 中有一个_tWinMain函数
        根据查找宏定义可以看到其实是WinMain。
       至于自习的追究的话, 应该就如同我顶的这一楼一样 没办法啊
      

  7.   

    没错
    MFC的程序都会有一个继承自CWinApp的类
    而这个类一定会实例化一个对象
    联系就在其中
      

  8.   

    CWinApp又是怎么和WinMain联系起来的呢?
      

  9.   

    是这样的 :
    当你用VC的向导创建一个MFC工程的时候,在APP应用类中,向导已经为我们定义了一个全局变量theApp,(LZ可以找下看),定义完这个theApp后,程序就要为该全局变量分配内存,就会调用theApp类的构造函数,由于你的程序的APP应用类的基类是CWinApp,在调用你的程序的APP应用类的构造函数之前,首先会进入CWinApp的构造函数,在CWinApp的构造函数调用了_tWinMain() (_tWinMain() 就是 WinMain(),由一个define定义了的 )接着在_tWinMain() 中调用了 AfxWinMain(),这些都是底层封装好的函数。
      

  10.   

    在调用WinMain之前,要执行一段微软的初始化代码,WinMain返回后,还要执行一段微软的清理代码。
    编译器中可以设置入口函数的名字。CWinApp是全局变量,和WinMain没有关系。
    要想明白,跟踪程序。
      

  11.   


    这不可能的吧。怎么可能会有其它函数能够调用WinMain函数?
      

  12.   

    CWinApp是把WinMain和自己写的代码联系起来的关键,WinMain通过调用CWinApp中的成员函数启动我们写的代码。不过21楼说的有些不对,不是CWinApp的构造函数来调用_tWinMain() ,应用是由_tWinMain() 调用CWinApp中的函数
      

  13.   

    其实,WinMain()所谓的入口点函数,那只是相对于用户来说的,程序首先运行的时候,他会进入自己的入口点函数WinMainCRTStartup()这个入口点,在里面,初始化全局变量,设置环境,初始化堆栈,初始化多线程等等,等这些完成后,才会转入用户的WinMain()这个入口点函数!
      

  14.   

    有兴趣的话你可以下载飞鸽传书的源码
    他是基于win32的
    不过自己模拟了类似MFC的实现