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

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

ERROR_INVALID_DWP_HANDLE

Недопустимый дескриптор группового позиционирования окон

BeginDeferWindowPos создаёт HDWP объект состояния, который обновляется каждым вызовом DeferWindowPos и потребляется вызовом EndDeferWindowPos. Это краткоживущая цепочка операций, а не повторно используемый дескриптор макета.

Важная деталь контракта состоит в том, что DeferWindowPos возвращает обновлённый дескриптор, который может отличаться от переданного. Продолжение работы со старым HDWP, повторное использование дескриптора после EndDeferWindowPosили продолжение после неудачного отложенного вызова может сделать цепочку недействительной.

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

  • Присваивайте результат каждого вызова DeferWindowPos обратно отслеживаемому HDWP.
  • Немедленно остановите последовательность, если отложенный вызов вернул NULL, и зафиксируйте GetLastError.
  • Вызовите EndDeferWindowPos один раз для последнего действительного дескриптора.
  • Не сохраняйте дескриптор для последующего прохода компоновки.

Если цепочка действительна, но окна имеют разных родителей, более точным условием является ERROR_HWNDS_HAVE_DIFF_PARENT.

Ссылки


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