c ++ MFC设置/从工作线程将文本附加到richedit控件

时间:2014-02-03 21:37:37

标签: c++ multithreading variables text mfc

从主线程我可以使用成员变量,如:

    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控件中。

1 个答案:

答案 0 :(得分:2)

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

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

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