现在我有两个菜单,一个名字是ID_POP_TASK_NEW 和 ID_TASK_NEW,其中ID_POP_TASK_NEW是在一个快捷菜单中,而ID_TASK_NEW是在主菜单中。我现在已经实现了在弹出菜单的响应事件的代码,主菜单ID_TASK_NEW的执行,我想直接通过SendMessage方式来直接调用ID_POP_TASK_NEW的响应,如何去发送这个消息?我尝试了用下面的:
SendMessage(WM_COMMAND,(WPARAM)ID_POP_TASK_NEW,0);
但是没有任何反应。另外需要说明的一点是:我的程序是多文档结构的,IP_POP_TASK_NEW只在对应的文档模板中才有的。

解决方案 »

  1.   

    发一个消息,这个消息的响应,调用ID_POP_TASK_NEW的处理
      

  2.   

    发送一个消息给ID_POP_TASK_NEW所在的文档,如何在该文档的消息响应函数中调用ID_POP_TASK_NEW的处理。or把ID_POP_TASK_NEW所要处理的功能设计成为一个函数,然后再主菜单ID_TASK_NEW和ID_POP_TASK_NEW的消息响应函数中都调用该函数.
      

  3.   

    不能确定你的弹出菜单的ID_POP_TASK_NEW处理放在那一层,是CView,还是CMDIChildWnd中?
    如果在Cview中,并且你要发送WM_COMMAND消息也是在view中,则直接发送即可
      SendMessage(WM_COMMAND,(WPARAM)ID_POP_TASK_NEW,0);如果要发送WM_COMMAND消息是在CDocument中,则
     
        //找出目标view(接受WM_COMMAND消息)
       POSITION pos = GetFirstViewPosition();
       while (pos != NULL)
       {
          CView* pView = GetNextView(pos);
          pView->SendMessage(WM_COMMAND,(WPARAM)ID_POP_TASK_NEW,0);
      
       }   
     
      

  4.   

    ID_TASK_NEW在多文档CChildFrame中,ID_POP_TASK_NEW在继承余CFormView的CViewTaskData中。
      

  5.   

    ID_TASK_NEW在多文档CChildFrame中,ID_POP_TASK_NEW在继承余CFormView的CViewTaskData中。
      

  6.   

    在点击ID_TASK_NEW后直接调用ID_POP_TASK_NEW对应的函数不可以吗?
      

  7.   

    搞定,呵呵
    m_pViewTask->SendMessage(WM_COMMAND, (WPARAM)ID_POP_TASK_NEW,0);