如何在一个类的成员函数执行到某一处后转而执行另一个类的事件表,希望得到大侠们的解答  不胜感激。

解决方案 »

  1.   

    我在A类里面进行了消息循环,现在我在B类里面通过执行某一个函数(为这个消息循环做好准备),准备工作做好之后停在该函数的某一处(此函数未结束),进入到B类的消息循环。
    请问怎么实现这个消息共享,调用A类的消息循环。
      

  2.   

    A SendMessage 给BA waitSingleObject楼主要这种效果??效果是可以的
    奇怪的设计源自于对框架的不熟悉。
      

  3.   

    并不是让程序停止运行,而是怎么样进入A消息循环 此消息循环并不是通过某个控件触发的,我在A类里做了曲线绘制(当有压力信号进来后)B类的一个入口函数处理数据的接收传递给A ,现在B类把数据接收准备工作做好后传递给了A ,只需在B类中如何去触发A类的事件表,原先是通过显示A类的曲线对话框直接触发其消息循环,现在我是在Frame中绘制曲线,不知道怎么去触发A类消息循环了。
    原先有Dialog对话框的源码
    void RouterPanel::m_buttonCurveOnButtonClick( wxCommandEvent& event )
    {
    PrestMonitorFrame dlg(::wxGetTopLevelParent(this));////////////////CurveView/////////////////////////////////////////调用曲线对话框
    dlg.SetTitle(wxString::Format(wxT("%s 曲线"), this->m_staticTextName->GetLabel()));
    dlg.m_panelPressuare->SetMainCurve(m_router->getTimeCurve());//主轴时间
    dlg.m_panelPressuare->AddSecondaryCurves(m_router->getPressuareCurve(), wxColor(0xFF0000));//Y轴 压力
    dlg.m_panelPressuare->SetAxisXLabel(wxString(wxT("时间")));
    dlg.m_panelPressuare->SetAxisYLabel(wxString(wxT("压力")));
    dlg.m_panelPressuare->Update(); dlg.m_panelRotate->SetMainCurve(m_router->getRotateCurve());//主轴 寿命
    dlg.m_panelRotate->AddSecondaryCurves(m_router->getPressuareCurve(), wxColor(0xFF0000));//Y轴 压力
    dlg.m_panelRotate->SetAxisXLabel(wxString(wxT("寿命")));//寿命
    dlg.m_panelRotate->SetAxisYLabel(wxString(wxT("压力"))); dlg.m_panelRotate->Update(); dlg.ShowModal();//模态对话框  在此处进入消息循环

    }现在直接在rame中绘制
    void RouterPanel::drawCurve()

    PrestMonitorFrame dlg(::wxGetTopLevelParent(this));
    dlg.m_panelPressuare->SetMainCurve(m_router->getTimeCurve());//主轴时间
    dlg.m_panelPressuare->AddSecondaryCurves(m_router->getPressuareCurve(), wxColor(0xFF0000));//Y轴 压力
    dlg.m_panelPressuare->SetAxisXLabel(wxString(wxT("时间")));
    dlg.m_panelPressuare->SetAxisYLabel(wxString(wxT("压力")));
    dlg.m_panelPressuare->Update(); dlg.m_panelRotate->SetMainCurve(m_router->getRotateCurve());//主轴 寿命
    dlg.m_panelRotate->AddSecondaryCurves(m_router->getPressuareCurve(), wxColor(0xFF0000));//Y轴 压力
    dlg.m_panelRotate->SetAxisXLabel(wxString(wxT("寿命")));//寿命
    dlg.m_panelRotate->SetAxisYLabel(wxString(wxT("压力"))); dlg.m_panelRotate->Update();
    在这里怎么去触发A类消息循环
    }忘大虾们赐教
      

  4.   

    BEGIN_EVENT_TABLE(Chart, wxPanel)
        EVT_PAINT(Chart::OnPaint)
        EVT_SET_CURSOR(Chart::OnSetCursor)
        EVT_MOTION(Chart::OnMotion)
        EVT_KILL_FOCUS(Chart::OnKillFocus)//KillFocus失去焦点
        EVT_MOUSE_CAPTURE_LOST(Chart::OnMouseCaptureLost)
        EVT_SIZE(Chart::OnSize)
        EVT_COMMAND(ID_UPDATE_CHART, wxEVT_MY_EVENT, Chart::OnUpdate)
    END_EVENT_TABLE()这个是A类的 事件表
      

  5.   

    我现在是用WTL,在这里面倒是轻松可以完成。
    WTL的消息循环中有CHAIN_MSG_MAP(OtherClass),嵌入基类的消息循环。其本质还是switch,这个宏定义你可以看看源码(WTL中都有源码)。
    如果觉得这段话是废话,请无视之。虽然我觉得可以解决你的问题,如果你觉得麻烦就算了。