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