[已解决]窗口消息传递 wxQueueEvent 问题(wxTheApp->QueueEvent 无效)  [SOLVED]

这是wxWidgets论坛的中文版本。在这里,您可以用您的母语汉语讨论上面任一子论坛所涉及的所有关于wxWidgets的话题。欢迎大家参与到对有价值的帖子的中英互译工作中来!
lfjking
Experienced Solver
Experienced Solver
Posts: 70
Joined: Mon Nov 14, 2016 1:35 pm

[已解决]窗口消息传递 wxQueueEvent 问题(wxTheApp->QueueEvent 无效)  [SOLVED]

Postby lfjking » Mon Nov 14, 2016 2:04 pm

下面是我碰到的问题
在vc++ 中 的 GUI 里面 只要 有 窗口句柄 那么就可以 在 进程内任何 地方 sendMessage/postmessage 通知 窗口
那么 在 codeblocks + wxWidgets 环境中 一个 工作 线程 类 如何 发送消息 通知 窗口 类

Code: Select all

//这个 函数中 的 wxEvtHandler  要如何 确定?????
inline void wxQueueEvent(wxEvtHandler *dest, wxEvent *event)
{
    wxCHECK_RET( dest, "need an object to queue event for" );

    dest->QueueEvent(event);
}

----------------------------------------------------问题关键源码------------------------------------------------------------------------------

Code: Select all

class myFram public wxFrame
{
   ....其他代码 和 事件初始化....
   
   void myFram ::OnShowLog(wxCommandEvent& event)
   {
      showLog(event.GetString());
   }
   
   void myFram ::showLog(wxString &txt)
   {
      ListBox1->Append(txt);
      return;
   }
   
   void SyncFrame::OnButton1Click(wxCommandEvent& event)
   {
      
      wxCommandEvent evn(wxEVT_SHOWLOG);
         evn.SetString(wxT("myFrame Success"));
         QueueEvent(evn.Clone());
         
         work wor((wxApp*)this);//传入 this 指针
         wor.Output(wxT("work Success"))//---------------------------------------------问题所在-----------------------------------
   }
}


//另一个CPP 不是 界面类
class work
{
   ............
   //解决 办法 就是 在这里 添加了 一个 wxApp指针
   work::work(wxApp * pApp):
      mApp(pApp)
   {
   }
   
   void Output(wxString &Str)//错误 在 这里 ----执行 后 并没有 显示 信息 到 列表控件上  求 问题 解决办法
   {
      //修改的代码
      if(mApp)
      {
         wxCommandEvent evn(wxEVT_SHOWLOG);
                 evn.SetString(str);
                 mApp->QueueEvent(evn.Clone());///这改这样既可
      }
      
      //原来的代码
      //wxCommandEvent evn(wxEVT_SHOWLOG);
         //evn.SetString(str);
         //wxTheApp->QueueEvent(evn.Clone());
   }

   wxApp *mApp;
}

Return to “wxWidgets Development (Chinese)”

Who is online

Users browsing this forum: Baidu [Spider] and 1 guest