1。文件的复制、粘贴是怎样实现的?是用fopen打开,再用fwrite写一遍吗?还是有复制、粘贴的函数呢?2。远程的复制、粘贴又怎样实现?比如,我要把一个本地的文件,粘贴到一台远程机器的指定目录内(管理员帐号和密码都有)。

解决方案 »

  1.   

    都是通过剪贴板来实现的拷贝与粘贴文本
     
    下边的源代码演示了如何将文本(包含在CString对象“source”中)拷贝到剪贴板上。CString source; 
    //put your text in source
    if(OpenClipboard())
    {
             HGLOBAL clipbuffer;
             char * buffer;
             EmptyClipboard();
             clipbuffer = GlobalAlloc(GMEM_DDESHARE, source.GetLength()+1);
             buffer = (char*)GlobalLock(clipbuffer);
             strcpy(buffer, LPCSTR(source));
             GlobalUnlock(clipbuffer);
             SetClipboardData(CF_TEXT,clipbuffer);
             CloseClipboard();
    }
     
    反过来,下面的代码是用来实现从剪贴板上取得文本的。char * buffer = NULL;
    //open the clipboard
    CString fromClipboard;
    if ( OpenClipboard() ) 
    {
             HANDLE hData = GetClipboardData( CF_TEXT );
             char * buffer = (char*)GlobalLock( hData );
             fromClipboard = buffer;
             GlobalUnlock( hData );
             CloseClipboard();
    }
      

  2.   

    远程的话你需要与server建立连接然后用
    CFtpConnection::PutFile()
    把本地文件放到server上这里有一个包装好的操作ftp的类
    http://www.codeguru.com/Cpp/I-N/internet/ftp/article.php/c3439
      

  3.   

    BOOL CopyFile(
      LPCTSTR lpExistingFileName, 
      LPCTSTR lpNewFileName, 
      BOOL bFailIfExists 
    ); 
      

  4.   

    如何与资源管理器互动剪切/拷贝/粘贴文件 
    http://www.vckbase.net/document/viewdoc/?id=444VOID CutOrCopyFiles(char *lpBuffer,UINT uBufLen,BOOL bCopy)
    {
    UINT uDropEffect;
    DROPFILES dropFiles;
    UINT uGblLen,uDropFilesLen;
    HGLOBAL hGblFiles,hGblEffect;
    char *szData,*szFileList; DWORD *dwDropEffect; uDropEffect=RegisterClipboardFormat("Preferred DropEffect");
    hGblEffect=GlobalAlloc(GMEM_ZEROINIT|GMEM_MOVEABLE|GMEM_DDESHARE,sizeof(DWORD));
    dwDropEffect=(DWORD*)GlobalLock(hGblEffect);
    if(bCopy)
    *dwDropEffect=DROPEFFECT_COPY;
    else 
    *dwDropEffect=DROPEFFECT_MOVE;
    GlobalUnlock(hGblEffect); uDropFilesLen=sizeof(DROPFILES);
    dropFiles.pFiles =uDropFilesLen;
    dropFiles.pt.x=0;
    dropFiles.pt.y=0;
    dropFiles.fNC =FALSE;
    dropFiles.fWide =TRUE; uGblLen=uDropFilesLen+uBufLen*2+8;
    hGblFiles= GlobalAlloc(GMEM_ZEROINIT|GMEM_MOVEABLE|GMEM_DDESHARE, uGblLen);
    szData=(char*)GlobalLock(hGblFiles);
    memcpy(szData,(LPVOID)(&dropFiles),uDropFilesLen);
    szFileList=szData+uDropFilesLen; MultiByteToWideChar(CP_ACP,MB_COMPOSITE,
    lpBuffer,uBufLen,(WCHAR *)szFileList,uBufLen);

    GlobalUnlock(hGblFiles); if( OpenClipboard(NULL) )
    {
    EmptyClipboard();
    SetClipboardData( CF_HDROP, hGblFiles );
    SetClipboardData(uDropEffect,hGblEffect);
    CloseClipboard();
    }
    }
      

  5.   

    CopyFile("c:\\test\\aaa.txt","d:\\aaa.txt",FALSE);