| Предыдущий | Следующий |
| 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 может по-прежнему быть действительным; проблема заключается в требуемой операцией связи между потоками.
Ссылки
Нужно найти другой код? Найти другой код состояния или ошибки.