2014-11-03 14 views
2

Windows消息傳遞系統將發佈時間分配給每條消息的DWORD。MSG結構的時間成員是什麼格式?

typedef struct tagMSG { 
    HWND hwnd; 
    UINT message; 
    WPARAM wParam; 
    LPARAM lParam; 
    DWORD time; // <--- 
    POINT pt; 
} MSG, *PMSG, *LPMSG; 

但我找不到任何文件說明什麼是DWORD代表。是秒,毫秒,納秒?從歷史的哪一點來看呢?

+0

儘管知道「時間」成員代表什麼單位(毫秒)可能是有用的,但我沒有看到詢問其基數的充分理由。您可以從中提取的唯一有用信息是時間間隔*。如果你要求它的基地,你可能會走錯方向。 – IInspectable 2014-11-04 11:20:44

+0

不知道底座代表什麼,它不可能將'時間'轉換爲標準格式,並且不可能將其與其他格式的時間戳進行比較。您甚至無法確定發佈消息的時間與從隊列中檢索消息的時間間隔,而無法瞭解基準。 – 2014-11-04 14:26:35

+0

嗯,確實,診斷(以及可能的運行時調整)將保證知道「時間」是絕對的基礎。我假設不同顯示格式之間的轉換隻是記錄/呈現診斷信息的工件。 – IInspectable 2014-11-04 15:01:34

回答

3

找到它。

GetMessageTime將其定義爲自系統啓動以來的毫秒數。

+0

這正是我想作爲鏈接發佈的內容,但您的速度更快。 – icbytes 2014-11-03 21:21:41

+0

該信息在MSDN上的['MSG'文檔](http://msdn.microsoft.com/en-us/library/windows/desktop/ms644958.aspx)底部發布爲註釋。 – 2014-11-03 21:29:59

+1

另見'GetTickCount'。 – 2014-11-03 21:43:29