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