Мне нужно определить, когда другое приложение / окно в моем приложении действительно вставляет мои ранее установленные данные, чтобы я мог удалить их из исходного окна. Я обнаружил, что COleDataSource::DelaySetData
теоретически делает это и COleDataSource::OnSetData
будет вызываться при вставке, но я не могу быть уверен. MSDN (как обычно) расплывчато об этом вопросе и четко не говорит о том или ином. Я буду использовать настраиваемый формат, а формат watever используется проводником для вырезания / вставки файлов. Итак, вопрос в том, как ТОЧНО (не теоретически) это можно сделать. Мне действительно нужно удалить элементы из моего окна тогда и только тогда, когда они вставлены в другое место.
Обнаружение, когда вырезанные данные вставляются в MFC COleDataSource VS2008
Ответы (1)
Вы все делаете неправильно. Когда вы что-то вырезаете, это должно быть немедленно удалено, и вы должны предоставить функцию отмены, если это необходимо восстановить.
Буфер обмена не предназначен для двунаправленной передачи сигналов. DelaySetData предназначена для приложений, которые отправляют большие объемы данных в различных форматах, поэтому им нужно только предоставить формат, который требуется получателю; его использование для определения появления пасты предполагает побочный эффект. Существуют менеджеры буфера обмена, которые могут сделать это неудачно.
person
Mark Ransom
schedule
14.04.2011
Прошу прощения, но вы ошиблись. Очень ошиблись. msdn.microsoft.com /en-us/library/aa969396.aspx#delete_on_paste. Я не поддерживаю отмену в моем приложении. На данном этапе добавление этой функции стоит очень дорого. И, как вы можете видеть из ссылки выше, даже Microsoft делает это. Если вы вырезаете что-то из проводника, файлы / каталоги не удаляются сразу. Они удаляются только после операции вставки.
- person Pifcnt; 15.04.2011