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

 
Предыдущий Следующий
ERROR_CANNOT_FIND_WND_CLASS ERROR_HOTKEY_ALREADY_REGISTERED

ERROR_WINDOW_OF_OTHER_THREAD

Запрошенное окно принадлежит другому потоку

Windows связывает каждое окно с создавшим его потоком и очередью сообщений этого потока. Некоторые операции намеренно привязаны к потоку, даже когда HWND глобально видим в пределах рабочего стола.

Правильное исправление обычно состоит в координации через сообщения, а не в принудительном изменении владельца. Отправьте или поместите в очередь определённое приложением сообщение для потока-владельца окна, перенесите работу в GUI-поток либо измените управление временем жизни так, чтобы операцию выполнял создавший окно поток. Наглядный пример — прямое уничтожение: DestroyWindow не может уничтожить окно, созданное другим потоком.

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

  • Используйте GetWindowThreadProcessId когда принадлежность окна неясна.
  • Зафиксируйте идентификатор текущего потока в момент неудачного вызова и идентификатор потока, создавшего окно.
  • Перенесите операции уничтожения и другие действия, чувствительные к принадлежности, в поток окна.
  • Не рассматривайте AttachThreadInput как универсальный механизм передачи владения окном.

В отличие от ERROR_INVALID_WINDOW_HANDLE, определения маски уведомлений HWND может по-прежнему быть действительным; проблема заключается в требуемой операцией связи между потоками.

Ссылки


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