我将一些数据放入剪贴板,从剪贴板复制数据后,我想清除数据而不清除整个剪贴板。
类似的东西:
wchar_t* buf=NULL;
if( OpenClipboard(NULL)!=0)
{
HANDLE hData = GetClipboardData( CF_UNICODETEXT );
buf = (wchar_t*)GlobalLock( hData );
GlobalUnlock( hData );
CloseClipboard();
return buf;
}
//job is done, and now I want to clear only hData!
据我了解,EmptyClipboard()将清空所有内容!
提前致谢!
答案 0 :(得分:1)
剪贴板一次只能容纳一个IDataObject
;此数据对象可以呈现多种数据格式,但它只是一个COM对象。执行所需操作的唯一方法是复制现有数据对象(减去要删除的格式),并将其设置为剪贴板以代替原始数据。
答案 1 :(得分:0)
我想知道你为什么要这样做。我不是Windows编程方面的专家,但无论如何我都会尝试回答,因为在我看来这个问题一直是“孤儿”,我可能会提供一些见解(希望我没有被误解)。
据我了解,剪贴板旨在保存一个实体的多个替代表示(采用不同格式)。
仅删除一个此类表示的用例是什么?我会说有意义的是删除所有表示(通过EmptyClipboard()
)或没有。
可能您认为剪贴板是为了容纳不同类型的几个实体,这就是您正在寻找选择性删除的原因。我担心这是一种误解,并不能反映剪贴板的真正目的。