(3)应用程序调用DispatchMessage,将消息回传给操作系统。消息是由MSG结构体对象来表示的,其中就包含了接收消息的窗口的句柄。因此,DispatchMessage函数总能进行正确的传递。(4)系统利用“WNDCLASS结构体”的“lpfnWndProc成员”保存的窗口过程函数的“指针”,调用窗口过程,对消息进行处理(即“系统给应用程序发送了消息”)。问题一:“消息回传给操作系统”,“消息”到达操作系统后,是怎样被使用和处理的???问题二:系统为什么可以使用“WNDCLASS结构体”的“lpfnWndProc成员”保存的窗口过程函数的“指针”???就是因为注册了,注册到哪里去了???问题三:“窗口过程函数”是在应用程序的内存中加载的,但是被操作系统通过指针进行调用,对吧???

解决方案 »

  1.   

    通过借助User32模块,系统会调用窗口的回调函数
      

  2.   

    http://blog.163.com/guohuanhuan_cool@126/blog/static/167614238201151893743194/
      

  3.   

    1. 程序中会有一个消息队列维护所有的消息,然后一个个处理对应消息的回调函数2. MFC代码中会保存这些指针3. 程序启动后,会调用这个过程函数,如果你实现了,就调用你的,如果没有,就调用MFC默认的
      

  4.   

    1.操作系统会根据消息中的窗口的句柄,调用该句柄窗口的回调函数。处理该消息。具体怎样处理,要看回调函数的设计,比如在此回调函数中,可以先调用其他消息处理函数。如果返回错误,在执行后面的消息处理。这样就可以显示消息传递。这就是为什么有些消息,你在VIEW中处理之后,在DOC中处理不起作用的原因
    2.这个不是太清楚。但猜想:应该在MFC框架中,有个专门来管理类信息的类。
    3.你想的是对的。操作系统是通过你保存在WNDCLASS结构体的函数指针调用的。