首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MFC将消息发送到主线程(而不是窗口)?

MFC将消息发送到主线程(而不是窗口)?
EN

Stack Overflow用户
提问于 2013-08-16 18:30:16
回答 2查看 4.6K关注 0票数 1

我正在使用MFC和C++为Windows编写一个图形用户界面应用程序。

所以我需要从我的工作线程向我的主线程发送消息,告诉它更新我的GUI。但是,我不确定如何将消息发送到实际的主线程,而不是窗口。当它收到消息时,我可以看到它在主线程中,但我不确定这是有保证的还是只是运气好。

在worker中:

代码语言:javascript
运行
复制
PostMessage( *myTestToolDlg, WM_YOU_HAVE_DATA,UPDATE_GUI, 0 );

在应用程序窗口中:

代码语言:javascript
运行
复制
LRESULT CTestToolDlg::OnData(WPARAM wp, LPARAM )

这是不是意味着什么呢?

EN

回答 2

Stack Overflow用户

发布于 2013-08-16 18:51:13

您可以通过在主线程中使用类似于threadId = GetCurrentThreadId();的内容来获取主线程的线程id,然后通过从工作线程调用PostThreadMessage(threadId, ...) 向其发送一条消息。

然而,正如Hans Passant所说的-> here <-,您应该避免使用PostThreadMessage向UI线程发送消息,并且最好将消息发送到它的窗口。

票数 1
EN

Stack Overflow用户

发布于 2020-07-09 17:27:17

如果要直接修改ListBox或ListView,可以使用SendDlgItemMessageA()

示例:

char const* pChar = "My text to be updated";

SendDlgItemMessageA(hWindow, IDC_LISTBOX, LB_DELETESTRING, 0, 0);

SendDlgItemMessageA(hWindow, IDC_LISTBOX, LB_INSERTSTRING, -1, (LPARAM)pChar);

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18271229

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档