【问题标题】:c++ MFC setting/appending text to a richedit control from a worker threadc ++ MFC从工作线程设置/附加文本到richedit控件
【发布时间】:2014-02-03 21:37:37
【问题描述】:

从主线程我可以像这样使用成员变量:

    CString updatetext;
    updatetext.Format(L"character length: %d\n", length );
    long nStart, nEnd;
    m_richeditcont.
    GetSel(nStart, nEnd);
    m_richeditcont.SetSel(nEnd, nEnd);
    m_richeditcont.ReplaceSel(updatetext);

但是,如果没有工作线程,程序就会挂起。您不能使用工作线程中的成员变量,那么我将如何使用工作线程中存储在 updatetext 中的文本来更新 Richedit 控件?

我没有任何实际代码,上面的代码只是一个示例,我只是想知道如何将存储在 updatetext 中的文本从工作线程附加到 Richedit 控件。

【问题讨论】:

    标签: c++ multithreading variables text mfc


    【解决方案1】:

    工作线程可以使用 PostMessage 或 SendMessage 将数据发送到 GUI 线程。那么GUI线程应该负责修改GUI。请参阅此处的常见问题解答 12:

    http://vcfaq.mvps.org/mfc/index.htm

    工作线程应该在堆上分配 CString,然后在自定义消息的 lparam 或 wparam 中发布指针。 GUI 线程将指针转换回 CString* 并更新控件。最后,GUI 线程从堆中删除 CString。

    【讨论】:

    • +1 for 最后,GUI 线程从堆中删除了 CString。 非常重要!!
    猜你喜欢
    • 1970-01-01
    • 2014-03-21
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 2012-07-21
    • 2014-02-02
    • 2011-08-26
    • 2013-02-09
    相关资源
    最近更新 更多