在Windows中,如果存在WM_MOVE
或WM_ACTIVATE
消息,即使这些消息没有排队(即,我不会使用PeekMessage
获取它们),也会恢复在WaitMessage
函数上hibernate的线程。
问题是这种行为是否与文档一致,因为在Wine中运行时,我观察到的行为是不同的,线程被激活,但没有恢复睡眠,而是直接调用WinProc
。
编辑:让我换句话来这个问题变得更清晰:
WaitMessage
VM_MOVE
我看到两种可能性:
WaitMessage
之后WaitMessage
恢复 WndProc
激活的,也就是在WaitMessage
之后 这些描述的实际行为? 另外,如果我立即打电话给PeekMessage
我应该得到什么?
鉴于WM_MOVE
不是排队消息,并且WaitMessage
等待消息排队,线程应该被唤醒吗? 如果是的话,应该在WaitMessage
之后WaitMessage
恢复,还是直接调用WndProc
?
我问的原因是因为我似乎在Windows和Wine中获得两种不同的行为。 在Windows中,线程在WaitMessage
之后WaitMessage
恢复,在Wine中线程在WndProc
被激活。