为什么新建一个MFC工程,比如TEST,VC在Bulid的时候总是要生成TEST.EXE呢?
TEST工程里有好多.cpp呢,为什么不生成别的呢?比如CTestView.EXE。
我猜一定是那个#include <Afxwin.h>把Winmain包含进去了,可是,它是沿着哪条路径包含的呢?
还有,那个_tWinMain()是在
“C:\Program Files\Microsoft Visual Studio\VC98\MFC\SRC\APPMODUL.CPP”里面的,我觉得应该是把这个文件包含进去了吧,可是系统的Include变量里却没有这个路径呀?我都想了N天了,还是不行!求各位老师指点一下吧!谢谢了!不够的话,可以再加分的!
我知道要有所得,就一定要付出的,这一点我明白!还请各位不吝赐教!5555555~~

解决方案 »

  1.   

    为什么新建一个MFC工程,比如TEST,VC在Bulid的时候总是要生成TEST.EXE呢?
    TEST工程里有好多.cpp呢,为什么不生成别的呢?比如CTestView.EXE。
    ===================================
    这就是你使用APP Wizard的结果,它默认就是这个名字。你可以在Project Setting种修改名字!
      

  2.   

    项目 -->属性-->linker(连接)-->output file(输出文件)-->输入你所想要输出的文件( CTestView.exe)
      

  3.   

    我猜一定是那个#include <Afxwin.h>把Winmain包含进去了,可是,它是沿着哪条路径包含的呢?
    还有,那个_tWinMain()是在
    “C:\Program Files\Microsoft Visual Studio\VC98\MFC\SRC\APPMODUL.CPP”里面的,我觉得应该是把这个文件包含进去了吧,可是系统的Include变量里却没有这个路径呀?
    ========================================
    Afxwin.h包含了很多其他的头文件,其中最终一定包含了Winmain函数声明的文件!
      

  4.   

    Winmain函数是在WinBase.h文件中定义的!
      

  5.   

    Winmain函数是在WinBase.h文件中定义的!
    -------------------------------------
    谢谢你,第一个问题我明白了。我刚才看了一下,Winbase.h的确有WinMain的声明,可是_tWinMain的定义好像是在APPMODUL.CPP中啊,我每次跟踪都是到这个文件,我想这个应该就是MFC程序的入口点了。我知道_tWinMain实际上是一个WinMain的定义宏,那么_tWinMain在APPMODUL.CPP中就应该是WinMain的重载了吧?(我也看到了AfxWinMain,就是书上说的那个MFC“主函数”)我想,为什么每次都会到这个文件?路径又是什么呢?是不是include进去的?
      

  6.   

    不对!!!!!!!
    用MFC写的程序,入口被App类封装了!它是用多线程技术启动你的程序的,也就是说,MFC启动一个进程,然后在里面只启动一个线程(就是你的程序)。它怎么封装的我还没学到!多线程太难了
      

  7.   

    生成什么样的EXE是由开发者决定的,在PROJECTS---SETTINGS下就可以设置,
    默认是生成与工程名一样的可执行文件。
    MFC其实是以Winmain为入口的,在SDK时代,可以看到显现的Winmain,但是
    在VC时代,Winmain已经被封装,看不到了
      

  8.   

    可以在工程中直接指定生成的exe文件名 output file
      

  9.   

    楼主,强烈建议你看一下这一篇文章,
    http://www.vchelp.net/itbookreview/view_paper.asp?paper_id=1339
    从你的提问可以看得你也是初学者,我也有过这样的疑问,你所提的问题只是VC++封装,或是消息映射的一部分,其实还有许多这样藏头露尾的所谓的封装,比一些控件的实现等,事实上这一篇文件不是回答你的提问的,而是MFC入门的文件,很好,这是第一篇,还有五篇,你可以按照这几篇文章讲解简化的MFC程序和一个API程序进行比较,多想一些,慢慢的你就明白是怎么回事了,不仅能帮你解决你的问题,还能帮你更深地了解MFC的运行机制.
    仅是个人愚见,仅供参考!!
      

  10.   

    不对!!!!!!!
    用MFC写的程序,入口被App类封装了!它是用多线程技术启动你的程序的,也就是说,MFC启动一个进程,然后在里面只启动一个线程(就是你的程序)。它怎么封装的我还没学到!多线程太难了
    -------------------------------------------------
    不是吧?你的意思是说,winmain在CWinApp内部?
    可是我在CTESTApp::CTESTApp()处设了断点,我发现它的确是在完成了CTESTApp theApp;的构造之后才进入_tWinMain的亚?
      

  11.   

    CTESTApp theApp;因为是全局变量,所以在入口函数_tWinMain前初始化。
    MFC程序_tWinMain函数(APPMODUL.CPP)由连接器直接添加到程序代码中。
    _tWinMain调用AfxWinMain在(WINMAIN.CPP)。