Вопрос

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

Ни одно из сообщений, которые я получаю до сих пор, не кажется полезным, но есть некоторые, которые я вообще не понимаю.Что означают коды 0x0118, 0xC123, 0xC128 и 0xC12E?

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

Решение

0x0118: WM_SYSTIMER (недокументированный) используется для мигания каретки

Остальные три должны быть сообщениями, определяемыми приложением (что угодно, в диапазоне от 0xC000 до 0xFFFF), поэтому вы не найдете их нигде.

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

Самый простой способ — просто захватить мышь.Когда у вас есть захват мыши, вы получаете одно событие щелчка за пределами вашего окна, затем захват отключается.

Более сложным способом было бы установить низкоуровневый перехват мыши для Windows.Чтобы выполнить глобальную перехватку, вам придется поместить код перехватчика в неуправляемую DLL.

А Действительно Самый простой способ - просто закрыть форму, когда она деактивирована.

РЕДАКТИРОВАТЬ:

Упс.Я только что понял, что не ответил на ваш прямой вопрос об идентификаторах сообщений.Сообщение 0x118 не определено в winuser.h, поэтому я предполагаю, что это недокументированный идентификатор сообщения.Идентификаторы сообщений в диапазоне от 0xC000 до 0xFFFF являются сообщениями, определяемыми приложением.Эти идентификаторы возвращаются RegisterWindowMessage.

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