2011-04-14 2 views
0

내 응용 프로그램의 다른 응용 프로그램/창에서 이전에 설정 한 데이터에 붙여 넣을 때이를 감지하여 소스 창에서 제거 할 수 있어야합니다. 나는 COleDataSource::DelaySetData이론적으로을 발견했으며, 붙여 넣기가 발생할 때 COleDataSource::OnSetData이 호출 될 것이라고 확신했지만 확신 할 수 없습니다. MSDN은이 문제에 대해 (일반적으로) 모호하며 분명히 한 방향 또는 다른 방향을 말하지 않습니다. 사용자 지정 형식을 사용하고 탐색/붙여 넣기 파일에 대한 탐색기 형식을 사용합니다. 그래서 문제는 이론적으로 정확히 어떻게 수행 할 수 있는지입니다. 정말 내 창에서 항목을 제거해야합니다 다른 곳에 붙여 넣을 경우에만 해당 항목을 제거해야합니다.잘라 내기 된 데이터를 MFC에서 붙여 넣을 때 감지 COleDataSource VS2008

답변

0

모두 잘못하고 있습니다. 당신이 무언가를 자르면 즉시 지워질 예정이며 복구가 필요할 경우 실행 취소 기능을 제공해야합니다.

클립 보드가 양방향 신호를 위해 설계되지 않았습니다. DelaySetData는 다른 형식으로 많은 양의 데이터를 제출하는 응용 프로그램을 대상으로하므로 수신기에서 요구하는 형식 만 제공하면됩니다. 붙여 넣기가 발생했을 때이를 감지하여 부작용에 의존합니다. 이 작업을 실패하게 만들 수있는 클립 보드 관리자가 있습니다.

+0

죄송하지만 잘못된 것입니다. 매우 잘못되었습니다 .http : //msdn.microsoft.com/en-us/library/aa969396.aspx#delete_on_paste. 내 응용 프로그램에서 실행 취소를 지원하지 않습니다. 이 기능을 추가하면이 시점에서 엄청난 비용이 듭니다. 그리고 위의 링크에서 볼 수 있듯이 Microsoft도이 작업을 수행합니다. 탐색기에서 "잘라낸"파일/디렉토리는 즉시 삭제되지 않습니다. 붙여 넣기 작업이 완료된 후에 만 ​​삭제됩니다. – Pifcnt