gpt4 book ai didi

C++ WxWidgets : Redirecting Stdout to a wxTextCtrl across mulitple threads

转载 作者:行者123 更新时间:2023-11-28 08:32:46 24 4
gpt4 key购买 nike

我的应用程序是一个多线程应用程序(使用 wxThreads)。目前,主线程及其子工作线程正在将各种消息输出到 Stdout(使用 cout)。

我有一个带有 wxTextCtrl 的新框架/窗口,并且想将所有 StdOut 消息重定向到它。

GuiLogFrame         *logframe;logframe = new GuiLogFrame(NULL, wxID_ANY, wxEmptyString);logframe->Show();logredirector = new wxStreamToTextRedirector(logframe->get_log_textctrl());

这行不通。但是如果我替换最后一行

wxStreamToTextRedirector redir(logframe->get_log_textctrl());

只要 redir 在范围内,标准输出将被重定向到逻辑框架 wxTextCtrl ...我希望它即使在超出范围时也能保留。

我想要的是 wxStreamToTextRedirector 在应用程序运行的整个过程中保持完整...所以即使是新线程的 cout 也将重定向到同一个 wxTextCtrl。

有什么想法吗?

最佳答案

有一件非常重要的事情是,GUI 操作应该只在主线程上完成;如果不这样做,当您同时进行多个 GUI 操作时,它会崩溃或锁定。这在windows下是绝对正确的,但我相信它适用于所有平台。您需要做的是使用 GetEventHandler()->AddPendingEvent 向控件发送一个事件。然后wx会将该事件添加到对象的队列中,当主线程运行时,它可以进行GUI操作。

这可能不是您问题的确切答案,但它是相关信息。

关于C++ WxWidgets : Redirecting Stdout to a wxTextCtrl across mulitple threads,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1128818/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com