MFC 拷贝ListBox单行的数据到剪切板

由于从控件上得到的数据是宽字符,所以分配空间的时候需要

注意的是单行数据长度要乘以2作为GlobalAlloc分配的大小

void Show::OnLbnDblclkListResult()
{
    int curSel = m_listResult.GetCurSel();
    CString str;
    m_listResult.GetText(curSel, str);
    BOOL bret = OpenClipboard();
    EmptyClipboard();
    int len = str.GetLength() * 2;
    HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, len + 2);
    wchar_t *p = (wchar_t*)GlobalLock(hGlobal);
    wmemset(p, 0, str.GetLength()+1);
    wmemcpy(p, str.GetBuffer(), str.GetLength()+1);
    bret = GlobalUnlock(hGlobal);
    HANDLE hResult = SetClipboardData(CF_UNICODETEXT, hGlobal);
    w_return_if_fail(NULL!=hResult);
    CloseClipboard();
    str.Format(L"拷贝数据到剪切板成功, 长度:%d", str.GetLength());
    MessageBox(str);
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值