哪个线程调用windows proc回调函数?

Posted

技术标签:

【中文标题】哪个线程调用windows proc回调函数?【英文标题】:Which thread calls the windows proc callback function? 【发布时间】:2015-03-21 15:44:01 【问题描述】:

我有点不确定是哪个线程调用了 wndproc 回调函数。它是来自应用程序的主线程,例如在消息循环中还是单独的 Windows 线程?该函数可以访问类对象,如果 2 个线程碰巧同时访问类对象,我不希望出现任何数据损坏。

【问题讨论】:

【参考方案1】:

是的,它是应用程序的主线程。

应用程序的主线程在之后开始其消息循环 初始化应用程序并创建至少一个窗口。后 它开始,消息循环继续从 线程的消息队列并将它们分派到适当的 视窗。当 GetMessage 函数删除时,消息循环结束 来自消息队列的 WM_QUIT 消息。

来源:About Messages and Message Queues

【讨论】:

从技术上讲,一个窗口的 wndproc 是在创建窗口的线程的上下文中调用的,这是通常,但不是必需 ,主应用程序线程。 任何线程都可以创建一个窗口并有一个消息循环。 这个段似乎更多的是关于你创建的消息循环而不是你在创建窗口时提供的回调函数?

以上是关于哪个线程调用windows proc回调函数?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Windows 消息循环的回调实现

Python 3.X 调用多线程C模块,并在C模块中回调python函数的示例

如果回调函数没处理完,又产生了触发该回调函数的事件,怎么处理?

类内定义线程的回调函数问题

如何在收到异步函数的回调之前使线程休眠?

java回调函数问题?