c++怎样将字符串数组内容复制到剪贴板,我每次复制后粘贴只能粘贴一条数据,不知怎么回事,请大家帮帮忙。

voidCOutputList::OnEditCopy(){intindex=COutputList::GetCount();CString*str=newCString... void COutputList::OnEditCopy()
{
int index = COutputList::GetCount();
CString *str= new CString[index];
for (int i=index-1;i>=0;i--)
{
COutputList::GetText(i,str[i]);
}
//定义字符型变量用来保存用户输入的数据
//CString str;
HGLOBAL *hClip = new HGLOBAL[index];
//定义一个HGLOBAL句柄变量用来指向分配的内存块
if (OpenClipboard())
{
EmptyClipboard(); //将剪贴板内容清空
for (int i=0;i<index;i++)
{
hClip[i]=GlobalAlloc(GMEM_MOVEABLE,str[i].GetLength()+1); //在堆上分配可移动的内存块,程序返回一个内存句柄
char * buff = NULL; //定义指向字符型的指针变量
buff=(char*)GlobalLock(hClip[i]);//对分配的内存块进行加锁,将内存块句柄转化成一个指针,并将相应的引用计数器加1
strcpy(buff,str[i]); //将用户输入的数据复制到指针变量中,实际上就是复制到分配的内存块中
GlobalUnlock(hClip[i]); //数据写入完毕,进行解锁操作,并将引用计数器数字减1
SetClipboardData(CF_TEXT,hClip[i]);//将存放有数据的内存块放入剪贴板的资源管理中
}
CloseClipboard();
//关闭剪贴板,释放剪贴板资源的占用权
//MessageBox("已将数据存入剪贴板");
}
delete []str;
delete []hClip;
}
展开
 我来答
陈宗权8d804
2012-12-27 · TA获得超过3766个赞
知道小有建树答主
回答量:1159
采纳率:0%
帮助的人:962万
展开全部
你可以把这一段
CString *str= new CString[index];
for (int i=index-1;i>=0;i--)
{
COutputList::GetText(i,str[i]);
}
改成
CString *str= new CString[index];
CString all;
for (int i=index-1;i>=0;i--)
{
COutputList::GetText(i,str[i]);
all += str[i]+"\r\n";
}
这样你就只需要把all这一个字符串的内容放到剪贴板里面就可以了。
458001705
2012-12-26 · 超过76用户采纳过TA的回答
知道小有建树答主
回答量:398
采纳率:0%
帮助的人:193万
展开全部
本来不就是只能 粘贴一条吗 剪贴板的性质决定 当然你可以访问剪贴板的资源管理器 进行操作

剪贴板 是一个固定大小的缓存 如果超过大小会存在覆盖
来自:求助得到的回答
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式