当我选定n个文件复制后,如何读取clipboard里的数据?

解决方案 »

  1.   

    LPDATAOBJECT  pDataObject =NULL;
      if( SUCCEEDED(::OleGetClipboard(&pDataObject)))
     {
            FORMATETC formatetc = {0};
        formatetc.cfFormat = CF_HDROP;
    formatetc.dwAspect = DVASPECT_CONTENT ;
    formatetc.lindex = -1;
    formatetc.tymed = TYMED_HGLOBAL ;
    if( pDataObject->QueryGetData(&formatetc) == S_OK)
    {
    STGMEDIUM stg = {0};
    stg.tymed = TYMED_HGLOBAL;
    if(pDataObject->GetData(&formatetc,&stg) == S_OK )

      HDROP hDrop = (HDROP)::GlobalLock(stg.hGlobal);
    TCHAR szFileName[MAX_PATH];
        UINT cFiles = DragQueryFile(hDrop, 0xFFFFFFFF, NULL, 0); 

        for(UINT i = 0 , nItem = 0 ; i < cFiles; ++i)
    {
           if( DragQueryFile(hDrop, i, szFileName, sizeof(szFileName)/sizeof(TCHAR)) > 0 )                
          m_PathList.InsertItem(nItem++, szFileName);
            
    }
    ::GlobalUnlock(stg.hGlobal);
    ::GlobalFree(stg.hGlobal );
        if( stg.pUnkForRelease )
       stg.pUnkForRelease->Release();
    }
    }
    pDataObject->Release();
    }
      

  2.   

    m_PathList是一个CListCtrl控件或CListView视图