Winapi 将getmessagetime与peekmessage而不是getmessage一起使用

Winapi 将getmessagetime与peekmessage而不是getmessage一起使用,winapi,Winapi,我需要修改一个应用程序,这些更改涉及使用事件发布到窗口消息循环的时间。总之,长话短说,我在窗口消息处理程序中使用getmessagetime来获取消息的时间。它似乎工作正常,但getmessagetime的文档明确指出,如果消息循环使用getmessage运行,它将返回msg.time参数,但如果使用peekmessage…,它将什么也不说,pm_remove与此应用程序的情况相同 所以问题是,如果应用程序的消息循环使用peekmessage…,pm_remove运行,getmessagetim

我需要修改一个应用程序,这些更改涉及使用事件发布到窗口消息循环的时间。总之,长话短说,我在窗口消息处理程序中使用getmessagetime来获取消息的时间。它似乎工作正常,但getmessagetime的文档明确指出,如果消息循环使用getmessage运行,它将返回msg.time参数,但如果使用peekmessage…,它将什么也不说,pm_remove与此应用程序的情况相同

所以问题是,如果应用程序的消息循环使用peekmessage…,pm_remove运行,getmessagetime可靠吗?还是我应该请求客户端允许修改peekmessage…,pm_no_remove+getmessage组合的消息循环?或者换句话说,getmessagetime读取的内部值是由getmessage还是由dispatchmessage设置的


我不能简单地要求更改消息循环以保留msg.time参数的原因是,如果用户调整窗口大小,windows使用内部消息循环而不是应用程序的消息循环,因此不会设置msg.time参数,因此必须使用getmessagetime来保证可靠的时间。

绝对不是DispatchMessage。如果你想得到保证,你必须打电话给微软。如果他们告诉你不,我会非常惊讶。是的,看起来还可以,但如果在合同结束后,突然出现了一个关于这个的问题,那就很糟糕了。我会告诉我的客户评估呼叫MS,因为否则他们的公司政策是对所有更改的组件进行回归测试,这就是我尝试更改尽可能少的组件的原因,他们必须决定哪个选项对他们来说更便宜。客户接受更改peekmessage循环以添加getmessage,但是为了将来的参考,如果有人在这里进行搜索,经过大量的自动测试之后,getmessage/peekmessagepm_remove似乎都设置了getmessagetime读取的值,或者dispatchmessage执行了该操作,或者换句话说,getmessagetime看起来应该始终与peekmessagepm_remove消息循环一起工作。如果出现奇怪的边缘情况,仍应获得MS对生产代码的最终确认。