Здравствуйте, уважаемые подписчики. Перед вами очередной выпуск рассылки "WinAPI
на русском".
Сайт рассылки: http://www.bcbdev.ru. Материалы по Win32 API, C++Builder.
Раздел "WinAPI": http://www.bcbdev.ru/winapi.htm
Раздел "C++Builder": http://www.bcbdev.ru/cbuilder.htm
Раздел "Примеры кода": http://www.bcbdev.ru/codesamples.htm
Раздел "MSDN по-русски": http://www.bcbdev.ru/msdn/index.php
Обновления на сайте
Нет.
Перевод
Сегодня вашему вниманию представлен перевод сообщения WM_SYSCHAR.
WM_SYSCHAR
Сообщение WM_SYSCHAR посылается окну с фокусом клавиатуры тогда, когда сообщение
WM_SYSKEYDOWN оттранслировано функцией TranslateMessage . Оно определяет символьный
код системной клавиши - то есть знака клавиши, которая была нажата одновременно
с клавишей ALT.
Окно получает это сообщение через функцию WindowProc
LRESULT CALLBACK WindowProc(
HWND hwnd, // дескриптор окна
UINT uMsg, // WM_SYSCHAR
WPARAM wParam, // символьный код(TCHAR)
LPARAM lParam // данные клавиши
);
Параметры
wParam
Определяет символьный код клавиши меню окна.
lParam
Определяет счет повторения, скэн-код, флажок дополнительной клавиши, контекстный
код, предыдущий флажок состояния клавиши, и флажок переходного состояния, как
показано в следующей таблице. Значение Описание
0–15 Определяет счетчик повторов для текущего сообщения. Значение - число автоматических
повторений нажатий клавиши как результат задержки клавиши пользователем в нажатом
состоянии. Если нажатие клавиши довольно продолжительное, сообщение посылается
многократно. Однако счётчик повторов не комулятивен.
16–23 Определяет скэн-код. Значение зависит от первоначального изготовителя оборудования
(OEM).
24 Определяет, является ли клавиша расширенной клавишей, типа правого ALT и клавиши
CTRL, которые появляются на усовершенствованных 101-или 102-клавишных клавиатурах.
Значение - 1, если это - расширенная клавиша; иначе - 0.
25–28 Резерв; не использовать.
29 Определяет контекстный код. Значение - 1, если нажата клавиша ALT во время
нажатия клавиши; иначе, значение - 0.
30 Определяет предыдущее состояние клавиши. Значение - 1, если клавиша нажата
прежде, чем послано сообщение, или 0, если клавиша отжата.
31 Определяет переходное состояние. Значение - 1, если клавиша отпускается, или
0, если клавиша нажимается.
Возвращаемое значение
Приложение должно вернуть ноль, если оно обрабатывает это сообщение.
Примечания
Когда контекстный код - ноль, сообщение должно быть передано функции TranslateAccelerator,
которая обработает дескриптор сообщения, как если бы это было сообщением от стандартной
клавиши вместо сообщения системной клавиши. Это позволяет оперативным клавишам
использоваться с активным окном, даже если активное окно не имеет фокуса ввода.
Для усовершенствованной 101-и 102-клавишной клавиатуры, расширенные клавиши -
главный раздел клавиатуры включает правый ALT и, CTRL; INS, DEL, HOME, END, PAGE
UP, PAGE DOWN и клавиши курсора; в кластере слева от цифровой клавиатуры клавиша
PRINT SCRN, клавиша BREAK, клавиша NUMLOCK, деление (/) и ENTER на цифровой
клавиатуре. Другие клавиатуры могут поддерживать биты дополнительных клавиш в
параметре lParam.
Требования
Windows NT/2000/XP: Требуется Windows NT 3.1 или более поздняя версия.
Windows 95/98: Требуется Windows 95 или более поздняя версия.
Заголовочный файл: Объявлено в Winuser.h; подключить Windows.h.
Смотри также
TranslateAccelerator, TranslateMessage, WM_SYSKEYDOWN
Справочник по WinAPI: http://www.bcbdev.ru/winapi/win32api.exe
Справочник по WinAPI (zip-версия): http://www.bcbdev.ru/winapi/win32api.zip
Дружественная рассылка "Программирование на WinAPI": http://subscribe.ru/catalog/comp.soft.prog.russianmsdn
С уважением,
ведущий рассылки
Тарас Сорока.
mailto:tnsoroka@ua.fm