Определите, когда вставляются вырезанные данные в MFC COleDataSource VS2008

Мне нужно определить, когда другое приложение / окно в моем приложении вставляет мои ранее установленные данные, чтобы я мог удалить их из исходного окна. Я обнаружил, что COleDataSource::DelaySetData теоретически делает это и COleDataSource::OnSetData будет вызван, когда происходит вставка, но я не могу быть уверен. MSDN (как обычно) расплывчато в этом вопросе и не говорит однозначно так или иначе. Я буду использовать пользовательский формат и любой формат, который использует проводник для вырезания / вставки файлов. Так что вопрос в том, КАК ТОЧНО (не теоретически) это можно сделать. Мне действительно нужно удалить элементы из моего окна, если и только если они вставлены в другое место.

1 ответ

Вы все делаете неправильно. Когда вы что-то вырезаете, оно должно быть немедленно удалено, и вы должны предоставить функцию отмены, если это нужно восстановить.

Буфер обмена не был предназначен для двунаправленной сигнализации. DelaySetData предназначен для приложений, которые отправляют большие объемы данных в разных форматах, так что им нужно предоставить только тот формат, который требуется получателю; использование его для определения того, когда происходит вставка, зависит от побочного эффекта. Есть менеджеры буфера обмена, которые могут сделать это неудачей.

Другие вопросы по тегам