VC++中使用剪贴板clipboard

CString m_strResult;//the string that want to be copy to clipboard

// memory allocation and data copy

int nLen = m_strResult.GetLength();
HANDLE hText = ::GlobalAlloc(GMEM_MOVEABLE, (nLen + 1) * sizeof(WCHAR));

if (hText == NULL) return;

//LPTSTR lpText = (LPTSTR)::GlobalLock(hText);

LPWSTR lpText = (LPWSTR)::GlobalLock(hText);
if (NULL == lpText){
::CloseHandle(hText); 
return;
}
//memcpy(lpText, m_strResult, nLen * sizeof(WCHAR));
wcsncpy_s(lpText,nLen+1,CStringW(m_strResult),nLen+1 );
lpText[nLen] = '\x00';
::GlobalUnlock(hText);


// clipboard operation
if ( !OpenClipboard() )
{
MessageBox( _T("Cannot open the Clipboard") );
return;
}
if( !EmptyClipboard() )
{
MessageBox( _T("Cannot empty the Clipboard") );
CloseClipboard();
return;

}

//if ( ::SetClipboardData( CF_TEXT, hText ) == NULL )

if ( ::SetClipboardData( CF_UNICODETEXT, hText ) == NULL )
{
MessageBox( _T("Unable to set Clipboard data") );
CloseClipboard();
return;
}
CloseClipboard();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值