gui界面怎么直接接收其他线程发出的消息

这是wxWidgets论坛的中文版本。在这里,您可以用您的母语汉语讨论上面任一子论坛所涉及的所有关于wxWidgets的话题。欢迎大家参与到对有价值的帖子的中英互译工作中来!
Post Reply
SLonger
In need of some credit
In need of some credit
Posts: 2
Joined: Fri Nov 27, 2015 6:00 am

gui界面怎么直接接收其他线程发出的消息

Post by SLonger »

各位好!
小弟刚学习wxwidgets,在使用wxthread线程通信时,碰到这样问题:
自己直接创建一个线程类并单独放在一个cpp文件中,在线程类的entry方法中:

Code: Select all

wxThreadEvent e(wxEVT_COMMAND_THREAD, wxID_ANY);
         e.SetString(_T("Some string"));
        wxTheApp->QueueEvent(e.Clone());
如果在开始的app应用类里添加事件表并且对其有相应的处理函数,能够接收这个事件并且处理对应的函数;
但是我想直接用gui主线程frame直接接收而不是用wxTheApp;怎么才能在frame直接响应事件像上面一样在应用程序内里在添加事件表。
期待有路过大神进来瞧瞧!=_=
jingyu9575
In need of some credit
In need of some credit
Posts: 7
Joined: Sun Mar 30, 2014 3:39 am

Re: gui界面怎么直接接收其他线程发出的消息

Post by jingyu9575 »

新版的CallAfter简单一些,调用Frame方法的例子:
http://docs.wxwidgets.org/trunk/classwx ... 50b3719519

在线程中myFrame->CallAfter(&MyFrame::方法, 参数)
SLonger
In need of some credit
In need of some credit
Posts: 2
Joined: Fri Nov 27, 2015 6:00 am

Re: gui界面怎么直接接收其他线程发出的消息

Post by SLonger »

@jingyu9575 谢谢楼上大哥回复,这个问题可能我并没有描述清楚, 其实就是在子线程里使用frame
我用 wxTheApp->GetTopWindow() 获取了frame
再frame用接收,这样就能够接收的到了
Post Reply