C语言将数据复制到粘贴板

直接贴我的项目代码吧

CString str;    
//str的值从外部获取        
if(0==str.GetLength()){
    AfxMessageBox(_T("数据为空"));
    return;
}
//将CString转换为char       
USES_CONVERSION;
//调用函数,T2A和W2A均支持ATL和MFC中的字符转换
char * charData = T2A(str);   
//char * charData = W2A(str); //也可实现转换

//将数据保存至粘贴板
HGLOBAL hClip;  
//定义一个HGLOBAL句柄变量用来指向分配的内存块
if (OpenClipboard())
{
EmptyClipboard(); //将剪贴板内容清空
hClip=GlobalAlloc(GMEM_MOVEABLE,str.GetLength()+1);  
//在堆上分配可移动的内存块,程序返回一个内存句柄
char * buff; //定义指向字符型的指针变量
buff=(char*)GlobalLock(hClip);
//对分配的内存块进行加锁,将内存块句柄转化成一个指针,并将相应的引用计数器加1        
strcpy(buff, charData);
//将用户输入的数据复制到指针变量中,实际上就是复制到分配的内存块中
GlobalUnlock(hClip);
//数据写入完毕,进行解锁操作,并将引用计数器数字减1
SetClipboardData(CF_TEXT,hClip);
//将存放有数据的内存块放入剪贴板的资源管理中
CloseClipboard();
//关闭剪贴板,释放剪贴板资源的占用权
MessageBox(_T("已将数据存入剪贴板"));

你可能感兴趣的:(c语言)