MDI, Drag and Drop
От: BorysB  
Дата: 12.10.06 12:44
Оценка:
Есть MFC приложение с MDI-архитектурой. Был реализован Drag and Drop для файлов с помощью стандартного механизма: DragAcceptFiles() и его друзей.
Есть ли простое решение для текста.
Нашел статью в MSDN -- там предлагают наследоваться от COleDropTarget и реализовывать несколько методов. Неужели нет вариантов по-проще?

ББ

12.10.06 18:09: Перенесено модератором из 'C/C++. Прикладные вопросы' — Кодт
Re: MDI, Drag and Drop
От: AndrewJD США  
Дата: 12.10.06 13:29
Оценка:
Здравствуйте, BorysB, Вы писали:

BB>Есть MFC приложение с MDI-архитектурой. Был реализован Drag and Drop для файлов с помощью стандартного механизма: DragAcceptFiles() и его друзей.

BB>Есть ли простое решение для текста.
BB>Нашел статью в MSDN -- там предлагают наследоваться от COleDropTarget и реализовывать несколько методов. Неужели нет вариантов по-проще?

Куда же еще проще? За тебя уже все реализованно осталось только определить принимаешь ли ты данные и зарегестрировать окно
"For every complex problem, there is a solution that is simple, neat,
and wrong."
Re: MDI, Drag and Drop
От: BorysB  
Дата: 19.10.06 07:51
Оценка:
Появился такой вопрос: В MDI во View есть контрол, который поддерживает Drag and Drop, но не так как мне нужно (контрол менять я не могу). Поэтому ему нужно запретить это делать (возвращать DROPEFFECT_NONE). Единственное, что мне пришло в голову -- это в обработчике OnDragOver для MainFrame проверять, находится ли указатель мыши в области окна контрола и возвращать DROPEFFECT_NONE когда необходимо. Это не сработало, т.к. когда я тащу что-то в области контрола уведомление не приходит в обработчик MainFrame.

Интересно также, почему не работают стандартные обработчики View.
Re[2]: MDI, Drag and Drop
От: AndrewJD США  
Дата: 19.10.06 08:16
Оценка: 2 (1)
Здравствуйте, BorysB, Вы писали:

BB>Появился такой вопрос: В MDI во View есть контрол, который поддерживает Drag and Drop, но не так как мне нужно (контрол менять я не могу). Поэтому ему нужно запретить это делать (возвращать DROPEFFECT_NONE). Единственное, что мне пришло в голову -- это в обработчике OnDragOver для MainFrame проверять, находится ли указатель мыши в области окна контрола и возвращать DROPEFFECT_NONE когда необходимо. Это не сработало, т.к. когда я тащу что-то в области контрола уведомление не приходит в обработчик MainFrame.


Сделай RevokeDragDrop для окна контрола.

BB>Интересно также, почему не работают стандартные обработчики View.

Потому что сначала обрабатываются child контролы
"For every complex problem, there is a solution that is simple, neat,
and wrong."
Re[3]: MDI, Drag and Drop
От: BorysB  
Дата: 19.10.06 09:36
Оценка:
Спасибо
Re[3]: MDI, Drag and Drop
От: Аноним  
Дата: 25.10.06 15:19
Оценка:
А можно ли заставить дочерний контрол не блокировать Drag Drop ообщения в случае незнакомого формата данных. Иными словами, если дочерний контрол не знает как обработать тип данных, то он возвращает DROPEFFECT_NONE, при этом сообщение не доходит до родительского окна с собственным обработчиком, который знает как обработать данный Drag Drop.
Как сделать так, чтоб дочерний контрол при неизвесном формате, отправлял сообщение дальше наверх, а не блокировал его.
Re[4]: MDI, Drag and Drop
От: AndrewJD США  
Дата: 25.10.06 18:03
Оценка:
Здравствуйте, Аноним, Вы писали:

А>А можно ли заставить дочерний контрол не блокировать Drag Drop ообщения в случае незнакомого формата данных. Иными словами, если дочерний контрол не знает как обработать тип данных, то он возвращает DROPEFFECT_NONE, при этом сообщение не доходит до родительского окна с собственным обработчиком, который знает как обработать данный Drag Drop.

А>Как сделать так, чтоб дочерний контрол при неизвесном формате, отправлял сообщение дальше наверх, а не блокировал его.

Ставить свой обработчик, если нельзя исходники менять. Если дочерный контрол твой, то пусть спрашивавет у парента.
"For every complex problem, there is a solution that is simple, neat,
and wrong."
Re[5]: MDI, Drag and Drop
От: Аноним  
Дата: 27.10.06 12:47
Оценка:
Как можно (и можно ли) определить зарегистрировано ли окно как Drop Target или нет?
Есть ли стандартное сообщение, соответсятвующее событию, допустим, ОnDragOver?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.