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