2013-01-19 2 views
2

일부 데이터를 클립 보드에 넣었습니다. 클립 보드에서 데이터를 복사 한 후 전체 클립 보드를 지우지 않고 데이터를 지우고 싶습니다. 그런클립 보드에서 지정된 형식 데이터를 지우는 방법은 무엇입니까?

뭔가 :

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

왜 이렇게하고 싶은지 궁금합니다. 나는 윈도우 프로그래밍의 전문가는 아니지만 어쨌든이 질문은 "고아"로 남겨져 있고 나는 약간의 통찰력을 제공 할 수 있다고 생각하기 때문에 대답하려고 노력할 것입니다. (나는 분명히 착각하지 않기를 희망합니다).

은 지금까지 내가 이해, 클립 보드는 하나 개체의 (다른 형식) 여러 대안 표현을 유지하기위한 것입니다.

하나만 제거하기위한 사례는 무엇입니까? 나는 의미가 무엇인지 말하는 것은 모든 표현을 (EmptyClipboard()을 통해) 제거하거나 없애는 것입니다.

아마도 클립 보드가 다른 유형의 엔티티 을 보유하기위한 것이라는 생각이 들기 때문에 선택적인 제거 방법을 찾고있는 것입니다. 나는 이것이 오해이며 클립 보드의 실제 목적을 반영하지 않는다고 우려하고 있습니다.

+0

클립 보드에서 특정 형식을 제거하는 것이 매우 유용 할 경우가 많이 있습니다. 그러한 사례가 다른 사람들이 필요하지 않다는 것을 상상할 수 없기 때문에. – user1580348

1

클립 보드에는 한 번에 하나의 IDataObject 만 포함됩니다. 이 데이터 객체는 여러 데이터 형식을 나타낼 수 있지만 단 하나의 COM 객체입니다. 원하는 작업을 수행하는 유일한 방법은 기존 데이터 객체 (제거 할 형식을 뺀)를 복제 한 다음 원본 대신 클립 보드에 설정하는 것입니다.

+0

답변 주셔서 감사합니다. 어떻게해야합니까? – gglobulus

관련 문제