使用wxWidgets的事件机制进行线程间通信

wxWidgets是个非常优秀的跨平台库,既可以用来开发GUI程序,也可以用来开发事件驱动的无GUI服务器程序。

wxWidgets的事件处理机制为线程间通信提供了又一个便利的方法。下面是具体步骤:

1、头文件中定义事件ID或直接使用wxID_ANY;

#define ID_MY_THREAD_EVENT

2、主线程中定义事件处理函数;

void OnMyThreadEvent(wxThreadEvent& event);

3、事件关联表中增加事件与处理函数的关联;

BEGIN_EVENT_TABLE(MyApp,wxApp)
EVT_THREAD(ID_MY_THREAD_EVENT, MyApp::OnMyThreadEvent)
END_EVENT_TABLE()

4、另一线程中发送事件;

wxThreadEvent e(wxEVT_COMMAND_THREAD, ID_MY_THREAD_EVENT);
e.SetString(_T(
"Some string"));
wxTheApp
->QueueEvent(e.Clone());

5、之前定义的事件处理函数中处理事件。

posted @ 2011-03-22 17:49  ALLI Look for Lost Idylls  阅读(2384)  评论(0编辑  收藏  举报