Files
mikhail e1337e4016 feat(sdk-docs): MD-база знаний SDK — в репозиторий; генератор и зеркало убраны
docs/Kompas3D_SDK/ становится каноническим источником справки КОМПАС SDK
и включается в репозиторий (2491 файл, ~14 МБ). HTML-зеркало
docs/KOMPAS_SDK_ru-RU/ (~1.4 ГБ, © АСКОН) и генератор
tools/build_kompas3d_sdk.py больше не нужны — регенерация не предполагается.

- .gitignore: MD-база разблокирована; зеркало остаётся проигнорированным
  (safety-net на случай повторной локальной выгрузки).
- CLAUDE.md / SKILL.md: убраны упоминания регенерации и зеркала.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-26 20:00:05 +03:00

20 KiB

title, type, api, tags, sources
title type api tags sources
WM_KEYDOWN guide
api7
guide
api7
wm
wm_keydown.html

WM_KEYDOWN

Событие WM_KEYDOWN посылается в окно с клавиатурным фокусом, если была нажата несистемная клавиша. Синтаксис:

WM_KEYDOWN nVirtKey = (int) wParam; KeyData = lParam;

Параметры:

wParam - код виртуальной клавиши,
lParamLo - количество повторений кода клавиши за время удержания ее в нажатом состоянии,
LParamHi биты 0-7: scan-код клавиши, зависящий от OEM; бит 8: 1, если клавиша относится к расширенным, бит 13: 1, если при нажатии клавиши была нажата , бит 14: 1, если клавиша была нажата до возникновения события, бит 15: 1, если после события клавиша отпущена, 0, если после события клавиша остается нажатой.
Возвращаемое значение:
Не используется.
Умолчательное действие:
Если нажата клавиша , функция DEFWINDOWPROC устанавливает внутренний флаг. Когда DEFWINDOWPROC принимает событие WM_KEYUP, она проверяет, установлен ли внутренний флаг, и если это так, посылает событие WM_SYSCOMMAND в окно верхнего уровня. Значение параметра wParam становится равным SC_KEYMENU.
Примечание:
  1. Приложение должно вернуть 0, если оно обрабатывает это событие.
  2. Для этого события биты 13 и 15 в lParamHi будут нулевыми.
  3. Если ни одно из окон не имеет клавиатурного фокуса, то вместо событий WM_KEYDOWN, WM_CHAR и WM_KEYUP посылаются события WM_SYSKEYDOWN, WM_SYSCHAR и WM_SYSKEYUP.
  4. Благодаря автоматическому повторению кода клавиши при удержанию ее нажатой, до появления события WM_KEYUP может выдаваться несколько событий WM_KEYDOWN. Значение разряда 30 параметра flags позволяет определить, было ли событие WM_KEYDOWN первым или или является повторным во время удержания клавиши нажатой.
  5. Для расширенных 101 и 102 клавишных клавиатур расширенными клавишами являются следующие: •правый and на основной клавиатуре, •, , , , , и клавиши со cтрелками в группах слева от дополнительной цифровой клавиатуры, •</> и на дополнительной цифровой клавиатуре. Другие клавиатуры могут поддерживать бит расширенной клавиатуры при помощи параметра lParam. См. также: WM_DEADCHAR, WM_SYSCHAR и WM_SYSDEADCHAR.

WM_KEYUP

Событие WM_KEYDOWN посылается в окно с клавиатурным фокусом, если была отпущена несистемная клавиша. Синтаксис:

WM_KEYUP nVirtKey = (int) wParam; lKeyData = lParam;

Параметры:

wParam - код виртуальной клавиши,
lParamLo - количество повторений кода клавиши за время удержания ее в нажатом состоянии,
LParamHi биты 0-7: scan-код клавиши, зависящий от OEM; бит 8: 1, если клавиша относится к расширенным, бит 13: 1, если при нажатии клавиши была нажата , бит 14: 1, если клавиша была нажата до возникновения события, бит 15: 1, если после события клавиша отпущена, 0, если после события клавиша остается нажатой.
Возвращаемое значение:
Не используется.
Умолчательное действие:
Функция DEFWINDOWPROC посылает событие WM_SYSCOMMAND в окно верхнего уровня, если или была отпущена. Значение параметра wParam становится равным SC_KEYMENU.
Примечание:
  1. Приложение должно вернуть 0, если оно обрабатывает это событие.
  2. Для этого события биты 13 и 15 в lParamHi будут нулевыми.
  3. Если ни одно из окон не имеет клавиатурного фокуса, то вместо события WM_KEYUP посылается событие WM_SYSKEYUP.
  4. Благодаря автоматическому повторению кода клавиши при удержанию ее нажатой, до появления события WM_KEYUP может выдаваться несколько событий WM_KEYDOWN. Значение разряда 30 параметра flags позволяет определить, было ли событие WM_KEYDOWN первым или или является повторным во время удержания клавиши нажатой.
  5. Для расширенных 101 и 102 клавишных клавиатур расширенными клавишами являются следующие: •правый and на основной клавиатуре, •, , , , , и клавиши со cтрелками в группах слева от дополнительной цифровой клавиатуры, •</> и на дополнительной цифровой клавиатуре. Другие клавиатуры могут поддерживать бит расширенной клавиатуры при помощи параметра lParam.

WM_SYSCHAR

Это событие посылается в окно с клавиатурным фокусом, когда событие WM_SYSKEYDOWN обрабатывается функцией TRANSLATEMESSAGE. Оно позволяет получить код символа нажатой системной клавиши, то есть клавиши, которая была нажата при нажатой . Синтаксис:: WM_SYSCHAR chCharCode = (TCHAR) wParam;KeyData = lParam; Параметры:

wParam - код клавиши вызова меню окна,
lParamLo - количество повторений кода клавиши за время удержания ее в нажатом состоянии,
IParamHi биты 0-7: scan-код клавиши, зависящий от OEM; бит 8: 1, если клавиша относится к расширенным, бит 13: 1, если при нажатии клавиши была нажата , бит 14: 1, если клавиша была нажата до возникновения события, бит 15: 1, если после события клавиша отпущена, 0, если после события клавиша остается нажатой.
Возвращаемое значение:
Не используется.
Умолчательное действие:
Функция DEFWINDOWPROC посылает событие WM_SYSCOMMAND в окно верхнего уровня если или была отпущена. Значение параметра wParam становится равным SC_KEYMENU.
Примечание:
  1. Приложение должно вернуть 0, если оно обрабатывает это событие.
  2. Для этого события бит 15 в lParamHi будет нулевым.
  3. Если бит 13 IParamHi (context code) параметра flags =0, это событие может проследовать для обработки функцией TRANSLATEACCELERATOR, которая обработает его как событие нажатия стандартной клавиши, вместо системной. Это позволяет использовать горячие клавиши в активном окне, даже если это окно не имеет клавиатурного фокуса.
  4. Благодаря автоматическому повторению кода клавиши при удержанию ее нажатой, до появления события WM_KEYUP может выдаваться несколько событий WM_KEYDOWN. Значение разряда 30 параметра flags позволяет определить, было ли событие WM_KEYDOWN первым или или является повторным во время удержания клавиши нажатой.
  5. Для расширенных 101 и 102 клавишных клавиатур расширенными клавишами являются следующие: •правый и на основной клавиатуре, •, , , , , и клавиши со cтрелками в группах слева от дополнительной цифровой клавиатуры, •</> и на дополнительной цифровой клавиатуре. Другие клавиатуры могут поддерживать бит расширенной клавиатуры при помощи параметра lParam.
  6. Это событие также генерируется, если нажимается без нажатой .
  7. Событие генерируется вместо WM_KEYUP, если нет окна с клавиатурным фокусом. См. также: WM_DEADCHAR, WM_CHAR и WM_SYSDEADCHAR.

WM_SYSDEADCHAR

Это событие посылается в окно с клавиатурным фокусом, когда событие WM_SYSKEYDOWN обрабатывается функцией TRANSLATEMESSAGE. Оно позволяет получить код символа нажатой пассивной системной клавиши, то есть пассивной клавиши, которая была нажата при нажатой . Синтаксис:

WM_SYSDEADCHAR chCharCode = (TCHAR) wParam; lKeyData = lParam;

Параметры:

wParam - код клавиши,
lParamLo - количество повторений кода клавиши за время удержания ее в нажатом состоянии,
IParamHi биты 0-7: scan-код клавиши, зависящий от OEM; бит 8: 1, если клавиша относится к расширенным, бит 13: 1, если при нажатии клавиши была нажата , бит 14: 1, если клавиша была нажата до возникновения события, бит 15: 1, если после события клавиша отпущена, 0, если после события клавиша остается нажатой.
Возвращаемое значение:
Не используется.
Примечание:
  1. К пассивным клавишам относятся, например, умляуты и ударения.
  2. Событие может использоваться для получения обратной связи для клавиш, нажатие которых необязательно формирует символ как таковой. См. также: WM_DEADCHAR, WM_CHAR и WM_SYSDEADCHAR.

WM_SYSKEYDOWN

Это событие посылается в окно с клавиатурным фокусом, когда клавиша нажимается при одновременно нажатой . Также оно посылается, когда ни одно из окон не имеет клавиатурного фокуса; в этом случае WM_SYSKEYDOWN посылается в активное окно. Окно, которое принимает событие, может различить эти варианты проверкой разряда 29 (context code) параметра lKeyData. Синтаксис:

WM_SYSKEYDOWN nVirtKey = (int) wParam; KeyData = lParam;

Параметры:

wParam - код виртуальной клавиши,
lParamLo - количество повторений кода клавиши за время удержания ее в нажатом состоянии,
IParamHi биты 0-7: scan-код клавиши, зависящий от OEM; бит 8: 1, если клавиша относится к расширенным, бит 13: 1, если при нажатии клавиши была нажата , бит 14: 1, если клавиша была нажата до возникновения события, бит 15: 1, если после события клавиша отпущена, 0, если после события клавиша остается нажатой.
Возвращаемое значение:
Не используется.
Умолчательное действие:
Функция DEFWINDOWPROC посылает событие WM_SYSCOMMAND в окно верхнего уровня, если F10 или была отпущена. Значение параметра wParam становится равным SC_KEYMENU.
Примечание:
  1. Приложение должно вернуть 0, если оно обрабатывает это событие.
  2. Для этого события бит 15 в lParamHi будет нулевым.
  3. Если бит 13 IParamHi (context code) параметра flags =0, это событие может проследовать для обработки функцией TRANSLATEACCELERATOR, которая обработает его как событие нажатия стандартной клавиши, вместо системной. Это позволяет использовать горячие клавиши в активном окне, даже если это окно не имеет клавиатурного фокуса.
  4. Благодаря автоматическому повторению кода клавиши при удержанию ее нажатой, до появления события WM_KEYUP может выдаваться несколько событий WM_KEYDOWN. Значение разряда 30 параметра flags позволяет определить, было ли событие WM_KEYDOWN первым или или является повторным во время удержания клавиши нажатой.
  5. Для расширенных 101 и 102 клавишных клавиатур расширенными клавишами являются следующие: •правый и на основной клавиатуре, •, , , , , и клавиши со cтрелками в группах слева от дополнительной цифровой клавиатуры, •</> и на дополнительной цифровой клавиатуре. Другие клавиатуры могут поддерживать бит расширенной клавиатуры при помощи параметра lParam.
  6. Это событие также генерируется, если нажимается без нажатой .

WM_SYSKEYUP

Это событие посылается в окно с клавиатурным фокусом, когда отпускается клавиша, которая была нажата при одновременно нажатой . Также оно посылается, когда ни одно из окон не имеет клавиатурного фокуса; в этом случае WM_SYSKEYDOWN посылается в активное окно. Окно, которое принимает событие, может различить эти варианты проверкой разряда 29 (context code) параметра lKeyData. Синтаксис:: WM_SYSKEYUP nVirtKey = (int) wParam; lKeyData = lParam; Параметры:

wParam - код виртуальной клавиши,
lParamLo - количество повторений кода клавиши за время удержания ее в нажатом состоянии,
IParamHi биты 0-7: scan-код клавиши, зависящий от OEM; бит 8: 1, если клавиша относится к расширенным, бит 13: 1, если при нажатии клавиши была нажата , бит 14: 1, если клавиша была нажата до возникновения события, бит 15: 1, если после события клавиша отпущена, 0, если после события клавиша остается нажатой.
Возвращаемое значение:
Не используется.
Умолчательное действие:
Функция DEFWINDOWPROC посылает событие WM_SYSCOMMAND в окно верхнего уровня, если или была отпущена. Значение параметра wParam становится равным SC_KEYMENU.
Примечание:
  1. Приложение должно вернуть 0, если оно обрабатывает это событие.
  2. Для этого события бит 15 в lParamHi будет нулевым.
  3. Если бит 13 IParamHi (context code) параметра flags =0, это событие может проследовать для обработки функцией TranslateAccelerator, которая обработает его как событие нажатия стандартной клавиши, вместо системной. Это позволяет использовать горячие клавиши в активном окне, даже если это окно не имеет клавиатурного фокуса.
  4. Благодаря автоматическому повторению кода клавиши при удержанию ее нажатой, до появления события WM_KEYUP может выдаваться несколько событий WM_KEYDOWN. Значение разряда 30 параметра flags позволяет определить, было ли событие WM_KEYDOWN первым или или является повторным во время удержания клавиши нажатой.
  5. Для расширенных 101 и 102 клавишных клавиатур расширенными клавишами являются следующие: •правый и на основной клавиатуре, •, , , , , и клавиши со cтрелками в группах слева от дополнительной цифровой клавиатуры, •</> и на дополнительной цифровой клавиатуре. Другие клавиатуры могут поддерживать бит расширенной клавиатуры при помощи параметра lParam.
  6. Это событие также генерируется, если нажимается без нажатой .