Как определить, отправлен ли тип сообщения или опубликован?

StackOverflow https://stackoverflow.com/questions/844899

Вопрос

Я знаю, что некоторые типы сообщений отправляются непосредственно в оконные процедуры, а другие отправляются в очередь сообщений потока, но я не нашел способа определить, будет ли сообщение отправлено или опубликовано.

MSDN наполовину полезен;это объяснило что происходит но приведенные в нем примеры, по-видимому, не являются исчерпывающими.

Есть ли окончательный список отправленных и отправленных?опубликованные сообщения или способ определить тип сообщения?

Это было полезно?

Решение

А некоторые сообщения не публикуются и не отправляются.Так обстоит дело с WM_PAINT, WM_TIMER и некоторыми другими.Они просто возвращаются GetMessage, когда очередь опубликованных сообщений пуста.

Я не уверен, какие приложения вы пытаетесь подключить, но если вам приходится задавать такие вопросы, то я немного пугаюсь.Нет ничего более неприятного для разработчика, когда он тратит время на сбои, о которых сообщают пользователи, и обнаруживает, что причина кроется в каком-то другом приложении, которое внедряет некорректный код.Действуйте осторожно!

Кроме того, Spy++ (инструмент, поставляемый с Visual Studio) покажет вам, какие сообщения публикуются/отправляются/получаются для любого конкретного приложения Live Windows.

Другие советы

Использовать InSendMessage или InSendMessageEx к определить, обрабатываете ли вы сообщение, отправленное вызовом к SendMessage функция.

Страницы MSDN, документирующие каждое сообщение, следует считать авторитетным источником:

А WM_LBUTTONDOWN сообщение это опубликовано когда ...

А WM_SETFOCUS сообщение это отправил к окну после...

и т. д.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top