Перетаскивание в проводник вызывает недопустимую ошибку FORMATETC (DV_E_FORMATETC)

Я пытаюсь использовать этот отличный пример для реализации перетаскивания виртуальных файлов в Windows Исследователь. Тем не менее, я в тупике этой ошибкой. Внизу, внутри 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-взаимодействии, поэтому любая помощь будет принята с благодарностью.


person JustABill    schedule 27.05.2010    source источник


Ответы (1)


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

person JustABill    schedule 28.05.2010