关于事件event的有关问题
关于事件event的问题
定义如下函数
void CWxFrame::OnButtonStart(wxCommandEvent & WXUNUSED(event))
{
m_oStart.Run(oRunningList);
... ...
}
在GUI上点击Start按钮,程序开始工作,并输出结果.
现在想直接使用Run方法,不需要点击Start按钮,输出结果.
可是不点击Start,无法触发event,也就无法输出结果,但是程序实际上是运行了的,因为使用了Run. 怎样让这个事件总是处于触发的状态呢?
------解决方案--------------------
// user code sending the event
void MyWindow::SendEvent()
{
wxCommandEvent event( wxEVT_MY_EVENT, GetId() );
event.SetEventObject( this );
// Give it some contents
event.SetText( wxT( "Hallo ") );
// Send it
GetEventHandler()-> ProcessEvent( event );
}
///////////////////////////////////////////////////////
reference: http://www.wxwidgets.org/manuals/stable/wx_eventhandlingoverview.html
------解决方案--------------------
第一、可以直接调那个消息响应函数OnButtonStart(wxCommandEvent & WXUNUSED(event))
第二、发送消息::PostMessage( m_Hwnd, WM_COMMAND, MAKEWPARAM(IDC_BTN_START,0),0);
定义如下函数
void CWxFrame::OnButtonStart(wxCommandEvent & WXUNUSED(event))
{
m_oStart.Run(oRunningList);
... ...
}
在GUI上点击Start按钮,程序开始工作,并输出结果.
现在想直接使用Run方法,不需要点击Start按钮,输出结果.
可是不点击Start,无法触发event,也就无法输出结果,但是程序实际上是运行了的,因为使用了Run. 怎样让这个事件总是处于触发的状态呢?
------解决方案--------------------
// user code sending the event
void MyWindow::SendEvent()
{
wxCommandEvent event( wxEVT_MY_EVENT, GetId() );
event.SetEventObject( this );
// Give it some contents
event.SetText( wxT( "Hallo ") );
// Send it
GetEventHandler()-> ProcessEvent( event );
}
///////////////////////////////////////////////////////
reference: http://www.wxwidgets.org/manuals/stable/wx_eventhandlingoverview.html
------解决方案--------------------
第一、可以直接调那个消息响应函数OnButtonStart(wxCommandEvent & WXUNUSED(event))
第二、发送消息::PostMessage( m_Hwnd, WM_COMMAND, MAKEWPARAM(IDC_BTN_START,0),0);