什么是wxWidgets中的SendMessage等效项

Can*_*pus 4 wxwidgets

我想将同步事件从工作线程发送到UI主线程.我如何在wxWidgets中执行此操作?链接到示例将非常有用

ezp*_*sso 7

您应该使用QueueEvent(wxEvent*event)进行线程间通信.

void wxEvtHandler::QueueEvent(wxEvent* event)

wxDocumentation说明:

QueueEvent()可以用于从工作线程到主线程的线程间通信,它在内部使用锁定是安全的,并通过确保不使用事件对象来避免AddPendingEvent()文档中提到的问题通过调用线程了.应该注意避免使用该对象的某些字段,特别是事件对象的任何wxString成员都不能是另一个wxString对象的浅层副本,因为这会导致它们仍然在后台使用相同的字符串缓冲区.

你可以这样做:

wxCommandEvent* evt = new wxCommandEvent();

// NOT evt->SetString(str) as this would be a shallow copy
evt->SetString(str.c_str()); // make a deep copy

wxTheApp->QueueEvent( evt ); 
Run Code Online (Sandbox Code Playgroud)

希望这会有所帮助.