Операционная система Microsoft Windows 3.1 для программиста -том 1


Параметры клавиатурных сообщений - часть 5


Интересна также функция GetKeyNameText, возвращающая для заданного кода виртуальной клавиши название соответствующей клавиши в виде текстовой строки. Названия виртуальных клавиш определены в драйвере клавиатуры.

Приведем прототип функции GetKeyNameText:

int WINAPI GetKeyNameText(LONG lParam, LPSTR lpszBuffer, int cbMaxKey);

Первый параметр функции lParam должен определять клавишу в формате компоненты lParam клавиатурного сообщения. Вы можете использовать в качестве этого параметра значение lParam, полученное функцией окна вместе с любым клавиатурным сообщением, таким, как WM_KEYDOWN или WM_SYSKEYDOWN.

Второй параметр - lpszBuffer является указателем на буфер, в который будет записано название клавиши.

Третий параметр - cbMaxKey должен быть равен длине буфера, уменьшенной на 1.

Приведем исходный текст приложения KBTYPE, определяющего тип и подтип клавиатуры, а также количество функциональных клавиш (листинг 5.1).

Листинг 5.1. Файл kbtype\kbtype.cpp

// ---------------------------------------- // Определение типа клавиатуры // ----------------------------------------

#define STRICT #include <windows.h>

#pragma argsused int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int nCmdShow) { // Рабочий буфер char szBuf[80];

// Рабочие переменные int type, subtype, nfkeys, size;

// Типы клавиатур char *apszKbTypes[] = { "IBM PX/XT", "Olivetti ICO", "IBM AT", "IBM Enhanced", "Nokia 1050", "Nokia 9140", "Японская", };

// Определяем тип клавиатуры type = GetKeyboardType(0);

// Он должен лежать в интервале от // 1 до 7. Если это не так, завершаем // работу приложения с сообщением об ошибке if (type == 0 type > 7) { MessageBox(NULL, "Ошибка в типе клавиатуры", "KBTYPE Application", MB_ICONSTOP); return 0; }

// Определяем подтип клавиатуры subtype = GetKeyboardType(1);

// Определяем количество функциональных // клавиш nfkeys = GetKeyboardType(2);




Начало  Назад  Вперед



Книжный магазин