2009-12-12 64 views
0

当你实现你下降目标必须实现这一点: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,但不起作用。

任何想法?

回答

1

参见IDataObject::EnumFormatEtc。从文档中可以看出,可能会以多种格式查询数据,而EnumFormatEtc是枚举可用的各种格式的手段。

+0

非常感谢。我多次查看文档,我不知道我怎么没有看到。 – 2009-12-12 18:54:51