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

标签 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 控件。

最佳答案

工作线程可以使用 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/

相关文章:

C++ 编译错误非类类型

c++ - opencv估计RigidTransform : How to get global scale?

php - 在 PHP 中定义可在所有文件中使用的全局常量的最佳方法是什么?

c++ - 如何将 vtkImageData 转换为 cv::Mat?

c++ - arg 方向的 "in"和 "out"是什么意思?

c++ - 为什么我在这个程序上得到 "abort"?

java - 原子写入 ehcache

c++ - 从 boost::signals2 安全断开连接

string - 将字符视为变量

c - 我怎样才能纠正我的c代码?