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);
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 )
{
MessageBox( _T("Unable to set Clipboard data") );
CloseClipboard();
return;
}
CloseClipboard();