在侯老师的书中第317页说当程序运行到:
#0067   pMainFrame->LoadFrame(IDR_MAINFRAME);时
MFC内部 CFrameWnd::Create
               |
        CWnd::CreateEx
               |
        ::CreateWindowEx
               |
         发送WM_CREATE消息
               |
        CMainFrame::OnCreate
我的问题是:当::CreateWindowEx函数发送WM_CREATE消息后,这时程序并没有进入消息循环,那么OnCreate函数是怎样被调用的?我在用VC++6.0进行跟踪时发现,确实是OnCreate函数被调用以后再进入消息循环的。后来发现MSDN上说,OnCreate函数是被Framework调用?什么叫被Framework调用,被Framework调用与消息循环分发消息有什么不用?

解决方案 »

  1.   

    Mackz 大人的及时出现
    问题豁然开朗..
      

  2.   

    至Mackz:
           请问什么是程序内部发送?我如何跟踪这个步骤?请你给出详细说明好吗?这个地方卡住我好几天了。
      

  3.   

    刚查了查...
    资料:
    //---------------------------
    消息分为:
    进队和不进队消息
    进队的消息被发送给消息队列,不今对的消息则发送给窗口过程。进队消息基本上是用户输入的结果,如WM_KEYDOWN、WM_CHAR、WM_TIMER、WM_PAINT、WM_QUIT等。
    不进队的消息来自调用特定的Windows函数,如WM_GREATE、WM_SIZE、WM_COMMAND等斑竹大人 太无敌了...
      

  4.   

    这是Windows程序内部运行的原理...
    要问原因
    请问盖次...
    -.-
      

  5.   

    听liuxiuk() 这样一讲,这个问题更有意思了。
    不管进不进队都是消息,那不进队的消息就不用Tanslate和Dispatch了?那你所说的特定函数也就是指楼主说的Framework调用了,我想就是系统调用吧?要不然写win32的时候从来没有理会过这些消息,还是一样运行的挺好。