Определить, когда вставляются вырезанные данные в MFC COleDataSource VS2008 - PullRequest
0 голосов
/ 14 апреля 2011

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

1 Ответ

0 голосов
/ 14 апреля 2011

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...