| Предыдущий | Следующий |
| DRAGDROP_E_ALREADYREGISTERED | DRAGDROP_E_CONCURRENT_DRAG_ATTEMPTED |
DRAGDROP_E_INVALIDHWND
Что означает DRAGDROP_E_INVALIDHWND
DRAGDROP_E_INVALIDHWND (0x80040102) — Указан недопустимый дескриптор окна.
Контекст результата 0x80040102 — подсистема «OLE Drag and Drop» и область «регистрацию окна и взаимодействие IDataObject/IDropTarget». Условие «указан недопустимый дескриптор окна» указывает на тему «invalidhwnd», а не на общий отказ всего компонента.
Что проверить и как подтвердить исправление
Первый шаг — проверьте допустимость и структуру входных данных первого неуспешного вызова. Когда при 0x80040102 система сообщает «указан недопустимый дескриптор окна», сверьте тип, размер, диапазон, маску флагов и принадлежность каждого дескриптора текущему объекту именно по контракту первого неуспешного метода.
Чтобы локализовать 0x80040102, соберите HWND, поток и COM apartment, регистрацию цели, FORMATETC/STGMEDIUM и порядок DragEnter/DragOver/Drop; отдельно запишите HRESULT, HWND, IDropTarget, IErrorInfo, IDs. Затем для 0x80040102 сравните исправный и неуспешный запуск в части «invalidhwnd», меняя одно условие за раз.
Коррекция для 0x80040102 должна быть предметной: выполняйте регистрацию и отзыв на правильном UI-потоке и соблюдайте владение объектами данных и носителями. Для 0x80040102 и сообщения «указан недопустимый дескриптор окна» общий сброс допустим лишь как контроль, но не как доказательство причины.
Подтвердите изменение повтором исходной операции: результат 0x80040102 не должен возникать на исправном объекте, но прежний отрицательный контроль обязан оставаться предсказуемым.
Документация для результата 0x80040102: generic COM error codes · HRESULT values · RegisterDragDrop.
Нужно найти другой код? Найти другой код состояния или ошибки.