virtual key
character key — клавиша знака
escape key — клавиша перехода
break key — клавиша прерывания
reset key — клавиша перезагрузки
membrane key — мембранная клавиша
English-Russian dictionary of Information technology . 2005 .
Смотреть что такое «virtual key» в других словарях:
Virtual keyboard — This article is about the type of software. For virtual keyboard that can be projected and touched on any surface, see projection keyboard. Typing on a iPad s virtual keyboard A virtual keyboard is a software component that allows a user to enter … Wikipedia
Virtual synchrony — is an interprocess messaging passing (sometimes called event queue management) technology. Virtual synchrony systems allow programs running in a network to organize themselves into process groups , and to send messages to groups (as opposed to… … Wikipedia
Virtual Magic Kingdom — Developer(s) Walt Disney Parks and Resorts Sulake Corporation Publisher(s) Walt Disney Parks and Resorts … Wikipedia
Virtual engineering — is defined as integrating geometric models and related engineering tools such as analysis, and simulation, optimization, and decision making tools, etc., within a computer generated environment that facilitates multidisciplinary collaborative… … Wikipedia
Virtual storage access method — (VSAM) is an IBM disk file storage access method, first used in the OS/VS2 operating system, later used throughout the Multiple Virtual Storage (MVS) architecture and now in z/OS. Originally a record oriented filesystem, VSAM comprises four data… … Wikipedia
Virtual jury research — is a technique used by lawyers to prepare for trial.For many decades, attorneys have employed jury consultants to conduct jury research to help prepare for trial. The goals of such research vary: to assess the case and to discover its primary… … Wikipedia
Virtual help desk — A virtual help desk allows IT support organizations to virtually deploy IT technicians on demand to support a computer user experiencing technical issues. IT can efficiently manage and allocate global help desk resources, including – most… … Wikipedia
Virtual water — (also known as embedded water, embodied water, or hidden water) refers, in the context of trade, to the water used in the production of a good or service. For instance, it takes 1,300 cubic meters of water on average to produce one metric tonne… … Wikipedia
Virtual drive — Virtual disc redirects here. It is not to be confused with Virtual disk image. A virtual drive in computing is a device that to the operating system appears to be an ordinary physical disk drive, with disc images substituted for disc reading… … Wikipedia
Virtual Graffiti — consists of virtual objects and/or digital messages, images, multimedia or other annotations or graphics applied to public locations, landmarks or surfaces such as walls, train stations, bridges, etc. Virtual Graffiti applications utilize Virtual … Wikipedia
Virtual Storage Access Method — (VSAM, „Methode für Zugriff auf virtuellen Speicher“) ist eine Zugriffsmethode auf Dateien, die auf IBM Großrechnersystemen verwendet werden. Die Namensgebung basiert auf der Idee, Dateiinhalte wie Zellen im (virtuellen) Hauptspeicher adressieren … Deutsch Wikipedia
Virtual Key Enum
Definition
Specifies the values for each virtual key.
The keys listed below are virtual, which means that they are not the physical keys or buttons on an attached keyboard or device, but an abstract mapping of those keys that may be connected to hardware that provides either those keys and buttons or an interface that simulates their physical behavior (such as an onscreen touch keyboard).
Windows 10 requirements
Fields
The letter «A» key.
The accept button or key.
The add (+) operation key as located on a numeric pad.
The application key or button.
The letter «B» key.
The virtual back key or button.
The letter «C» key.
The cancel key or button
The Caps Lock key or button.
The Clear key or button.
The Ctrl key. This is the general Ctrl case, applicable to key layouts with only one Ctrl key or that do not need to differentiate between left Ctrl and right Ctrl keystrokes.
The convert button or key.
The letter «D» key.
The decimal (.) key as located on a numeric pad.
The divide (/) operation key as located on a numeric pad.
The Down Arrow key.
The letter «E» key.
The execute key or button.
The letter «F» key.
The F1 function key.
The F10 function key.
The F11 function key.
The F12 function key.
The F13 function key.
The F14 function key.
The F15 function key.
The F16 function key.
The F17 function key.
The F18 function key.
The F19 function key.
The F2 function key.
The F20 function key.
The F21 function key.
The F22 function key.
The F23 function key.
The F24 function key.
The F3 function key.
The F4 function key.
The F5 function key.
The F6 function key.
The F7 function key.
The F8 function key.
The F9 function key.
The favorites key.
The Final symbol key-shift button.
The letter «G» key.
The gamepad A button.
The gamepad B button.
The gamepad d-pad down.
The gamepad d-pad left.
The gamepad d-pad right.
The gamepad d-pad up.
The gamepad left shoulder.
The gamepad left thumbstick button.
The gamepad left thumbstick down.
The gamepad left thumbstick left.
The gamepad left thumbstick right.
The gamepad left thumbstick up.
The gamepad left trigger.
The gamepad menu button.
The gamepad right shoulder.
The gamepad right thumbstick button.
The gamepad right thumbstick down.
The gamepad right thumbstick left.
The gamepad right thumbstick right.
The gamepad right thumbstick up.
The gamepad right trigger.
The gamepad view button.
The gamepad X button.
The gamepad Y button.
The go back key.
The go forward key.
The go home key.
The letter «H» key.
The Hangul symbol key-shift button.
The Hanja symbol key shift button.
The Help key or button.
The letter «I» key.
The letter «J» key.
The Junja symbol key-shift button.
The letter «K» key.
The Kana symbol key-shift button
The Kanji symbol key-shift button.
The letter «L» key.
The Left Arrow key.
The left mouse button.
The left Ctrl key.
The left menu key.
The left Shift key.
The left Windows key.
The letter «M» key.
The menu key or button.
The middle mouse button.
The mode change key.
The multiply (*) operation key as located on a numeric pad.
The letter «N» key.
The navigation accept button.
The navigation cancel button.
The navigation down button.
The navigation left button.
The navigation menu button.
The navigation right button.
The navigation up button.
The navigation up button.
The nonconvert button or key.
No virtual key value.
The number «0» key.
The number «1» key.
The number «2» key.
The number «3» key.
The number «4» key.
The number «5» key.
The number «6» key.
The number «7» key.
The number «8» key.
The number «9» key.
The Num Lock key.
The number «0» key as located on a numeric pad.
The number «1» key as located on a numeric pad.
The number «2» key as located on a numeric pad.
The number «3» key as located on a numeric pad.
The number «4» key as located on a numeric pad.
The number «5» key as located on a numeric pad.
The number «6» key as located on a numeric pad.
The number «7» key as located on a numeric pad.
The number «8» key as located on a numeric pad.
The number «9» key as located on a numeric pad.
The letter «O» key.
The letter «P» key.
The Page Down key.
The Page Up key.
The Pause key or button.
The Print key or button.
The letter «Q» key.
The letter «R» key.
The refresh key.
The Right Arrow key.
The right mouse button.
The right Ctrl key.
The right menu key.
The right Shift key.
The right Windows key.
The letter «S» key.
The Scroll Lock (ScrLk) key.
The Select key or button.
The separator key as located on a numeric pad.
The Shift key. This is the general Shift case, applicable to key layouts with only one Shift key or that do not need to differentiate between left Shift and right Shift keystrokes.
The sleep key or button.
The snapshot key or button.
The Spacebar key or button.
The subtract (-) operation key as located on a numeric pad.
The letter «T» key.
The letter «U» key.
The Up Arrow key.
The letter «V» key.
The letter «W» key.
The letter «X» key.
An additional «extended» device key or button (for example, an additional mouse button).
An additional «extended» device key or button (for example, an additional mouse button).
The letter «Y» key.
The letter «Z» key.
Remarks
This enum is used with the Key property of a KeyboardAccelerator object. For more information, including code examples, see Keyboard Accelerators.
Операционная система Microsoft Windows 3.1 для программиста
5.2. Параметры клавиатурных сообщений
Сообщения WM_KEYDOWN, WM_KEYUP, WM_SYSKEYDOWN, WM_SYSKEYUP передают информацию о нажатой клавише через параметры lParam и wParam.
Параметр lParam для этих сообщений содержит информацию низкого уровня, такую, как скан-код, счетчик повторов, флаг предыдущего состояния клавиши и т. п. Эта информация редко используется приложениями Windows.
Параметр wParam содержит код виртуальной клавиши, соответствующей нажатой физической клавише. Именно этот параметр используется приложениями для идентификации нажатой клавиши.
Приведем описание отдельных бит парамера lParam.
Бит | Описание |
0-15 | Счетчик повторов. Если нажать клавишу и держать ее в нажатом состоянии, несколько сообщений WM_KEYDOWN и WM_SYSKEYDOWN будут слиты в одно. Количество объединенных таким образом сообщений |
16-23 | OEM скан-код клавиши. Изготовители аппаратуры (OEM — Original Equipment Manufacturer) могут заложить в своей клавиатуре различное соответствие скан-кодов и обозначений клавиш. Скан-код генерируется клавиатурным контроллером. Это тот самый код, который получают в регистре AH программы MS-DOS, вызывая прерывание INT16h |
24 | Флаг расширенной клавиатуры. Этот бит установлен в 1, если сообщение соответствует клавише, имеющейся только на расширенной 101- или 102-клавишной клавиатуре. Это может быть одна из следующих клавиш: , , , , , клавиши дополнительной клавиатуры. |
25-26 | Не используются |
27-28 | Зарезервированы для использования Windows |
29 | Код контекста. Этот бит равен 1, если сообщение соответствует комбинации клавиши с любой другой, и 0 в противном случае |
30 | Предыдущее состояние клавиши. Если перед приходом сообщения клавиша, соответствующая сообщению, была в нажатом состоянии, этот бит равен 1. В противном случае бит равен 0 |
31 | Флаг изменения состояния клавиши (transition state). Если клавиша была нажата, бит равен 0, если отпущена — 1 |
Если нажать клавишу и оставить ее в нажатом состоянии, функция окна может получить подряд несколько сообщений WM_KEYDOWN, прежде чем придет сообщение WM_KEYUP. В этом случае бит предыдущего состояния клавиши (бит 30) можно использовать для обнаружения сообщений, возникших в результате включения автоповтора клавиатуры. Приложение может игнорировать такие сообщения, исключая эффект накопления, когда приложение не может обрабатывать сообщения с такой скоростью, с какой они поступают. Например, если вы будете долго держать клавишу пролистывания страниц в текстовом редакторе, то после того, как вы ее отпустите, текстовый редактор будет еще долго листать ваш документ.
Для сообщений WM_KEYDOWN и WM_KEYUP значение кода контекста (бит 29) и флага изменения состояния (бит 31) всегда равно 0.
Для сообщений WM_SYSKEYUP и WM_SYSKEYDOWN бит 31 равен 1. Но есть два исключения.
Во-первых, если активное окно свернуто в пиктограмму, все сообщения от клавиатуры преобразовываются в системные и, если клавиша не нажата, код контекста равен 0.
Во-вторых, на некоторых клавиатурах для ввода символов национального языка могут использоваться комбинации с участием клавиш , , и т. п. В этом случае код контекста может быть равен 1, хотя сообщение не является системным.
Обработчик клавиатурного сообщения должен возвратить значение 0 для всех перехваченных сообщений.
Теперь мы расскажем вам о параметре wParam.
Как мы уже говорили, этот параметр содержит код виртуальной клавиши, соответствующей нажатой физической клавише. Код виртуальной клавиши не зависит от аппаратной реализации клавиатуры.
Многие коды виртуальных клавиш имеют символьное обозначение, определенное в файле windows.h. Приведем полный список кодов виртуальных клавиш. Те из них, которые определены в файле windows.h, имеют префикс VK_ (от слов Virtual Key).
Символическое имя | Код виртуальной клавиши | Клавиша, которой соответствует данный код | Клавиша на клавиатуре IBM PC |
Не определено | 0x0 | ||
VK_LBUTTON | 0x1 | Левая клавиша мыши | |
VK_RBUTTON | 0x2 | Правая клавиша мыши | |
VK_CANCEL | 0x3 | ||
VK_MBUTTON | 0x4 | Средняя клавиша мыши | |
Не определено | 0x5 — 0x7 | Не определено | |
VK_BACK | 0x8 | Клавиша забоя | Клавиша забоя |
VK_TAB | 0x9 | Клавиша табулятора | |
Не определено | 0xa — 0xb | Не определено | |
VK_CLEAR | 0xc | CLEAR | Соответствует клавише дополнительной клавиатуры при выключенном режиме |
VK_RETURN | 0xd | RETURN | |
Не определено | 0xe — 0xf | Не определено | |
VK_SHIFT | 0x10 | SHIFT | |
VK_CONTROL | 0x11 | CONTROL | |
VK_MENU | 0x12 | MENU | |
VK_PAUSE | 0x13 | PAUSE | |
VK_CAPITAL | 0x14 | CAPITAL | |
Не определено | 0x15 — 0x19 | Зарезервировано для систем Kanji | |
Не определено | 0x1a | Не определено | |
VK_ESCAPE | 1b | ESCAPE | |
Не определено | 0x1c — 0x1f | Не определено | |
VK_SPACE | 0x20 | Клавиша пробела SPACEBAR | Клавиша пробела |
VK_PRIOR | 0x21 | PAGE UP | |
VK_END | 0x23 | END | |
VK_HOME | 0x24 | HOME | |
VK_LEFT | 0x25 | Перемещение курсора влево LEFT ARROW | Клавиша перемещения курсора влево |
VK_UP | 0x26 | Перемещение курсора вверх UP ARROW | Клавиша перемещения курсора вверх |
VK_RIGHT | 0x27 | Перемещение курсора вправо RIGHT ARROW | Клавиша перемещения курсора вправо |
VK_DOWN | 0x28 | Перемещение курсора вниз DOWN ARROW | Клавиша перемещения курсора вниз |
VK_SELECT | 0x29 | SELECT | |
VK_PRINT | 0x2a | Зависит от изготовителя клавиатуры | |
VK_EXECUTE | 0x2b | EXECUTE | |
VK_SNAPSHOT | 0x2c | PRINTSCREEN | |
VK_INSERT | 0x2d | INSERT | |
VK_DELETE | 0x2e | DELETE | |
VK_HELP | 0x2f | HELP | |
Не определено | 0x30 | 0 | |
Не определено | 0x31 | 1 | |
Не определено | 0x32 | 2 | |
Не определено | 0x33 | 3 | |
Не определено | 0x34 | 4 | |
Не определено | 0x35 | 5 | |
Не определено | 0x36 | 6 | |
Не определено | 0x37 | 7 | |
Не определено | 0x38 | 8 | |
Не определено | 0x39 | 9 | |
Не определено | 0x3a — 0x40 | Не определено | |
Не определено | 0x41 | A | |
Не определено | 0x42 | B | |
Не определено | 0x43 | C | |
Не определено | 0x44 | D | |
Не определено | 0x45 | E | |
Не определено | 0x46 | F | |
Не определено | 0x47 | G | |
Не определено | 0x48 | H | |
Не определено | 0x49 | I | |
Не определено | 0x4a | J | |
Не определено | 0x4b | K | |
Не определено | 0x4c | L | |
Не определено | 0x4d | M | |
Не определено | 0x4e | N | |
Не определено | 0x4f | O | |
Не определено | 0x50 | P | |
Не определено | 0x51 | Q | |
Не определено | 0x52 | R | |
Не определено | 0x53 | S | |
Не определено | 0x54 | T | |
Не определено | 0x55 | U | |
Не определено | 0x56 | V | |
Не определено | 0x57 | W | |
Не определено | 0x58 | X | |
Не определено | 0x59 | Y | |
Не определено | 0x5a | Z | |
Не определено | 0x5b — 0x5f | Не определено | |
VK_NUMPAD0 | 0x60 | 0 на цифровой клавиатуре | на цифровой клавиатуре |
VK_NUMPAD1 | 0x61 | 1 на цифровой клавиатуре | на цифровой клавиатуре |
VK_NUMPAD2 | 0x62 | 2 на цифровой клавиатуре | на цифровой клавиатуре |
VK_NUMPAD3 | 0x63 | 3 на цифровой клавиатуре | на цифровой клавиатуре |
VK_NUMPAD4 | 0x64 | 4 на цифровой клавиатуре | на цифровой клавиатуре |
VK_NUMPAD5 | 0x65 | 5 на цифровой клавиатуре | на цифровой клавиатуре |
VK_NUMPAD6 | 0x66 | 6 на цифровой клавиатуре | на цифровой клавиатуре |
VK_NUMPAD7 | 0x67 | 7 на цифровой клавиатуре | на цифровой клавиатуре |
VK_NUMPAD8 | 0x68 | 8 на цифровой клавиатуре | на цифровой клавиатуре |
VK_NUMPAD9 | 0x69 | 9 на цифровой клавиатуре | на цифровой клавиатуре |
VK_MULTIPLAY | 0x6a | Клавиша умножения | на цифровой клавиатуре |
VK_ADD | 0x6b | Клавиша сложения | на цифровой клавиатуре |
VK_SEPARATOR | 0x6c | Клавиша разделения | |
VK_SUBTRACT | 0x6d | Клавиша вычитания | на цифровой клавиатуре |
VK_DECIMAL | 0x6e | Клавиша десятичной точки | на цифровой клавиатуре |
VK_DIVIDE | 0x6f | Клавиша деления | на цифровой клавиатуре |
VK_F1 | 0x70 | F1 | |
VK_F2 | 0x71 | F2 | |
VK_F3 | 0x72 | F3 | |
VK_F4 | 0x73 | F4 | |
VK_F5 | 0x74 | F5 | |
VK_F6 | 0x75 | F6 | |
VK_F7 | 0x76 | F7 | |
VK_F8 | 0x77 | F8 | |
VK_F9 | 0x78 | F9 | |
VK_F10 | 0x79 | F10 | |
VK_F11 | 0x7a | F11 | |
VK_F12 | 0x7b | F12 | |
VK_F13 | 0x7c | F13 | |
VK_F14 | 0x7d | F14 | |
VK_F15 | 0x7e | F15 | |
VK_F16 | 0x7f | F16 | |
Не определено | 0x80 — 0x87 | Зависит от изготовителя клавиатуры | |
Не определено | 0x88 — 0x8f | Не определено | |
VK_NUMLOCK | 0x90 | NUM LOCK | |
VK_SCROLL | 0x91 | SCROLL LOCK | |
Не определено | 0x92 — 0xb9 | Не определено | |
Не определено | 0xba | Клавиша знака пунктуации | ; |
Не определено | 0xbb | Плюс | + = |
Не определено | 0xbc | Запятая | , |
Не определено | 0xbf | Клавиша знака пунктуации | / ? |
Не определено | 0xc0 | Клавиша знака пунктуации | ` |
Не определено | 0xc1 — 0xda | Не определено | |
Не определено | 0xdb | Клавиша знака пунктуации | [ < |
Не определено | 0xdc | Клавиша знака пунктуации | \ | |
Не определено | 0xdd | Клавиша знака пунктуации | ] > |
Не определено | 0xde | Клавиша знака пунктуации | ‘ « |
Не определено | 0xdf | Клавиша знака пунктуации | |
Не определено | 0xe0 — 0xe1 | Зависит от изготовителя клавиатуры | |
Не определено | 0xe2 | Знак неравенства | |
Не определено | 0xe3 — 0xe4 | Зависит от изготовителя клавиатуры | |
Не определено | 0xe5 | Не определено | |
Не определено | 0xe6 | Зависит от изготовителя клавиатуры | |
Не определено | 0xe7 — 0xe8 | Не определено | |
Не определено | 0xe9 — 0xf5 | Зависит от изготовителя клавиатуры | |
Не определено | 0xf6 — 0xff | Не определено |
Рассматривая приведенную выше таблицу, нетрудно заметить, что в ней есть коды виртуальных клавиш, которые невозможно получить в компьютере с IBM-совместимой клавиатурой. Кроме того, используя только эти коды, невозможно различить строчные и прописные буквы.
Для определения состояния клавиш , , , сразу после получения сообщения функция окна должна вызвать функцию с именем GetKeyState, которая входит в программный интерфейс Windows. Приведем прототип этой функции:
Параметр функции vkey должен указывать код виртуальной клавиши, для которой необходимо вернуть состояние.
Старший бит возвращаемого значения, установленный в 1, говорит о том, что указанная клавиша была нажата. Если этот бит равен 0, клавиша не была нажата.
Младший бит возвращаемого значения указывает состояние переключения. Если он равен 1, клавиша (такая, как или ) находится во включенном состоянии, то есть она была нажата нечетное число раз после включения компьютера. Учтите, что при помощи программы установки параметров компьютера SETUP, расположенной в BIOS, вы можете задать произвольное состояние переключающих клавиш после запуска системы.
Функция GetKeyState возвращает состояние клавиши на момент извлечения сообщения из очереди приложения функцией GetMessage.
Параметр функции vkey должен указывать код виртуальной клавиши, для которой необходимо вернуть состояние.
Старший бит возвращаемого значения, установленный в 1, говорит о том, что указанная клавиша была нажата в момент вызова функции. Если этот бит равен 0, клавиша не была нажата.
Младший бит возвращаемого значения установлен в 1, если указанная клавиша была нажата с момента последнего вызова функции GetAsyncKeyState.
Если для функции в качестве параметра задать значения VK_LBUTTON или VK_RBUTTON, можно узнать состояние клавиш, расположенных на корпусе мыши.
Есть возможность определить и изменить состояние для всех клавиш одновременно.
Для определения состояния клавиш воспользуйтесь функцией GetKeyboardState:
Единственный параметр lpbKeyState этой функции — дальний указатель на массив из 256 байт. После вызова функции этот массив будет заполнен информацией о состоянии всех виртуальных клавиш в момент генерации клавиатурного сообщения. В этом смысле функция аналогична функции GetKeyState.
Для любого байта массива установленный в 1 старший бит означает, что соответствующая клавиша была нажата. Если этот бит равен 0, клавиша не была нажата. Младший бит, установленный в 1, означает, что клавиша была переключена. Если младший бит равен 0, клавиша не была переключена.
После вызова функции GetKeyboardState вы можете изменить содержимое массива и вызвать функцию SetKeyboardState, изменяющую состояние клавиатуры:
Функция GetKeyboardType позволит вам определить тип клавиатуры и количество имеющихся на ней функциональных клавиш:
В зависимости от значения параметра fnKeybInfo функция может возвращать различную информацию о клавиатуре.
Если задать значение параметра fnKeybInfo, равное 0, функция вернет код типа клавиатуры:
Код | Тип клавиатуры | Количество функциональных клавиш |
1 | Клавиатура IBM PC/XT или совместимая, 83-клавишная | 10 |
2 | Клавиатура Olivetti «ICO», 102-клавишная | 12 (иногда 18) |
3 | Клавиатура IBM AT или аналогичная, 84-клавишная | 10 |
4 | Клавиатура IBM Enhanced (улучшенная), 101- или 102-клавишная | 12 |
5 | Клавиатура Nokia 1050 или аналогичная | 10 |
6 | Клавиатура Nokia 9140 или аналогичная | 24 |
7 | Японская клавиатура | Зависит от аппаратуры |
Если задать значение параметра, равное 1, функция вернет код подтипа клавиатуры.
И наконец, если задать значение параметра, равное 2, функция вернет количество функциональных клавиш, имеющихся на клавиатуре.
Интересна также функция GetKeyNameText, возвращающая для заданного кода виртуальной клавиши название соответствующей клавиши в виде текстовой строки. Названия виртуальных клавиш определены в драйвере клавиатуры.
Приведем прототип функции GetKeyNameText:
Первый параметр функции lParam должен определять клавишу в формате компоненты lParam клавиатурного сообщения. Вы можете использовать в качестве этого параметра значение lParam, полученное функцией окна вместе с любым клавиатурным сообщением, таким, как WM_KEYDOWN или WM_SYSKEYDOWN.
Второй параметр — lpszBuffer является указателем на буфер, в который будет записано название клавиши.
Третий параметр — cbMaxKey должен быть равен длине буфера, уменьшенной на 1.
Приведем исходный текст приложения KBTYPE, определяющего тип и подтип клавиатуры, а также количество функциональных клавиш (листинг 5.1).
Листинг 5.1. Файл kbtype\kbtype.cpp
Приложение использует файл определения модуля, приведенный в листинге 5.2.
Листинг 5.2. Файл kbtype\kbtype.def
Работа приложения KBTYPE понятна без дополнительных комментариев. Единственное, на чем нам хотелось бы остановиться, так это на использовании для подготовки текстового буфера функции wsprintf.
Функция wsprintf входит в ядро Windows и используется аналогично функции sprintf. Эта функция определена в файле windows.h следующим образом:
Первый параметр функции является дальним указателем на буфер, в который будет записана сформированная текстовая строка, закрытая двоичным нулем.
Второй параметр — указатель на строку формата, определяющую формат строки, которая будет записана в буфер. Допустимо использовать следующие спецификаторы форматов вывода:
Спецификатор | Формат |
c | Один символ |
d, i | Целое число со знаком |
ld, li | Двойное целое число со знаком |
u | Целое число без знака |
lu | Двойное целое число без знака |
lx, lX | Двойное целое число без знака в шестнадцатеричном формате строчными или прописными буквами |
s | Текстовая строка |
Далее следует произвольное число переменных, описанных в строке формата. Так как функции передается переменное число параметров, она (в отличие от подавляющего большинства функций программного интерфейса Windows) использует для передачи параметров соглашение языка Си, а не Паскаль.
Для вывода текстовых строк необходимо использовать явное преобразование типа, как это сделано в нашем примере:
Функция возвращает количество байт, записанных в выходной буфер, без учета двоичного нуля, закрывающего текстовую строку.
На рис. 5.1 представлено сообщение, которое было выведено при запуске приложения KBTYPE на компьютере одного из авторов этой книги.
Рис. 5.1. Сообщение приложения KBTYPE
Прежде чем перейти к следующему разделу, приведем исходные тексты еще одного приложения, демонстрирующего использование функций GetKeyboardState и SetKeyboardState для изменения состояния клавиш , , . Это приложение называется KBLED. Исходный текст основного файла приложения приведен в листинге 5.3.
Листинг 5.3. Файл kbled\kbled.cpp
Это простое приложение выводит на экран сообщение, в котором говорится, что для переключения состояния виртуальных клавиш надо нажать кнопку «OK». Когда вы нажмете эту кнопку, состояние трех виртуальных клавиш изменится на противоположное. Это нетрудно проконтролировать при помощи светодиодов, расположенных на клавиатуре: все они должны изменить свое состояние на противоположное.
Когда вы ответите на второе сообщение, приложение возвратит исходное состояние клавиш (и светодиодов).
Файл определения модуля для приложения KBLED приведен в листинге 5.4.