IDropTarget を実装するときは、これを実装する必要があります。
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 を試しましたが、機能しません。