CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

文件的复制、粘贴一般是怎样实现的?

楼主wrongagain98(乱云)2005-08-18 23:05:52 在 VC/MFC / 基础类 提问

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

1 楼lixiaosan(小三)回复于 2005-08-18 23:10:54 得分 10

都是通过剪贴板来实现的  
   
  拷贝与粘贴文本  
     
  下边的源代码演示了如何将文本(包含在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();  
  }  
   
  Top

2 楼lixiaosan(小三)回复于 2005-08-18 23:19:32 得分 10

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

3 楼wrongagain98(乱云)回复于 2005-08-18 23:21:59 得分 0

可是我不是要复制文本呀,我复制整个文件,那些文件都不一定是文本文件。Top

4 楼lixiaosan(小三)回复于 2005-08-18 23:26:51 得分 5

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

5 楼ss3295(阳光)回复于 2005-08-18 23:40:28 得分 0

学习Top

6 楼caozhy(cfx)回复于 2005-08-19 02:44:27 得分 0

MarkTop

7 楼thisisll(学习王高李,有个好身体)回复于 2005-08-19 08:38:16 得分 0

可是我不是要复制文本呀,我复制整个文件,那些文件都不一定是文本文件。  
  -----------  
  什么文件不过都是0101Top

8 楼mengqimxz(雨)回复于 2005-08-19 08:40:42 得分 0

学习Top

9 楼vcmute(BCare4 H1Rest Good9!)回复于 2005-08-19 09:11:14 得分 10

如何与资源管理器互动剪切/拷贝/粘贴文件    
  http://www.vckbase.net/document/viewdoc/?id=444  
   
  VOID   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();  
  }  
  }Top

10 楼lemon_wei(研究BT,做好P2P)回复于 2005-08-19 13:03:35 得分 5

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

相关问题

  • 1)C# 实现复制粘贴文件夹及文件 2)在Winform工程中怎样调用dos下复制粘贴命令。
  • 怎样实现复制、粘贴功能?
  • 怎么样实现复制,粘贴?
  • 关于文件的复制、粘贴的问题,谢谢!
  • 如何将文件复制到粘贴板
  • 文件的复制如何实现?
  • 如何实现图像文件复制?
  • 怎么实现定时复制文件?
  • 用菜单在RichEdit中实现剪切,复制,粘贴功能
  • 如何实现在字段中复制和粘贴功能?

关键词

  • 文件
  • 文本
  • 拷贝
  • 远程
  • source
  • 粘贴
  • dropfiles
  • 复制
  • gmem
  • dwdropeffect

得分解答快速导航

  • 帖主:wrongagain98
  • lixiaosan
  • lixiaosan
  • lixiaosan
  • vcmute
  • lemon_wei

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo