我要写一段代码实现 复制 剪切 粘贴 请问要任何实现 思路也行??????????????

解决方案 »

  1.   

    /////////////////////////////////////
    复制操作
    CString str;
        str="jjjjjjjjjjjjj";//str为你要复制的内容
    LPSTR pGlobal;   
        HGLOBAL hGlobal; 
    CWnd *pwnd = AfxGetMainWnd(); 
    pwnd->OpenClipboard();
    EmptyClipboard();  
        hGlobal=GlobalAlloc(GHND|GMEM_SHARE,(lstrlen(str)+1)*sizeof(TCHAR));   
        pGlobal=(LPSTR)GlobalLock(hGlobal); 
    lstrcpy(pGlobal, str);   
        GlobalUnlock(hGlobal);   
        SetClipboardData(CF_TEXT,   hGlobal);   
        CloseClipboard(); 
    //////////////////////////////////////
    粘贴操作
    if ( OpenClipboard() )
    {
    if (!IsClipboardFormatAvailable(CF_TEXT))     
                return ; 
    HANDLE hData = GetClipboardData(CF_TEXT);
    char * buffer = (char*)GlobalLock(hData);
    fromClipboard = buffer;
    GlobalUnlock(hData);
    CloseClipboard();



    }
      

  2.   

    Clipboard Functions
    Following are the functions used with the clipboard. 
    **********************************************************8
    ChangeClipboardChain  
    CloseClipboard  
    CountClipboardFormats  
    EmptyClipboard  
    EnumClipboardFormats  
    GetClipboardData  
    GetClipboardFormatName  
    GetClipboardOwner  
    GetClipboardSequenceNumber  
    GetClipboardViewer  
    GetOpenClipboardWindow  
    GetPriorityClipboardFormat  
    IsClipboardFormatAvailable  
    OpenClipboard  
    RegisterClipboardFormat  
    SetClipboardData  
    SetClipboardViewer  
      

  3.   

    可以直接使用Windows 消息来实现
      

  4.   

    讲具体一点,复制、剪切、粘贴的是什么?从哪复制,粘贴到哪?
    如果只是单个文件,可以用CopyFile、MoveFile;如果是多个文件和目录,可以用SHFileOperation;如果要利用剪贴板传递数据,参考3楼列出的函数。
      

  5.   

    开辟一块内存区,复制就是把目标memcpy到该区,剪切就是把目标memcpy到该区后再清除目标区,粘贴就是把该区memcpy到目标
      

  6.   

    在MSDN中输入Using the Clipboard看一下。
      

  7.   

    当我要拷贝的数据里 又有字符串 又有不同格式的图片时怎么处理了
     IsClipboardFormatAvailable()是要带类型的啊
      

  8.   

    程序设计的时候要考虑到,你在什么时候做粘贴操作,在这个时候的操作会涉及到什么类型的数据,在这种特定情况下做判读。
    Windows也是这样啊,你复制一个文件,让后在记事本里粘贴是不成功的,这里就是对剪贴板内的数据做了判断
      

  9.   

    通过OLE怎么实现啊  给点思路 啊
      

  10.   

    你可以使用你自己定做的数据格式   
    用RegisterClipboardFormat() API函数先将此格式注册,假设我们有下面的结构:   
        
      struct   MyFormatData   
      {   
          long   val1;   
          int   val2;   
      };   
          
      想将此结构的数据拷贝到剪贴板上。可以这样实现:   
      UINT   format   =   RegisterClipboardFormat("MY_CUSTOM_FORMAT");   
      if(OpenClipboard())   
      {   
           //make   some   dummy   data   
           MyFormatData   data;   
           data.val1   =   100;   
           data.val2   =   200;   
          
           //allocate   some   global   memory   
           HGLOBAL   clipbuffer;   
           EmptyClipboard();   
           clipbuffer   =   GlobalAlloc(GMEM_DDESHARE,   sizeof(MyFormatData));   
           MyFormatData   *   buffer   =   (MyFormatData*)GlobalLock(clipbuffer);   
          
           //put   the   data   into   that   memory   
           *buffer   =   data;   
          
           //Put   it   on   the   clipboard   
           GlobalUnlock(clipbuffer);   
           SetClipboardData(format,clipbuffer);   
           CloseClipboard();   
      }   
          
        
      把它从剪贴板上读下来
      //第二次调用时,此格式已经注册过了,读下来就行了   
      UINT   format   =   RegisterClipboardFormat("MY_CUSTOM_FORMAT");   
      MyFormatData   data;   
      if(OpenClipboard())     
      {   
           //get   the   buffer   
           HANDLE   hData   =   GetClipboardData(format);   
           MyFormatData   *   buffer   =   (MyFormatData   *)GlobalLock(   hData   );           data   =   *buffer;   
           GlobalUnlock(   hData   );   
           CloseClipboard();   
      }   
      

  11.   

    OLE可能对你来说并不实际,关键是你要实现什么样的功能,进程间,还是本进程内?