复制:
首先需要注册剪贴板:
static UINT g_cfObjectFormat = ::RegisterClipboardFormat(_T("Object_ClipBoard"));
之后用CSharedFile和CArchive生成数据:
CSharedFile memFile;
CArchive ar(&memFile, CArchive::store|CArchive::bNoFlushOnDelete);
在这里用ar进行串行化数据。。。
// 结束
ar.Flush();
HGLOBAL hData = memFile.Detach();
最后将数据设置到剪贴板中:
if(OpenClipboard())
{
::SetClipboardData(g_cfObjectFormat, hData);
CloseClipboard();
}
粘贴:
if(OpenClipboard())
{
HANDLE hData = ::GetClipboardData(g_cfObjectFormat);
if(hData != NULL)
{
CSharedFile memFile;
memFile.SetHandle(hData,FALSE);
CArchive ar(&memFile, CArchive::load);
在这里将数据串行化出来。。。
ar.Close();
memFile.Detach();
EmptyClipboard();
}
CloseClipboard();
}