Ускоритель перехвата родительского окна - PullRequest
2 голосов
/ 18 июня 2009

У меня есть окно, которое я поместил в другое приложение. В этом случае у меня есть пользовательское приложение, которое я вставил в окно Outlook 2003.

У меня проблема, когда родительское окно (в данном случае Outlook) получает сообщения WM_COMMAND, когда я нажимаю клавишу возврата в моем приложении. Из моего ограниченного опыта Win API это, кажется, указывает на то, что родитель думает, что клавиша Backspace является ускорителем, и обрабатывает его, прежде чем мое приложение сможет его увидеть.

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

Есть идеи?

EDIT: Вот вывод из spy ++, когда я нажимаю клавишу Backspace:

WM_COMMAND wNotifyCode: 1 (отправлено с ускорителя) wID: 1405

Я заметил, что мое текстовое поле получает WM_KEYDOWN при нажатии клавиши возврата. Вот строка Spy ++ для этого сообщения:

P WM_KEYDOWN nVirtKey: VK_BACK cRepeat: 1 ScanOcde: 0EfExtended: 0fAltDown: 0fRepeat: 0fUp: 0

Спасибо.

1 Ответ

0 голосов
/ 19 июня 2009

Вы вводите свой код в процесс Outlook? Звучит как-то гнусно ... Во всяком случае, таблицы акселераторов на самом деле не связаны с окном. Они обрабатываются насосом сообщений приложения (см. Функцию TranslateAccelerator). Я бы сказал, что лучше всего использовать перехват сообщений. Если вы видите сообщение об удалении ключа вниз, нацеленное на ваше окно, отправьте другое личное сообщение в свое окно и съешьте оригинал, чтобы Outlook его не увидел.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...