2014-11-03 2 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

Хотя может быть полезно узнать, какая единица представляет собой член 'time' (миллисекунды), я не вижу веских оснований спрашивать о его базе. Единственной полезной информацией, которую вы можете извлечь из нее, является временной интервал *. Если вы просите о его базе, вы, скорее всего, пойдете в неправильном направлении. – IInspectable

+0

Не зная, что представляет база, невозможно преобразовать «время» в стандартный формат, и сравнивать его с отметками времени других форматов невозможно. Вы даже не можете определить интервал между тем, когда сообщение отправлено и когда оно было извлечено из очереди, не зная базы. –

+0

Ну, правда, диагностика (и, возможно, настройка времени исполнения) гарантировала бы знание абсолютной базы 'time'. Я предполагаю, что преобразование между различными форматами отображения является всего лишь артефактом регистрации/представления диагностической информации. – IInspectable

ответ

3

Найдено.

GetMessageTime определяет его как число миллисекунд с момента запуска системы.

+0

Это было именно то, что я хотел опубликовать в качестве ссылки, но вы были быстрее. – icbytes

+0

Эта информация размещена в виде комментария в нижней части документа ['MSG'] (http://msdn.microsoft.com/en-us/library/windows/desktop/ms644958.aspx) в MSDN. –

+1

См. Также «GetTickCount». –