none
求教:有关oncreate消息处理函数的问题 RRS feed

  • 问题

  • 书上说,oncreate消息处理函数是调用create后,并且create在返回之前被调用.
    那么在oncreate函数体内有这么一条语句:
          CRichEditCtrl的对象名.create
    编辑控件对象调用create,产生WM_CREATE消息,于系统回调oncreate处理函数。
    但是,使我不解的是,这条代码在oncreate函数体内,在进入这个函数之前还没有执行到这个代码,
    系统是怎么发送这条消息,又怎么调用这个函数的呢?
           恳求多多指教,谢谢!!

    2009年5月25日 13:32

答案

  • OnCreate是父窗口的的消息相应,然后你说的那个在OnCreate里的Create是父窗口的子窗口的创建函数.所以是没有问题的.子窗口一般都在父窗口的WM_CREATE中创建。
    若是你在父窗口中调用它自己Create则会导致死循环,最后程序堆栈溢出崩溃。
    Hello world
    2009年5月25日 15:36
    版主
  • 找本MFC的书看一下,就清楚了。源码面前,了无秘密。
    MFC首先把整个窗口,包括主窗口,子窗口,子窗口的子窗口中所有注册的消息处理函数的指针放到一个消息列表中。然后通过一个CCmdTarget根据消息列表中注册的消息,进行相应函数的调用。CCmdTarget通过自动化获得系统消息。
    http://msdn.microsoft.com/en-us/library/x9w7txst(VS.71).aspx
    麻烦把正确答案设为解答。
    2009年5月26日 0:27
    版主

全部回复

  • OnCreate是父窗口的的消息相应,然后你说的那个在OnCreate里的Create是父窗口的子窗口的创建函数.所以是没有问题的.子窗口一般都在父窗口的WM_CREATE中创建。
    若是你在父窗口中调用它自己Create则会导致死循环,最后程序堆栈溢出崩溃。
    Hello world
    2009年5月25日 15:36
    版主
  • 找本MFC的书看一下,就清楚了。源码面前,了无秘密。
    MFC首先把整个窗口,包括主窗口,子窗口,子窗口的子窗口中所有注册的消息处理函数的指针放到一个消息列表中。然后通过一个CCmdTarget根据消息列表中注册的消息,进行相应函数的调用。CCmdTarget通过自动化获得系统消息。
    http://msdn.microsoft.com/en-us/library/x9w7txst(VS.71).aspx
    麻烦把正确答案设为解答。
    2009年5月26日 0:27
    版主