从主线程我可以像这样使用成员变量:
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 控件。
最佳答案
工作线程可以使用 PostMessage 或 SendMessage 将数据发送到 GUI 线程。那么GUI线程应该负责修改GUI。请在此处查看常见问题解答 12:
http://vcfaq.mvps.org/mfc/index.htm
工作线程应在堆上分配 CString,然后将指针发布到自定义消息的 lparam 或 wparam 中。 GUI 线程将指针转换回 CString* 并更新控件。最后,GUI 线程从堆中删除 CString。
关于c++ MFC从工作线程设置/附加文本到richedit控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21538353/