Заменить WndProc другой функцией для обработки сообщений?

Я спрашиваю, как говорится в названии. Является ли это возможным?

Так как MSG уже содержит все, что мне нужно для собственного обработчика событий, я подумал, может быть, я мог бы сделать один. Я прошу это в основном, чтобы избавиться от интерпретируемого приведения, чтобы я мог использовать внутренние функции и классы внутри моего класса окна для производительности. Я также хочу знать, возможно ли просто взять MSG в одиночку и делать с ним все, что я хочу.

По сути, есть другой способ получить сообщение окна, а затем обработать его, не похожий на общие циклы, найденные в этом нить?

РЕДАКТИРОВАТЬ:
В настоящее время я использую функцию GetMessage (), чтобы получить MSG структурировать и использовать это в моем собственном обработчике событий, однако я не получаю все сообщения, которые я хочу с этим. Есть ли что-нибудь еще, что я должен сделать?

Заранее благодарю.

1

Решение

В настоящее время я использую функцию GetMessage (), чтобы получить структуру MSG

В чем проблема, GetMessage () извлекает только те сообщения, которые были отправлены в очередь сообщений. Оно делает не обнаружить сообщения, которые были отправлены с SendMessage (). Который обходит очередь сообщений и напрямую вызывает оконную процедуру.

Вы поэтому должен используйте WndProc, чтобы увидеть все сообщения для окна.

Подмножество опубликованных сообщений, которые попадают в очередь и, таким образом, возвращаются GetMessage (), является небольшим. В двух словах, входящие уведомления для мыши и клавиатуры и сообщения с низким приоритетом (WM_PAINT, WM_TIMER, WM_QUIT). WM_ACTIVATE всегда отправляется.

Замена WndProc окна, безусловно, является распространенной техникой, она называетсяподклассификация окна «. Любая оболочка библиотеки классов C ++ использует ее для отображения сообщений в методы C ++. Лучше не изобретать это колесо.

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]