BOOL CopyToClipboard(HWND hWnd, CString& str)
{
if (!OpenClipboard(hWnd))
{
AfxMessageBox(TEXT("Cannot open the Clipboard"));
return FALSE;
}
if (!EmptyClipboard())//清空剪贴板
{
AfxMessageBox(TEXT("Cannot empty the Clipboard"));
return FALSE;
}
size_t cbStr = (str.GetLength() + 1) * sizeof(TCHAR);
HGLOBAL hData = GlobalAlloc(GMEM_MOVEABLE, cbStr);
memcpy(GlobalLock(hData), str.LockBuffer(), cbStr);
//memcpy_s(GlobalLock(hData), cbStr, str.LockBuffer(), cbStr);
GlobalUnlock(hData);
str.UnlockBuffer();
//确定字符格式
UINT uiFormat = (sizeof(TCHAR) == sizeof(WCHAR)) ? CF_UNICODETEXT : CF_TEXT;
if (::SetClipboardData(uiFormat, hData) == NULL)
{
AfxMessageBox(TEXT("Unable to set Clipboard data"));
CloseClipboard();
return FALSE;
}
CloseClipboard();
return TRUE;
}