Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Drag and Drop 
:(
    Опции темы
Toohtik
Дата 1.12.2006, 20:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 142
Регистрация: 30.1.2006
Где: Харьков

Репутация: нет
Всего: нет



Есть окошко. Надо чтоб при бросании на него файла определялось месторасположение файла. Достаточно ли трудно это делать?  Есть ли какянибудь литература на эту тему?
PM ICQ   Вверх
rsm
Дата 2.12.2006, 00:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 999
Регистрация: 16.3.2005

Репутация: 4
Всего: 62



Функции DragAcceptFiles и DragQueryFile тебе в помощь. Код простой, в несколько строчек.
PM MAIL   Вверх
Toohtik
Дата 2.12.2006, 01:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 142
Регистрация: 30.1.2006
Где: Харьков

Репутация: нет
Всего: нет



Цитата

Функции DragAcceptFiles и DragQueryFile тебе в помощь. Код простой, в несколько строчек.


Слышал про них, но там где я читал указывалось что надо еще вектор прерываний строить... 

rsm, ты кстати первый говориш что это легко сделать, это меня и сильно смущало...
PM ICQ   Вверх
rsm
Дата 2.12.2006, 02:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 999
Регистрация: 16.3.2005

Репутация: 4
Всего: 62



Цитата(Toohtik @  2.12.2006,  03:30 Найти цитируемый пост)
надо еще вектор прерываний строить...
 smile Не путай DOS с Windows.

Цитата(Toohtik @  2.12.2006,  03:30 Найти цитируемый пост)
ты кстати первый говориш что это легко сделать
Потому что это действительно легко сделать, в аттаче пример.

Присоединённый файл ( Кол-во скачиваний: 26 )
Присоединённый файл  dragndrop.zip 2,57 Kb
PM MAIL   Вверх
Toohtik
Дата 3.12.2006, 22:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 142
Регистрация: 30.1.2006
Где: Харьков

Репутация: нет
Всего: нет



Вроде все легко и в премере разобрался но не могу понять что значит в 
Код
DragQueryFile((HDROP) wParam, i, szFileName, MAX_PATH);
 
(HDROP) wParam? В MSDN написано, что 
Цитата

hDrop
Identifier of the structure containing the file names of the dropped files. 

Т.е. должна быть структура?
PM ICQ   Вверх
rsm
Дата 4.12.2006, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 999
Регистрация: 16.3.2005

Репутация: 4
Всего: 62



Цитата(Toohtik @  4.12.2006,  00:33 Найти цитируемый пост)
Т.е. должна быть структура?
Просто переведи и все станет ясно: Identifier of the structure containing the file names of the dropped files = Идентификатор структуры, содержащей имена "брошенных" файлов.
PM MAIL   Вверх
Emura
Дата 4.6.2009, 00:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 102
Регистрация: 7.2.2009

Репутация: 1
Всего: 1



автор топика задал вопрос о drag&drop относительно файлов, хотелось бы услышать что-нибудь относительно объектов.

понял что надо смотреть на DragObject, но этой функции даже в справке нет.

спасибо.
ps. drag&drop в рамках одного процесса.

провел эксперимент с одним окном

Код

// отправляем данные
        int gg=88;
        DragObject(hwnd, hwnd, 0, (ULONG_PTR)&gg, 0);


// а вот так получаем
// получаем данные по сообщению 0x022B, отлавливал на угад 
// приходит еще 0x022D, что оно значит не понял, описания не нашел

        DROPSTRUCT *info =(DROPSTRUCT*)lParam;
        int g=*(int*)info->dwData;


самое удивительное что сработало!  но что-то мне подсказывает что чтото здесь не так smile







Это сообщение отредактировал(а) Emura - 4.6.2009, 00:13
PM   Вверх
GremlinProg
Дата 4.6.2009, 00:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 99
Всего: 106



Цитата(Emura @  4.6.2009,  02:03 Найти цитируемый пост)
автор топика задал вопрос о drag&drop относительно файлов, хотелось бы услышать что-нибудь относительно объектов.

каких объектов?
что-то конкретное, или вообще, любая информация?

Цитата(Emura @  4.6.2009,  02:03 Найти цитируемый пост)

...
DragObject
...
DROPSTRUCT *info
...

это из какой оперы?

управляемый перенос чего-либо осуществляется через интерыейс захвата мыши: SetCapture, ReleaseCapture
на событиях WM_LBUTTONDOWN, WM_MOUSEMOVE, WM_LBUTTONUP
в режиме захвата, инициатор переноса (источник) получает все сообщения мыши, поэтому всегда можно проконтролировать куда был "опущен" объект при переносе (определить приемник), и сделать необходимые действия в цепочке "источник -> приемник"


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
Emura
Дата 4.6.2009, 01:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 102
Регистрация: 7.2.2009

Репутация: 1
Всего: 1



Цитата

каких объектов?
что-то конкретное, или вообще, любая информация?



да хотябы указатель. наверное с ним универсальней будет. а пробовал вот с интом.


Цитата

это из какой оперы?


winuser.h smile
чуть повыше объявления этих функций

Код

#if(WINVER >= 0x0400)
//
// Drag-and-drop support
// Obsolete - use OLE instead
//


Цитата

управляемый перенос чего-либо осуществляется через интерыейс захвата мыши: SetCapture, ReleaseCapture
на событиях WM_LBUTTONDOWN, WM_MOUSEMOVE, WM_LBUTTONUP
в режиме захвата, инициатор переноса (источник) получает все сообщения мыши, поэтому всегда можно проконтролировать куда был "опущен" объект при переносе (определить приемник), и сделать необходимые действия в цепочке "источник -> приемник"


хм.. идея понятна про реализацию спрошу.

например:
есть два окна, расположены на родителе(третьем окне). и надо передать структуру от одного окна другому. следовательно первое окно должно отдавать, а второе принимать. каким образом заставить второе окно в нужный момент среагировать? (если сообщения отсылаются первому) т.е. какова здесь правильная последовательность действий.


Это сообщение отредактировал(а) Emura - 4.6.2009, 01:12
PM   Вверх
Emura
Дата 5.6.2009, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 102
Регистрация: 7.2.2009

Репутация: 1
Всего: 1



сделал всетаки этот драгдроп! надо было в пределах своего поцесса поэтому заморачиваться не стал и придумал свою реализацию. отталкивался при создании от совета GremlinProg'а. 

попутный вопрос:
при перемещении мышкой тех же папок под курсором мы видим полупрозрачную иконку "схваченной" папки. как можно реализовать подобный эффект? создавать временное окно под курсором? или есть более рациональное решение?

Это сообщение отредактировал(а) Emura - 5.6.2009, 13:06
PM   Вверх
GremlinProg
Дата 5.6.2009, 13:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 99
Всего: 106



Цитата(Emura @  5.6.2009,  15:06 Найти цитируемый пост)
при перемещении мышкой тех же папок под курсором мы видим полупрозрачную иконку "схваченной" папки. как можно реализовать подобный эффект?

http://www.i2r.ru/static/565/out_17613.shtml
смотри раздел "Опеpации Drag-and-Drop над контpолом tree view"
аналогично, с помощью ImageList'а реализуется механизм в любом окне

недостаток: такой полупрозрачный "курсор" может находиться только в пределах какого-либо окна


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.1077 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.