winmain()函数是的参数是由谁传给它的?
winmain()的第一个参数就是 hinstance,是一个实例句柄,
这个参数是谁传给它的呢?一般我们调用一个函数时,必须将实参传给它,但是程序执行时,会首先执行winmain()函数,但是参数是谁传给它的呢?第三个参数:lpcmdline,这个我还能理解,因为调用应用程序时,这个参数本身就是一个字符串。
比如:
prog.exe a1.txt
则参数就是 "a1.txt",可以传给 winmain()函数。但是应用程序的实例句柄,是如何传给winmain()的呢?

解决方案 »

  1.   

    对,这个东西也可以叫Shell。属于操作系统里的东西。如果用过Linux里的Bash之类的shell就容易理解了。
      

  2.   

    创建进程的父进程传递进来的。例如CreateProcess可以传递参数给子进程。
      

  3.   

    由操作系统,详见《Windows 核心编程》
      

  4.   

    不是由操作系统来管理的,操作系统才不管这些事呢!是由编译器调用WinMainCRTStartup函数,在这个函数中调用WinMain函数时传给它的,比如hInstance,它是通过调用GetModuleHandle获取的,比如lpcmdline,也是通过调用GetCommandLine获取的.
    总之一句话,WinMain虽然是入口函数,但是这个入口函数仅仅是C++的入口函数,却并不是应用程序的入口函数,对于WinMain来说,应用程序的入口函数是WinMainCRTStartup
      

  5.   

    WinMainCRTStartup最后也是链接到exe里的,是exe真正的入口处,只是成机器码了,函数名啥的也无意义了
      

  6.   


    WinMainCRTStartup:
    这个函数在哪里,我为何找不到呢?
      

  7.   

    WinMainCRTStartup: 
    这个函数在哪里,我为何找不到呢?
    ===========
    这个函数是CRT里面的,编译器在链接时会自己将这个函数链接到最后文件中的。
      

  8.   

    VC目录下有crt源码,可以翻看下