MFC中剪贴板操作SetDataToClip()和GetDataFromClip()

  1. // Funciton:    
  2. // 拷贝数据到剪切板   
  3. // 从剪切板粘贴数据    
  4. // Data:2011/4/8    
  5. #include <windows.h>   
  6. #include <stdio.h>   
  7. void SetDataToClip(void)    
  8. {   
  9.     // 打开剪贴板   
  10.     if (!OpenClipboard(NULL)|| !EmptyClipboard())    
  11.     {   
  12.         printf("打开或清空剪切板出错!/n");   
  13.         return;   
  14.     }   
  15.        
  16.     HGLOBAL hMen;   
  17.     TCHAR strText[256] = "我被拷贝到剪切板!/n";   
  18.        
  19.     // 分配全局内存    
  20.     hMen = GlobalAlloc(GMEM_MOVEABLE, ((strlen(strText)+1)*sizeof(TCHAR)));    
  21.        
  22.     if (!hMen)   
  23.     {   
  24.         printf("分配全局内存出错!/n");    
  25.         // 关闭剪切板    
  26.         CloseClipboard();   
  27.         return;         
  28.     }   
  29.        
  30.     // 把数据拷贝考全局内存中   
  31.     // 锁住内存区    
  32.     LPSTR lpStr = (LPSTR)GlobalLock(hMen);    
  33.        
  34.     // 内存复制   
  35.     memcpy(lpStr, strText, ((strlen(strText))*sizeof(TCHAR)));    
  36.     // 字符结束符    
  37.     lpStr[strlen(strText)] = (TCHAR)0;   
  38.     // 释放锁    
  39.     GlobalUnlock(hMen);   
  40.        
  41.     // 把内存中的数据放到剪切板上   
  42.     SetClipboardData(CF_TEXT, hMen);   
  43.     CloseClipboard();   
  44.        
  45.     return;   
  46. }   
  47. void GetDataFromClip()   
  48. {   
  49.     // 判断数据格式    
  50.     if (!IsClipboardFormatAvailable(CF_TEXT) )   
  51.     {   
  52.         printf("剪切板数据格式不是CF_TEXT/n");   
  53.         return;   
  54.     }   
  55.        
  56.     if (!OpenClipboard(NULL))    
  57.     {   
  58.         printf("打开剪切板出错!/n");   
  59.         return;   
  60.     }   
  61.     // 从剪切板获取数据    
  62.     HGLOBAL hMem = GetClipboardData(CF_TEXT);   
  63.     if (hMem)   
  64.     {    
  65.         //  获取字符串    
  66.         LPSTR lpStr = (LPSTR)GlobalLock(hMem);     
  67.         if (lpStr)   
  68.         {   
  69.             printf(lpStr);   
  70.             // 释放内存锁    
  71.             GlobalUnlock(hMem);    
  72.         }   
  73.     }    
  74.     // 关闭剪切板    
  75.     CloseClipboard();    
  76. }   
  77. int main(void)   
  78. {   
  79.     //SetDataToClip();   
  80.     GetDataFromClip();    
  81.     return 0;   
  82. }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值