При реализации IDropTarget вы должны осуществить это:Что происходит в IDataObject?
virtual HRESULT STDMETHODCALLTYPE Drop(
/* [unique][in] */ __RPC__in_opt IDataObject *pDataObj,
/* [in] */ DWORD grfKeyState,
/* [in] */ POINTL pt,
/* [out][in] */ __RPC__inout DWORD *pdwEffect)=0;
Я хочу знать, какие данные поступают в IDataObject.
Я сделал это:
FORMATETC fdrop = {CF_HDROP, 0, DVASPECT_CONTENT, -1, TYMED_HGLOBAL};
if (SUCCEEDED(pDataObj->QueryGetData(&fdrop))){
STGMEDIUM stgMedium = {0};
stgMedium.tymed = TYMED_HGLOBAL;
HRESULT hr = pDataObj->GetData(&fdrop, &stgMedium);
if (SUCCEEDED(hr))
{
Но это работает только, когда кто-то перетаскивать файлы. Я видел, что есть также CF_TEXT и CF_BITMAP, но я не хочу запрашивать для всех типов форматов буфера обмена, поэтому я хочу знать, есть ли способ запроса данных типа IDataObject.
CF_HDROP отлично работает для файлов, но когда я бросаю изображение из браузера, например, я не знаю, какой CF_ использовать ... Я пробовал CF_BITMAP, но не работает.
Любые идеи?
Большое спасибо. Я несколько раз смотрел документацию, я не знаю, как я этого не видел. –