2
我是基本的一些代碼關閉此code,也在我的其他question中提到。該版本強制字符類型爲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
包含複製串預期。 但是當我粘貼到任何應用程序時,只粘貼第一個字符。
怎麼回事?
好的,我從來沒有想過那個2nd-byte-is-zero的情況。 – 2010-02-15 11:36:50