clipboard: cut /paste, delete - on - paste
От: ionicman  
Дата: 18.02.07 08:03
Оценка:
Здравчтвуйте, многоуважаемые.

Вот есть у меня вопросик по работе с буфером обмена в win. Это продолжение моего бодания по поводу drag&drop, который так и окончился ничем к сожелению. Решил я его убрать вообще.

в связи с этим вопрос — кто то пытался получить сообщение о тобм что PASTE операция завершена и как это сделать? И вообще это возможно на чистом API? Если не затруднит — то можно просто исходник безо всяких объяснений. Либо если не возможно просто на API без наворотов то хотябы как это сделать на OLE?

Еще раз суть проблемы:
1) есть несколько файлов для операции CUT
2) засунуты в clipboard с PREFFERED_ROPEFFECT = DROPEFFECT_MOVE
3) задача отследить что кто то их вставил — и удалить их со старых мест

Пункты с 1-2 пока сделаны без всякого OLE и MFC. Если без OLE в данном случае не объяснить, то очень прошу исходник какойнидь как работать с DataObject и всем что с ним связано. В инете вообще по этому поводу данных очень мало — видимо настолько специфичная задача, что очень редко используется. Либо все используют MFC )))
Смотрел на CodeGuru и на Sources и еще на куче различных поисковиков — не нашел инфы. Единственное, что раскопал — вроде если OLE, то там вызывается какой-то метод SetData с параметром PASTESUCCEEDED, но ни одного исходника не нашел к сожелению.

19.02.07 11:14: Перенесено модератором из 'C/C++' — Кодт
Re: clipboard: cut /paste, delete - on - paste
От: c-smile Канада http://terrainformatica.com
Дата: 18.02.07 08:21
Оценка:
Здравствуйте, ionicman, Вы писали:

I>Еще раз суть проблемы:

I>1) есть несколько файлов для операции CUT
I>2) засунуты в clipboard с PREFFERED_ROPEFFECT = DROPEFFECT_MOVE
I>3) задача отследить что кто то их вставил — и удалить их со старых мест

№3 сделать невозможно по определнию.
Содержимое clipboard можно вставлять во много мест.
И никто тебе не скажет что он забрал те файлы. Просто нет такого понятия как transfer. Только copy.
Re[2]: clipboard: cut /paste, delete - on - paste
От: ionicman  
Дата: 19.02.07 10:23
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>Здравствуйте, ionicman, Вы писали:


I>>Еще раз суть проблемы:

I>>1) есть несколько файлов для операции CUT
I>>2) засунуты в clipboard с PREFFERED_ROPEFFECT = DROPEFFECT_MOVE
I>>3) задача отследить что кто то их вставил — и удалить их со старых мест

CS>№3 сделать невозможно по определнию.

CS>Содержимое clipboard можно вставлять во много мест.
Че то я не понял причем тут много мест?

CS>И никто тебе не скажет что он забрал те файлы. Просто нет такого понятия как transfer. Только copy.

Да мне и не надо знать кто.
Мне просто надо знать что операция Paste состаялась — чтобы удалить из источника и из списка файлы
Re[2]: clipboard: cut /paste, delete - on - paste
От: Conr Россия  
Дата: 21.02.07 11:13
Оценка:
Здравствуйте, c-smile, Вы писали:

I>>Еще раз суть проблемы:

I>>1) есть несколько файлов для операции CUT
I>>2) засунуты в clipboard с PREFFERED_ROPEFFECT = DROPEFFECT_MOVE
I>>3) задача отследить что кто то их вставил — и удалить их со старых мест

CS>№3 сделать невозможно по определнию.

CS>Содержимое clipboard можно вставлять во много мест.
CS>И никто тебе не скажет что он забрал те файлы. Просто нет такого понятия как transfer. Только copy.
Кстати говоря нет Грамотно написанный IDropTarget после получения данных с DROPEFFECT_MOVE вызывает у переданного IDataObject метод SetData c форматом CFSTR_PASTESUCCEEDED. И тот, кто реализует IDropSource, должнен позаботиться о том, чтобы удалить старый файл.

Подробности можно здесь почитать
Re[3]: clipboard: cut /paste, delete - on - paste
От: Conr Россия  
Дата: 21.02.07 11:17
Оценка:
Здравствуйте, ionicman, Вы писали:

CS>>И никто тебе не скажет что он забрал те файлы. Просто нет такого понятия как transfer. Только copy.

I>Да мне и не надо знать кто.
I>Мне просто надо знать что операция Paste состаялась — чтобы удалить из источника и из списка файлы
В реализации IDataObject::SetData обработайте два дополнительных формата:

— CFSTR_PASTESUCCEEDED
Вставка завершилась удачно, данные можно удалять.

— CFSTR_TARGETCLSID
Данные вставлены с спец папку. Нужно проверить переданный CLSID на равенство CLSID_RecycleBin и, если совпадет, то удалить файлы, потому как их сбросили в корзину.
Re[3]: clipboard: cut /paste, delete - on - paste
От: ionicman  
Дата: 21.02.07 15:19
Оценка:
А есть примеры реализации этих интерфейсов? Только на чистом API без всяких библиотек страшных типа stl и mfc?
Буду очень благодарен.
Re[4]: clipboard: cut /paste, delete - on - paste
От: AndrewJD США  
Дата: 21.02.07 15:34
Оценка:
Здравствуйте, ionicman, Вы писали:

I>А есть примеры реализации этих интерфейсов? Только на чистом API без всяких библиотек страшных типа stl и mfc?


Да не мерянно!
"For every complex problem, there is a solution that is simple, neat,
and wrong."
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.