从主线程我可以使用成员变量,如:
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控件中。
答案 0 :(得分:2)
工作线程可以使用PostMessage或SendMessage将数据发送到GUI线程。然后GUI线程应该负责修改GUI。请参阅此处的常见问题12:
http://vcfaq.mvps.org/mfc/index.htm
工作线程应该在堆上分配CString,然后将指针发布在自定义消息的lparam或wparam中。 GUI线程将指针强制转换回CString *并更新控件。最后,GUI线程从堆中删除CString。