您的位置:首页 > 其它

VC中复制字符串到剪贴板

2014-01-16 23:08 375 查看
保存至剪贴板:

//定义字符型变量用来保存用户输入的数据

CString str;

HGLOBAL hClip;

//定义一个HGLOBAL句柄变量用来指向分配的内存块

if (OpenClipboard())

{

EmptyClipboard(); //将剪贴板内容清空

hClip=GlobalAlloc(GMEM_MOVEABLE,str.GetLength()+1);

//在堆上分配可移动的内存块,程序返回一个内存句柄

char * buff; //定义指向字符型的指针变量

buff=(char*)GlobalLock(hClip);

//对分配的内存块进行加锁,将内存块句柄转化成一个指针,并将相应的引用计数器加1

strcpy(buff,str);

//将用户输入的数据复制到指针变量中,实际上就是复制到分配的内存块中

GlobalUnlock(hClip);

//数据写入完毕,进行解锁操作,并将引用计数器数字减1

SetClipboardData(CF_TEXT,hClip);

//将存放有数据的内存块放入剪贴板的资源管理中

CloseClipboard();

//关闭剪贴板,释放剪贴板资源的占用权

MessageBox("已将数据存入剪贴板");

}

从剪贴板中取出文本:

CString str;

//字符型变量保存由剪贴板复制下来的数据

HANDLE hClip;

//定义HANDLE句柄型变量用来指向GetClipboardData函数返回的句柄

if (OpenClipboard())

{

hClip=GetClipboardData(CF_TEXT);

//从剪贴板中取出一个内存的句柄

char* buff;

//定义字符型指针变量用来保存内存块中的数据

buff=(char*)GlobalLock(hClip);

//对内存块进行加锁,将内存句柄值转化为一个指针,并将内存块的引用计数器加一,内存中的数据也返回到指针型变量中

str=buff;

//将数据保存到字符型变量中

GlobalUnlock(hClip);

//将内存块的引用计数器减一

CloseClipboard();

//关闭剪贴板,释放剪贴板资源的占用权

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: