Есть MFC приложение с MDI-архитектурой. Был реализован Drag and Drop для файлов с помощью стандартного механизма: DragAcceptFiles() и его друзей.
Есть ли простое решение для текста.
Нашел статью в MSDN -- там предлагают наследоваться от COleDropTarget и реализовывать несколько методов. Неужели нет вариантов по-проще?
ББ
12.10.06 18:09: Перенесено модератором из 'C/C++. Прикладные вопросы' — Кодт
Здравствуйте, 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."
Появился такой вопрос: В MDI во View есть контрол, который поддерживает Drag and Drop, но не так как мне нужно (контрол менять я не могу). Поэтому ему нужно запретить это делать (возвращать DROPEFFECT_NONE). Единственное, что мне пришло в голову -- это в обработчике OnDragOver для MainFrame проверять, находится ли указатель мыши в области окна контрола и возвращать DROPEFFECT_NONE когда необходимо. Это не сработало, т.к. когда я тащу что-то в области контрола уведомление не приходит в обработчик MainFrame.
Интересно также, почему не работают стандартные обработчики View.
Здравствуйте, 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."
А можно ли заставить дочерний контрол не блокировать Drag Drop ообщения в случае незнакомого формата данных. Иными словами, если дочерний контрол не знает как обработать тип данных, то он возвращает DROPEFFECT_NONE, при этом сообщение не доходит до родительского окна с собственным обработчиком, который знает как обработать данный Drag Drop.
Как сделать так, чтоб дочерний контрол при неизвесном формате, отправлял сообщение дальше наверх, а не блокировал его.
Здравствуйте, Аноним, Вы писали:
А>А можно ли заставить дочерний контрол не блокировать 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?