基于对话框CMyDialog的程序,有菜单。create一个CChildWnd放在MyDialog上,在CChildWnd里添加菜单响应函数,为什么没响应?
我的理解是菜单响应消息先给CMyDialog,如果不处理,再传给其子窗口CChildWnd。但子窗口并没响应。

解决方案 »

  1.   

    那你菜单在cmydialog中处理,然后调用CChildWnd里添加菜单响应函数不是一样的吗?而且父窗口的消息不处理,好像没有说要发到子窗口去处理的吧,除非你自己发送。
      

  2.   

    嗯,我只是有个印象,不能确定,所以来问问。放在CChildWnd里面逻辑上清楚点。实在不行了只能按你说的做。
    多谢
      

  3.   

    jlspwangcaihong:
    我的理解是菜单响应消息先给CMyDialog,如果不处理,再传给其子窗口CChildWnd。这是MFC的机制。不知道对否。来问问。这个功能可以通过各种方法实现。
    另外,能否详细说下 用消息处理机制 的意思。windows可都是消息处理机制啊
    thanks
      

  4.   

    CMyDialog在父窗口中响应,再发给子窗口
      

  5.   

    CDialog中:
    const UINT WM_BUTTON_DOWN = ::RegisterWindowMessage("MESSAGE_ON_BUTTONDOWN");
    ON_REGISTERED_MESSAGE(WM_BUTTON_DOWN ,DealButtonDown)
    CDialog::DealButtonDown()
    {
    //按下按钮要做的操作
    }
    CChildView中:
    OnButtonDown()
    {
    PostMessage(WM_BUTTON_DOWN ,0,0);
    }
      

  6.   

    就是说把接收消息与处理消息分开做。中间用PostMessage完成。多个、多种消息的话,可以加个定时器
    比如Socket机制典型用法就是这样的。