0
我使用下面的代码来复制粘贴..但它并没有复制整个上下文它只是复制几个字母,剩下的全部作为垃圾值..如果我使用char *来获取数据缓冲区并更改项目设置多字节支持...这将work..but然后我失去支持unicode的格式和我使用CF_UNICODETEXT也试过了,它不工作或者.. 请帮我这个无法在MFC中使用SetClipboardData进行复制粘贴?
void CCopyPAsteDlg::OnBnClickedPaste()
{
// TODO: Add your control notification handler code here
if (OpenClipboard())
{
if (::IsClipboardFormatAvailable(CF_TEXT)
|| ::IsClipboardFormatAvailable(CF_OEMTEXT))
{
HANDLE hClipboardData = GetClipboardData(CF_TEXT);
LPCTSTR pchData = new TCHAR[256];
pchData = (LPCTSTR)GlobalLock(hClipboardData);
CString strFromClipboard = pchData;
m_SetText.SetWindowText(strFromClipboard);
GlobalUnlock(hClipboardData);
}
else
{
//AfxMessageBox(L"There is no text (ANSI) data on the Clipboard.");
}
CloseClipboard();
}
}
void CCopyPAsteDlg::OnBnClickedCopy()
{
// TODO: Add your control notification handler code here
UpdateData();
CString strData;
m_GetText.GetWindowText(strData);
if (OpenClipboard())
{
EmptyClipboard();
HGLOBAL hClipboardData;
hClipboardData = GlobalAlloc(GMEM_DDESHARE,
strData.GetLength()+1);
LPCTSTR pchData = new TCHAR[256];
pchData = (LPCTSTR)GlobalLock(hClipboardData);
wcscpy((wchar_t*)pchData,strData);
GlobalUnlock(hClipboardData);
SetClipboardData(CF_TEXT,hClipboardData);
CloseClipboard();
}
}
我相信它自'CF_UNICODETEXT'应该是'sizeof(WCHAR)'。 – jww 2012-09-16 12:57:26