我用SDI编了个程序,视图为CFormView类,在CFormView中我加了一个按钮,我想让按钮在CMainFrame类中处理,请大家该怎么办?
以前在CMainFrame中处理对话框的按钮消息时,只要将按钮的ID值大于0x8000,然后在
CMainFrame中手动加消息映射和响应函数就可以了,但是在CFormView中却不行,不知道是什么原因,请大家帮我解决一下,谢谢!

解决方案 »

  1.   

    OnButtonClick()
    {
        CMainFrame *pMain = (CMainFrame*)AfxGetMainWnd();
        pMain->ButtonClick();
    }
    CMainFrame::ButtonClick()
    {
    ...
    }
      

  2.   

    多谢楼上的帮忙,你说的方法是可以的,但是我想知道的是什么CFormView为什么不能像CDialog类那样处理按钮消息。
    CDialog::OnCmdMsg()
    {
    如果ID>0x8000 and ID<0xf000
    则交给主框架或CYourWinApp()执行
    }
    可是 CFormView类为什么不可以呢?
      

  3.   

    因为MFC框架中,消息先要经过视图(这儿formview),然后才到达主框架。
      

  4.   

    CFormView也可以处理按钮消息!不一定通过frame
      

  5.   

    谢谢两位,但是,我需要让它在CMainFrame中处理呀?视图没有找到自然会路由至主框架呀?
      

  6.   

    命令消息传递路线。
    Frame窗口 1.View 2.Frame窗口本身 3.CWinApp对象。
    View      1.View本身 2.Document
    Document  1.Document本身 2.Document Template