如何共享事件表 如何在一个类的成员函数执行到某一处后转而执行另一个类的事件表,希望得到大侠们的解答 不胜感激。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我在A类里面进行了消息循环,现在我在B类里面通过执行某一个函数(为这个消息循环做好准备),准备工作做好之后停在该函数的某一处(此函数未结束),进入到B类的消息循环。请问怎么实现这个消息共享,调用A类的消息循环。 A SendMessage 给BA waitSingleObject楼主要这种效果??效果是可以的奇怪的设计源自于对框架的不熟悉。 并不是让程序停止运行,而是怎么样进入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类消息循环}忘大虾们赐教 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类的 事件表 我现在是用WTL,在这里面倒是轻松可以完成。WTL的消息循环中有CHAIN_MSG_MAP(OtherClass),嵌入基类的消息循环。其本质还是switch,这个宏定义你可以看看源码(WTL中都有源码)。如果觉得这段话是废话,请无视之。虽然我觉得可以解决你的问题,如果你觉得麻烦就算了。 GetLogicalDriveString怎么不返回所有盘? 向edit控件输出文本的问题 量帶換行符的字符串顯示在設備的長度 请教一个平面树显示的问题(OpenGL混合) VC中调用汇编的问题 初学者的问题--怎么样把CRecordset返回的数据用CListCtrl显示出来? VisualStudio (嗷~~~) ,进来领分!!! 请有经验的人指点,有关VC音频开发方面的问题 unicode高手请进,日文系统下的中文出现部分乱码 [急]自定义的数据结构,有uuid的,但是客户端导入tlb后没有其定义 不盈利软件,会被告吗 关于800706F4错误的问题
请问怎么实现这个消息共享,调用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类消息循环
}忘大虾们赐教
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类的 事件表
WTL的消息循环中有CHAIN_MSG_MAP(OtherClass),嵌入基类的消息循环。其本质还是switch,这个宏定义你可以看看源码(WTL中都有源码)。
如果觉得这段话是废话,请无视之。虽然我觉得可以解决你的问题,如果你觉得麻烦就算了。