小编Mal*_*lik的帖子

在线程中更改 GUI

我有一个大约 20 秒后结束的操作。为了避免冻结,我想创建一个线程并每秒更新其中的标签文本。我查了很多,因为每个人都有不同的意见,我无法决定使用哪种方法。

我试过 SendMessage 并且它有效,但有些人认为使用 SendMessage 不安全,我应该改用 PostMessage。但 PostMessage 失败ERROR_MESSAGE_SYNC_ONLY(1159)。

char text[20] = "test text";
SendMessage(label_hwnd, WM_SETTEXT, NULL, text);
Run Code Online (Sandbox Code Playgroud)

我搜索了这个,我认为这是因为在 PostMessage 中使用了不允许的指针。这就是它失败的原因。

所以我该怎么做?我糊涂了。你有什么建议?此方法是否适用于更改其他线程中的 UI 元素?

谢谢

c++ mfc multithreading sendmessage thread-safety

4
推荐指数
1
解决办法
1432
查看次数

标签 统计

c++ ×1

mfc ×1

multithreading ×1

sendmessage ×1

thread-safety ×1