CListBox多选并把多选的内容拷贝到剪贴板

本文介绍如何使用C++获取列表框中被选中的项目索引,将其转换为字符串,然后复制到剪贴板,实现选中项的高效分享。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

int nCount = GetSelCount();
if(0 == nCount)   return;


CArray<int,int> aryListBoxSel;  // 数组用来保存选择的项目的索引
aryListBoxSel.SetSize(nCount);
GetSelItems(nCount, aryListBoxSel.GetData()); 


CString strSelAll=_T("");
CString strText;
for(int i=0; i<nCount; i++){
int nIndex = aryListBoxSel.GetAt(i);  // 取得选择的项目的索引
GetText(nIndex,strText);      // 根据索引获得选择的字符串
strSelAll += strText;
strSelAll += _T("\r\n");
}


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

}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值