Я был базовым кодом из этого кода , также упомянутого в моем другом вопросе . Эта версия заставляет тип символа char*
, что нарушает компиляцию в моем проекте Unicode. Поэтому я сделал следующие изменения:
void SetClipboardText(CString & szData)
{
HGLOBAL h;
LPTSTR arr;
size_t bytes = (szData.GetLength()+1)*sizeof(TCHAR);
h=GlobalAlloc(GMEM_MOVEABLE, bytes);
arr=(LPTSTR)GlobalLock(h);
ZeroMemory(arr,bytes);
_tcscpy_s(arr, szData.GetLength()+1, szData);
szData.ReleaseBuffer();
GlobalUnlock(h);
::OpenClipboard (NULL);
EmptyClipboard();
SetClipboardData(CF_TEXT, h);
CloseClipboard();
}
Копирование выглядит нормально - в отладчике Visual Studio сообщает, что arr
содержит скопированную строку, как и ожидалось.
Но когда я вставляю их в любое приложение, вставляется только первый символ.
Что не так?