Ich schreibe eine Protokollierungsfunktion, die Socket-Ereignisse registriert. Das Problem, das ich habe, ist, dass, obwohl ich die time
der Veranstaltung in der MSG
Struktur habe, die ich bekomme, wenn ich PeekMessage
nennen, der nachfolgende Aufruf DispatchMessage
wird am Ende von WindowProc
umgegangen wird, die nicht die time
als erhält Parameter.Die richtige Art, die Zeit in MSG zu verwenden
Die "Lösung", die ich verwende, um Zeiten zu protokollieren, besteht darin, Socket-Ereignisse in der Hauptschleife meiner Windows-Anwendung zu erkennen, wo PeekMessage
auftritt.
Was wäre der richtige Weg, dies zu tun? Ich würde es eher bevorzugen, keine logging-spezifische Logik zu einer ansonsten allgemeinen Routine hinzufügen zu müssen.
Weiterführende Literatur: https://blogs.msdn.microsoft.com/oldnewthing/20090618-00/?p=17843 – theB
Danke Remy. Ich sehe jedoch immer noch nicht, wie ich dadurch die spezifische Logik außerhalb der Hauptschleife bewegen könnte, weil das bedeutet, GetMessage an einem Ort und GetMessageTime an einem anderen Ort aufzurufen (wo die spezifische Logik sitzt). Dann gäbe es keine Garantie für die Übereinstimmung zwischen dem Ereignis und seiner Zeit. –
Ihre ursprüngliche Lösung bestand darin, 'PeekMessage' in der Hauptschleife aufzurufen und den Zeitstempel von der' MSG'-Struktur zu erhalten. 'GetMessageTime' gibt den gleichen Zeitstempel zurück. Was ist das Problem, das Sie beim Aufruf von 'GetMessageTime' in Ihrem 'WindowProc'-Handler haben? –