2016-07-18 8 views
0

我正在編寫一個註冊套接字事件的日誌記錄功能。我遇到的問題是,即使我在MSG結構中有time事件,當我撥打PeekMessage時,後續致電DispatchMessage的呼叫最終將由WindowProc處理,它不會收到time作爲參數。正確使用MSG中的時間的方法

我用來記錄時間的「解決方案」包括在我的Windows應用程序的主循環中檢測套接字事件,其中PeekMessage發生。

這將是正確的方法來做到這一點?我寧願不必將日誌記錄特定的邏輯添加到其他常規例程中。

回答

2

使用GetMessageTime()在插座的消息處理程序:

檢索由GetMessage()功能檢索到的最後消息的消息的時間。時間是一個長整數,指定從系統啓動到創建消息(即,放置在線程的消息隊列中)時的經過時間(以毫秒爲單位)。

相比MSG結構的time字段:

在該消息被張貼的時間。

+0

進一步閱讀:https://blogs.msdn.microsoft.com/oldnewthing/20090618-00/?p=17843 – theB

+0

謝謝雷米。但是,我仍然沒有看到這將如何讓我在主循環之外移動特定邏輯,因爲這意味着在另一個地方調用「GetMessage」,在另一個地方調用「GetMessageTime」(特定邏輯位於此處)。那麼事件和時間之間的對應關係就不能保證。 –

+0

您的原始解決方案是在主循環中調用PeekMessage,並從MSG結構中獲取時間戳。 'GetMessageTime'返回相同的時間戳。那麼在你的'WindowProc'處理程序中調用'GetMessageTime'有什麼問題? –

相關問題