读书人

win32 SDK 中 GetMessage和 settimer是

发布时间: 2012-04-12 15:46:35 作者: rapoo

win32 SDK 中 GetMessage和 settimer是不是必须在同一个线程?
前面发了一个 settimer 调用成功,但是收发消息失败的问题,

我发觉 如果 GetMessage 和 settimer 在同一个线程中,就能成功收发消息,不在同一个线程中就收发不到,这个是怎么了


难道新线程中 settimer 后需要再调用下 GetMessage?

[解决办法]
如果通过消息处理不用回调的话, 调用 SetTimer 的线程必须是拥有窗口句柄的线程. MSDN 说得很明确.
[解决办法]
回调函数是在默认的窗口处理过程中调用的.

如果窗口句柄设置好了的, 就可以. 但是回调函数是在拥有窗口的那个线程中被回调的, 而不是调用 SetTimer 的那个线程.

如果你的窗口句柄为 NULL 的话, 你就需要在线程里面自己建立消息循环来处理 WM_TIMER, 把它分发给适当的窗口.

读书人网 >C++

热点推荐