2009-12-12 68 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