在一个MDI程序中,单文档和多视图,当单击子框架标题栏中的关闭按钮,这时子窗口关闭;其触发的消息是 WM_MDIDESTROY,子框架可以处理此消息。我想请教的是,在这个消息处理函数中如何判断是哪个子窗口被关闭,即哪个子窗口触发的消息?因为我想通知主框架窗口知道哪个子窗口关闭了,便于设置标志!

解决方案 »

  1.   

    到MSDN中查查WM_MDIDESTROY消息中各个参数的含议不就知道了么?ParameterswParam
    Handle to the MDI child window to be closed. 
    lParam
    This parameter is not used. 
      

  2.   

    即:wParam就是被关闭的子窗口句柄。
      

  3.   

    晨星,你好!子框架通过系统按钮关闭时最终处理的CMDIChildWnd的WM_DESTROY消息,这个消息中是没有参数的,我通过加对话框函数已经发现。可是WM_MDIDESTROY消息到CMDIChildWnd的WM_DESTROY消息是如何变化的,想请教一下!
      

  4.   


    你根本就不需要管这个过程啦,你只需要处理WM_MDIDESTROY消息即可,后者的消息处理当然由系统完成。不要处理WM_DESTROY
      

  5.   

    WM_MDIDESTROY消息是发给框架的客户区窗口的,通常用不到这个消息。如果要在子窗口关闭时执行主框架类的代码,只要在主框架类中定义一个public函数,在子窗口类中响应WM_CLOSE消息,然后获取主框架类指针调用这个函数就可以了。
      

  6.   

    谢谢大家的讨论,我已经搞定,在WM_DESTORY和WM_CLOSE中都可以处理,换个思路就可以了!