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>
20 KiB
title, type, api, tags, sources
| title | type | api | tags | sources | |||||
|---|---|---|---|---|---|---|---|---|---|
| WM_KEYDOWN | guide |
|
|
|
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. | |
| Примечание: |
- Приложение должно вернуть 0, если оно обрабатывает это событие.
- Для этого события биты 13 и 15 в lParamHi будут нулевыми.
- Если ни одно из окон не имеет клавиатурного фокуса, то вместо событий WM_KEYDOWN, WM_CHAR и WM_KEYUP посылаются события WM_SYSKEYDOWN, WM_SYSCHAR и WM_SYSKEYUP.
- Благодаря автоматическому повторению кода клавиши при удержанию ее нажатой, до появления события WM_KEYUP может выдаваться несколько событий WM_KEYDOWN. Значение разряда 30 параметра flags позволяет определить, было ли событие WM_KEYDOWN первым или или является повторным во время удержания клавиши нажатой.
- Для расширенных 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. | |
| Примечание: |
- Приложение должно вернуть 0, если оно обрабатывает это событие.
- Для этого события биты 13 и 15 в lParamHi будут нулевыми.
- Если ни одно из окон не имеет клавиатурного фокуса, то вместо события WM_KEYUP посылается событие WM_SYSKEYUP.
- Благодаря автоматическому повторению кода клавиши при удержанию ее нажатой, до появления события WM_KEYUP может выдаваться несколько событий WM_KEYDOWN. Значение разряда 30 параметра flags позволяет определить, было ли событие WM_KEYDOWN первым или или является повторным во время удержания клавиши нажатой.
- Для расширенных 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. | |
| Примечание: |
- Приложение должно вернуть 0, если оно обрабатывает это событие.
- Для этого события бит 15 в lParamHi будет нулевым.
- Если бит 13 IParamHi (context code) параметра flags =0, это событие может проследовать для обработки функцией TRANSLATEACCELERATOR, которая обработает его как событие нажатия стандартной клавиши, вместо системной. Это позволяет использовать горячие клавиши в активном окне, даже если это окно не имеет клавиатурного фокуса.
- Благодаря автоматическому повторению кода клавиши при удержанию ее нажатой, до появления события WM_KEYUP может выдаваться несколько событий WM_KEYDOWN. Значение разряда 30 параметра flags позволяет определить, было ли событие WM_KEYDOWN первым или или является повторным во время удержания клавиши нажатой.
- Для расширенных 101 и 102 клавишных клавиатур расширенными клавишами являются следующие:
•правый и на основной клавиатуре,
•,
, , , , и клавиши со cтрелками в группах слева от дополнительной цифровой клавиатуры, •</> и на дополнительной цифровой клавиатуре. Другие клавиатуры могут поддерживать бит расширенной клавиатуры при помощи параметра lParam. - Это событие также генерируется, если нажимается без нажатой .
- Событие генерируется вместо 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, если после события клавиша остается нажатой. |
| Возвращаемое значение: | |
| Не используется. | |
| Примечание: |
- К пассивным клавишам относятся, например, умляуты и ударения.
- Событие может использоваться для получения обратной связи для клавиш, нажатие которых необязательно формирует символ как таковой. См. также: 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. | |
| Примечание: |
- Приложение должно вернуть 0, если оно обрабатывает это событие.
- Для этого события бит 15 в lParamHi будет нулевым.
- Если бит 13 IParamHi (context code) параметра flags =0, это событие может проследовать для обработки функцией TRANSLATEACCELERATOR, которая обработает его как событие нажатия стандартной клавиши, вместо системной. Это позволяет использовать горячие клавиши в активном окне, даже если это окно не имеет клавиатурного фокуса.
- Благодаря автоматическому повторению кода клавиши при удержанию ее нажатой, до появления события WM_KEYUP может выдаваться несколько событий WM_KEYDOWN. Значение разряда 30 параметра flags позволяет определить, было ли событие WM_KEYDOWN первым или или является повторным во время удержания клавиши нажатой.
- Для расширенных 101 и 102 клавишных клавиатур расширенными клавишами являются следующие:
•правый и на основной клавиатуре,
•,
, , , , и клавиши со cтрелками в группах слева от дополнительной цифровой клавиатуры, •</> и на дополнительной цифровой клавиатуре. Другие клавиатуры могут поддерживать бит расширенной клавиатуры при помощи параметра lParam. - Это событие также генерируется, если нажимается без нажатой .
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. | |
| Примечание: |
- Приложение должно вернуть 0, если оно обрабатывает это событие.
- Для этого события бит 15 в lParamHi будет нулевым.
- Если бит 13 IParamHi (context code) параметра flags =0, это событие может проследовать для обработки функцией TranslateAccelerator, которая обработает его как событие нажатия стандартной клавиши, вместо системной. Это позволяет использовать горячие клавиши в активном окне, даже если это окно не имеет клавиатурного фокуса.
- Благодаря автоматическому повторению кода клавиши при удержанию ее нажатой, до появления события WM_KEYUP может выдаваться несколько событий WM_KEYDOWN. Значение разряда 30 параметра flags позволяет определить, было ли событие WM_KEYDOWN первым или или является повторным во время удержания клавиши нажатой.
- Для расширенных 101 и 102 клавишных клавиатур расширенными клавишами являются следующие:
•правый и на основной клавиатуре,
•,
, , , , и клавиши со cтрелками в группах слева от дополнительной цифровой клавиатуры, •</> и на дополнительной цифровой клавиатуре. Другие клавиатуры могут поддерживать бит расширенной клавиатуры при помощи параметра lParam. - Это событие также генерируется, если нажимается без нажатой .