如果事件是WM_MOVE,为什么我的线程在WaitMessage之后被恢复?

在Windows中,如果存在WM_MOVEWM_ACTIVATE消息,即使这些消息没有排队(即,我不会使用PeekMessage获取它们),也会恢复WaitMessage函数上hibernate的线程。

问题是这种行为是否与文档一致,因为在Wine中运行时,我观察到的行为是不同的,线程被激活,但没有恢复睡眠,而是直接调用WinProc

编辑:让我换句话来这个问题变得更清晰:

  1. 我的线程发送WaitMessage
  2. 用户触摸应用程序窗口,动作结束触发VM_MOVE

我看到两种可能性:

  1. 线程在WaitMessage之后WaitMessage恢复
  2. 这个线程是用WndProc激活的,也就是在WaitMessage之后

这些描述的实际行为? 另外,如果我立即打电话给PeekMessage我应该得到什么?

鉴于WM_MOVE不是排队消息,并且WaitMessage等待消息排队,线程应该被唤醒吗? 如果是的话,应该在WaitMessage之后WaitMessage恢复,还是直接调用WndProc

我问的原因是因为我似乎在Windows和Wine中获得两种不同的行为。 在Windows中,线程在WaitMessage之后WaitMessage恢复,在Wine中线程在WndProc被激活。