Что означает код HRESULT 0x80040100 (DRAGDROP_E_NOTREGISTERED)?

 
Предыдущий Следующий
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.


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