Что означает код ошибки Windows 1403 (ERROR_INVALID_ACCEL_HANDLE)?

 
Предыдущий Следующий
ERROR_INVALID_CURSOR_HANDLE ERROR_INVALID_HOOK_HANDLE

ERROR_INVALID_ACCEL_HANDLE

HACCEL не указывает на таблицу акселераторов

Таблицы акселераторов сопоставляют нажатия клавиш с идентификаторами команд и используются в цикле сообщений через TranslateAccelerator. Дескриптор является непрозрачным и должен быть получен из API создания или загрузки таблицы акселераторов.

Распространённая ошибка — цикл сообщений переживает модуль или владельца ресурса, из которого была загружена таблица. Другая причина — хранение нескольких дескрипторов GUI-ресурсов в нетипизированном целочисленном поле с последующим использованием неверного. Идентификаторы команд внутри таблицы сами по себе не являются дескрипторами акселераторов.

Что проверить

  • Проверьте возвращаемое значение вызова загрузки или создания таблицы до входа в цикл.
  • Отслеживайте выгрузку модуля и явное уничтожение таблицы акселераторов.
  • До разрешения источника запишите результат HACCEL отдельно от целевого HWND и идентификаторов команд.
  • Если преобразование просто не создаёт команду, после подтверждения допустимости дескриптора проверьте цикл сообщений и записи таблицы.

Это не ошибка записи акселератора или сопоставления команды; USER32 отклонил сам дескриптор таблицы.

Ссылки


Нужно найти другой код? Найти другой код состояния или ошибки.