WEB开发网
开发学院软件开发VC 如何与资源管理器互动剪切/拷贝/粘贴文件 阅读

如何与资源管理器互动剪切/拷贝/粘贴文件

 2010-07-15 20:45:16 来源:WEB开发网   
核心提示:因此,我们可以通过if(dwEffect & DROPEFFECT_COPY)CopyFile(....);else (dwEffect & DROPEFFECT_MOVE)MoveFile(...);来完成剪切/拷贝操作,如何与资源管理器互动剪切/拷贝/粘贴文件(2),在我们取得uDropEffect状态之后,我们需

因此,我们可以通过

if(dwEffect & DROPEFFECT_COPY)
 CopyFile(....);
else (dwEffect & DROPEFFECT_MOVE)
 MoveFile(...);

来完成剪切/拷贝操作。

在我们取得uDropEffect状态之后,我们需要得到文件列表,得到拖放对象中的文件列表可以通过DragQueryFile来实现:

UINT DragQueryFile(HDROP hDrop, UINT iFile,LPTSTR lpszFile,UINT cch);

第二个参数是文件序列号,可以通过将iFile置为-1的方法来得到文件数量。

最后我们给出完整的例子:

#include <Shellapi.h>
#include <oleidl.h>
....
 UINT uDropEffect=RegisterClipboardFormat("Preferred DropEffect");
  if( OpenClipboard( hWnd)) {
    HDROP hDrop = HDROP( GetClipboardData( CF_HDROP));
    if( hDrop) {
      DWORD dwEffect,*dw;
      dw=(DWORD*)(GetClipboardData( uDropEffect));
      if(dw==NULL)
        dwEffect=DROPEFFECT_COPY;
      else
        dwEffect=*dw;

      char Buf[4096];
      Buf[0] = 0;
      UINT cFiles = DragQueryFile( hDrop, (UINT) -1, NULL, 0);
      POINT Point;
      char szFile[ MAX_PATH];
      for( UINT count = 0; count < cFiles; count++ ) {
        DragQueryFile( hDrop, count, szFile, sizeof( szFile));
        lstrcat(Buf,szFile);
        lstrcat(Buf,"\n");
      }

      if(dwEffect & DROPEFFECT_MOVE) {
        MessageBox(NULL,Buf,"Move Files",MB_OK);
      } else  if(dwEffect & DROPEFFECT_COPY) {
          MessageBox(NULL,Buf,"Copy Files",MB_OK);
      }
      CloseClipboard();
    }
  }

上一页  1 2 3 4  下一页

Tags:如何 资源管理 互动

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接