本人从CToolBar中派生出一个类CMainToolBar,是用于创建一个新的工具栏,并创建了一个开始按钮,OnBegin()这个函数就是响应这个开始按钮,而本人想把OnBegin()这个消息响应函数放在CMainToolBar中,不想放在CMainFrame中.但是放在CMainToolBar中的话按钮就变灰,不能按下了,放在CMainFrame中就能正常使用.本人移动这个函数的时候ON_BN_CLICKED(IDC_XX,OnBegin)这个也一起放进CMainToolBar中.不知道究竟是什么原因导致这一问题.请问:有什么方法可以实现我想要的功能呢?

解决方案 »

  1.   

    在CMainFrame里重载OnCmdMsg
    BOOL CMainFrame::OnCmdMsg(UINT nID, int nCode, void* pExtra,AFX_CMDHANDLERINFO* pHandlerInfo){       // TODO: Add your specialized code here and/or call the base class       return CFrameWnd::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo);
    }
    改为:
    BOOL CMainFrame::OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo){       // TODO: Add your specialized code here and/or call the base class       if (m_wndDataStatus.OnCmdMsg(nID,nCode,pExtra,pHandlerInfo))              return    TRUE;       return CFrameWnd::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo);
    }为什么这么改你可以看下消息的路由,把几个虚函数的调用弄清楚了就知道怎么人改了
      

  2.   

    是CMainToolBarOnCmdMsg(nID,nCode,pExtra,pHandlerInfo)
      

  3.   

    虽然还不是看得太懂,但是我加上2楼的函数之后就可以了.
    还有一个问题就是,我在CMainToolBar中加入OnClose()这个函数,但关闭工具栏时没有响应,这个是否与你所说的有关呢?
    afx_msg void OnClose();ON_WM_CLOSE()void CMainToolBar::OnClose()
    {
    SendStopData(); CToolBar::OnClose();
    }
      

  4.   

    还有...3楼的CMainToolBarOnCmdMsg(nID,nCode,pExtra,pHandlerInfo)是加在哪里啊?