首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

如何实现把在MFC列表控件中显示的数据可以多行选中复制

2014-07-15 
怎么实现把在MFC列表控件中显示的数据可以多行选中复制CListCtrl,怎么把其中显示的数据,在多行选中后,右键

怎么实现把在MFC列表控件中显示的数据可以多行选中复制
CListCtrl,怎么把其中显示的数据,在多行选中后,右键可以跳出复制菜单,并进行复制。

[解决办法]
保存至剪贴板: 
//定义字符型变量用来保存用户输入的数据
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();
//关闭剪贴板,释放剪贴板资源的占用权

}

热点排行