if(OpenClipboard())
{
if(IsClipboardFormatAvailable(CF_TEXT))
{
HANDLE hClip;
char pBuf;
hClip=GetClipboardData(CF_TEXT);
pBuf=(char)GlobalLock(hClip);
GlobalUnlock(hClip);
CloseClipboard();
}
}
我也是找的资料,不知是不是你要的……
If the function succeeds, the return value is a pointer to the first byte of the memory block
返回的是指向分配的内存的指针,(TCHAR )GlobalLock(hClip)只是指向新分配的内存的指针,此时,该内存并没有初始化,所以是乱码,
_tcscpy(pBuf, str);执行后,该内存就不是乱码了
给你一个通用的代码,无论是ansi还是unicode都管用的。
if (!OpenClipboard())
return;
if(!EmptyClipboard())
{
CloseClipboard();
return;
}
CString str = _T("abc");
size_t cbStr = (strGetLength()+1)sizeof(TCHAR);
HGLOBAL hData = GlobalAlloc(GMEM_MOVEABLE, cbStr);
memcpy_s(GlobalLock(hData), cbStr, strLockBuffer(), cbStr);
GlobalUnlock(hData);
strUnlockBuffer();
UINT uiFormat = (sizeof(TCHAR) == sizeof(WCHAR)) CF_UNICODETEXT : CF_TEXT;
if (::SetClipboardData(uiFormat, hData) == NULL)
{
MessageBox(_T("设置剪贴板数据失败!"));
CloseClipboard();
return;
}
CloseClipboard();
以上就是关于剪贴板 文件 的拷贝,剪切,粘贴 C++全部的内容,包括:剪贴板 文件 的拷贝,剪切,粘贴 C++、C++ 关于剪贴板、vc砖家们来解答一下:照搬书上的代码(vc6的),稍微改动了一下: *** 作剪贴板的一段代码,复制再粘贴等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)