Перетащите в проводник, вызвав недопустимую ошибку FORMATETC (DV_E_FORMATETC) - PullRequest
1 голос
/ 27 мая 2010

Я пытаюсь использовать этот отличный пример для реализации перетаскивания виртуальных файлов в Windows Explorer. Однако я забита этой ошибкой. Внизу, внутри void System.Runtime.InteropServices.ComTypes.IDataObject.GetData(ref System.Runtime.InteropServices.ComTypes.FORMATETC formatetc, out System.Runtime.InteropServices.ComTypes.STGMEDIUM medium) при первом вызове ((System.Runtime.InteropServices.ComTypes.IDataObject)this).GetDataHere(ref formatetc, ref medium); я получаю ошибку DV_E_FORMATETC. Насколько я могу судить, все элементы структуры FORMATETC, которые передаются, являются действительными: cfFormat - это "Shell IDList Array" (-16141), ptd - 0, dwAspect - DVASPECT_CONTENT, lindex - -1, а tymed - TYMED_HGLOBAL. Я в некотором роде смущен тем, как возникнет проблема, так как она была сгенерирована проводником.

Я очень мало знаю о взаимодействии COM, поэтому любая помощь будет принята с благодарностью.

1 Ответ

3 голосов
/ 28 мая 2010

После переопределения примерно половины IDataObject оказывается, что код ошибки вызван не поддержкой «Shell IDList Array» в GetDataPresent ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...