在菜单中 我响应了一个消息命令;
代码如下:
void CP12_2View::OnClearall() 
{
AfxMessageBox("ViewOnClear");}
void CP12_2Doc::OnClearall() 
{
AfxMessageBox("DocOnClear");
}
因为 消息 的流动 先 是流到 View的,所以当我点了这个菜单后 就显示 ViewOnClear;而 AfxMessageBox("DocOnClear");不会 触发,现在的问题是我如何让 AfxMessageBox("DocOnClear");也能触发,也就是说  当我点了 这个菜单后 先显示 AfxMessageBox("ViewOnClear"); 再显示 AfxMessageBox("DocOnClear");而不是单纯的显示 AfxMessageBox("ViewOnClear");
 谢谢!

解决方案 »

  1.   

    直接调用就可以了
    void CP12_2View::OnClearall() 
    {
    AfxMessageBox("ViewOnClear");
        CP12_2Doc *pDoc = (CP12_2Doc*)GetDocument();
        pDoc->OnClearall();}
      

  2.   

    何苦如此。在VIEW中接收后,可以调用文档类的函数。你可以在文档类中做好函数被调用就行了。比如你现在在Doc里加的OnClearall,可以在VIEW里调用就行了。
      

  3.   

    楼上的方法不可取!这里的问题是:怎么使同一个COMMAND MESSAGE被多个HANDLER处理。
    因为在MFC里,COMMAND消息是曲线ROUTING。
    BOOL CTESTDBMSGView::OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo) 
    { BOOL bRtn =  CView::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo);

    if (m_pDocument != NULL && IDM_TEST == nID)
    {
    m_pDocument->OnCmdMsg(nID, nCode, pExtra, pHandlerInfo);
    }
    return bRtn;
      

  4.   

    对,何需如此?不要让一个command message处理多个handler,如果你需要用到另一个你直接调用就可以了!
      

  5.   

    对了直接调用。一个消息不可能像两个hwnd发送消息的