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);
}
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);
}