| Предыдущий | Следующий |
| ERROR_CLASS_HAS_WINDOWS | ERROR_INVALID_ICON_HANDLE |
ERROR_INVALID_INDEX
Запрошенный индекс данных окна недопустим
Некоторые API USER32 получают доступ к атрибутам по числовому индексу: предопределённые отрицательные константы выбирают стандартные поля, а неотрицательные смещения могут адресовать дополнительные байты, зарезервированные классом окна. Это контракты, а не произвольные индексы массива.
Распространённые ошибки: передача индекса конкретного элемента управления в общий оконный API, использование байтового смещения за пределами cbWndExtra или cbClsExtraили усечение индекса в коде совместимости. Диалоговые окна также резервируют определённое дополнительное хранилище для данных диспетчера диалогов.
Что проверить
- Определите точный индексный API и выводите в диагностике символьную константу индекса.
- Для пользовательских дополнительных байтов сравните смещение и размер сохраняемого типа с регистрацией класса.
- При необходимости используйте API разрядности указателя, такие как
GetWindowLongPtr/SetWindowLongPtr. - Не используйте закрытые индексы диалога как хранилище приложения.
ERROR_PRIVATE_DIALOG_INDEX является более конкретным статусом, когда числовой индекс указывает в хранилище, зарезервированное диспетчером диалогов.
Ссылки
- Microsoft: сведения о классах окон
- Microsoft: рекомендации по программированию диалоговых окон
- Microsoft: CreateWindowEx
Нужно найти другой код? Найти другой код состояния или ошибки.
