Сообщения о диакритическом знаке


Некоторые неанглийские клавиатуры содержат знаковые клавиши, которые не требуют создания своих символов. Вместо этого, они используются, чтобы добавить диакритический знак к символу, произведенному последующим нажатием клавиши. Эти клавиши - называются "мертвыми" клавишами (dead keys). Клавиша диакритического знака (Ä) над гласной (который по-другому называется циркумфлекс) в немецкой клавиатуре - пример "мертвой" клавиши. Чтобы ввести символ, состоящий из "o" с циркумфлексом, немецкий пользователь нажимает клавишу циркумфлекса, сопровождаемую нажатием клавиши "o". Окно с фокусом клавиатуры принимает следующую последовательность сообщений:

  1. WM_KEYDOWN
  2. WM_DEADCHAR
  3. WM_KEYUP
  4. WM_KEYDOWN
  5. WM_CHAR
  6. WM_KEYUP

Функция TranslateMessage генерирует сообщение WM_DEADCHAR тогда, когда она обрабатывает сообщение WM_KEYDOWN от "мертвой" клавиши. Хотя параметр wParam сообщения WM_DEADCHAR содержит код буквы диакритического знака для мертвой клавиши, прикладная программа обычно игнорирует это сообщение. Вместо этого она обрабатывает сообщение WM_CHAR, сгенерированное последующим нажатием клавиши. Параметр wParam сообщения WM_CHAR содержит код буквы символа с диакритическим знаком. Если последующее нажатие клавиши генерирует символ, который не может быть объединен с диакритическим знаком, система генерирует два сообщения WM_CHAR. Параметр wParam первого содержит код буквы диакритического знака; параметр wParam второго содержит код буквы последующей знаковой клавиши.

Функция TranslateMessage генерирует сообщение WM_SYSDEADCHAR тогда, когда она обрабатывает сообщение WM_SYSKEYDOWN от системной "мертвой" клавиши ("мертвая" клавиша, которая нажата в комбинации с клавишей ALT). Прикладная программа обычно игнорирует сообщение WM_SYSDEADCHAR.

Назад в оглавление темы
На главную страницу темы

Hosted by uCoz