Страница 9 из 17 Сообщения о диакритическом знаке Некоторые неанглийские клавиатуры содержат знаковые клавиши, которые не требуют создания своих символов. Вместо этого, они используются, чтобы добавить диакритический знак к символу, произведенному последующим нажатием клавиши. Эти клавиши - называются "мертвыми" клавишами (dead keys). Клавиша диакритического знака (A) над гласной (который по-другому называется циркумфлекс) в немецкой клавиатуре - пример "мертвой" клавиши. Чтобы ввести символ, состоящий из "o" с циркумфлексом, немецкий пользователь нажимает клавишу циркумфлекса, сопровождаемую нажатием клавиши "o". Окно с фокусом клавиатуры принимает следующую последовательность сообщений: WM_KEYDOWN WM_DEADCHAR WM_KEYUP WM_KEYDOWN WM_CHAR WM_KEYUP
Функция TranslateMessage генерирует сообщение WM_DEADCHAR тогда, когда она обрабатывает сообщение WM_KEYDOWN от "мертвой" клавиши. Хотя параметр wParam сообщения WM_DEADCHAR содержит код буквы диакритического знака для мертвой клавиши, прикладная программа обычно игнорирует это сообщение. Вместо этого она обрабатывает сообщение WM_CHAR, сгенерированное последующим нажатием клавиши. Параметр wParam сообщения WM_CHAR содержит код буквы символа с диакритическим знаком. Если последующее нажатие клавиши генерирует символ, который не может быть объединен с диакритическим знаком, Windows генерирует два сообщения WM_CHAR. Параметр wParam первого содержит код буквы диакритического знака; параметр wParam второго содержит код буквы последующей знаковой клавиши. Функция TranslateMessage генерирует сообщение WM_SYSDEADCHAR тогда, когда она обрабатывает сообщение WM_SYSKEYDOWN от системной "мертвой" клавиши ("мертвая" клавиша, которая нажата в комбинации с клавишей ALT). Прикладная программа обычно игнорирует сообщение WM_SYSDEADCHAR. |