Сообщения о нажатии клавиши предоставляют много информации о нажатой клавише, но они не предусматривают кодов букв при нажатии символьных клавиш. Чтобы получить данные о кодах букв, прикладная программа должна включить функцию TranslateMessage в цикл сообщений своего потока. Функция TranslateMessage посылает сообщение WM_KEYDOWN или WM_SYSKEYDOWN раскладке символов на клавиатуре. Раскладка проверяет код виртуальной клавиши сообщения и, если он соответствует клавише знака, предоставляет эквивалент кода буквы (принимая во внимание состояние клавиш SHIFT и CAPS LOCK). Функция затем генерирует символьное сообщение, которое включает в себя код буквы и размещает сообщение сверху очереди сообщений. Следующий повтор цикла сообщения удаляет символьное сообщение из очереди и отсылает сообщение соответствующей оконной процедуре.