|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
08.06.2007, 21:30 | #1 |
Новичок
Джуниор
Регистрация: 08.06.2007
Сообщений: 1
|
Drag n Drop объект в чужом окне
Подскажите пожалуйста, как сделать так, чтобы в любом окне можно было создать Drag&Drop объект, который будет являться копией объекта из моей программы.. Т.е. предположим в моей программе есть квадратик, который можно перемещать, мне надо создать его копию в любом окне, в котором он также сможет перемещаться и после сворачивания/разворачивания чужого окна его координаты оставались бы прежними.. Зараниее спасибо =)
|
09.06.2007, 07:55 | #2 |
добрый няша
Старожил
Регистрация: 29.10.2006
Сообщений: 4,804
|
в чужом окне нельзя создать какой-либо объект.
|
10.06.2007, 12:18 | #3 |
Пользователь
Регистрация: 08.04.2007
Сообщений: 15
|
Вы меня удивляете. Имея хэндл чужого окна, можно сделать с ним всё тоже, что и с собственным. Всё, что нужно - это: 1) Написать функцию (обработчик событий) вида LRESULT CALLBACK WindowProc(HWND,UINT,WPARAM,LPARAM) в которой реализуйте Drag n Drop - это достаточно просто. Для этого нужно будет обработать всего два события - WM_LBUTTONDOWN и WM_LBUTTONUP. При реализации этого используйте функцию SetCapture, чтобы при выходе курсора за границы окна во время перетаскивания, перетаскиваемый объект не "падал". В своё время я с этим намучился. 2) Зарегестрируйте свой класс (RegisterWindowClassEx) - в вашем примере, ShiSha_34, это будет чёрное окно без рамки. В качестве соответсвующего параметра (я имею ввиду поле lpfnWndProc структуры WNDCLASSEX) ф-ии RegisterWindowClassEx укажите написанный вами обработчик событий. 3) Получите хэнл окна, в котором вы хотите создать свой чёрный квадрат. Это можно сделать, например, заная имя и (или) класс чужого окна при помощи ф-ии FindWindow. Или же поставить ловушку (SetWindowHook), которая будет срабатывать при клике мышкой на выбраном окне. Метод не важен и здесь о них писали предостаточно. Получив хэндл чужого окна, создайте свой объект при помощи ф-ии CreateWindowEx, в которой в качестве класса укажите зарегестрированный вами клас (пункт 2), а в качестве хэндла родительского окна - полученный хэндл. В результате должно получиться то, что вы описали в вопросе. Для получения более подробно информации воспользуйтесь WIN32 Programmer's Reference.
Практика - лучший критерий истины. К.Маркс.
|
12.06.2007, 20:10 | #4 |
добрый няша
Старожил
Регистрация: 29.10.2006
Сообщений: 4,804
|
я сомневаюсь......
при создании чего либо на чужом окне и при каких либо действиях с ним сообщение будет посылаться форме чужого приложения, и обрабатывать его будет процедура которую зарегистрировала чужая программа -------------------------- ладно, допустим ты прав приведи пример: сделай два приложения, одно приложение с одной пустой формой, и второе которое будет осуществлять всё приведённые тобою действия |
12.06.2007, 21:24 | #5 | |
Студент
Форумчанин
Регистрация: 10.11.2006
Сообщений: 196
|
To Unnamed:
Цитата:
интересная тема.
Visita Interiorem Terrae Rectificando Operae Lapidem...
|
|
14.06.2007, 14:09 | #6 | ||
Пользователь
Регистрация: 08.04.2007
Сообщений: 15
|
Цитата:
Цитата:
Вот код первого приложения (пустая форма). Это можно не читать, важно только то, что класс окна и его имя - SIMPLE_WINDOW. Код сгенерирован автоматически средой Code::Blocks. Код:
Практика - лучший критерий истины. К.Маркс.
Последний раз редактировалось Stilet; 09.11.2010 в 09:42. |
||
14.06.2007, 14:58 | #7 |
Пользователь
Регистрация: 08.04.2007
Сообщений: 15
|
Вот код второго приложения, которое при запуске находит по имени первое приложение и создаёт в нём синий квадрат. Кварат ведёт себя как родной: его можно перетаскивать в окне мышкой, при сворачивании и разворачивании окна квадрат востанавливается в прежней позиции.
Код:
Практика - лучший критерий истины. К.Маркс.
|
14.06.2007, 18:33 | #8 |
я получил эту роль
Старожил
Регистрация: 25.05.2007
Сообщений: 3,694
|
Респект Безымянному =)
//Правда не проверял
пыщь
|
09.11.2010, 02:19 | #9 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,357
|
Прикольная программа, правда у меня в Win 7 в ней разные глюки.
То квадрат есть, то нет. При перетаскивании за границы формы и обратно квадрат покрывается непонятными полосками(
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
drag $ drop в DBGrid | AlexandrSid | Общие вопросы Delphi | 13 | 21.06.2010 10:55 |
Помогите с drag-and-drop | Cezar | Win Api | 3 | 19.10.2008 15:48 |
Drag&Drop в ListBox'ах | MAKEDON | Общие вопросы Delphi | 3 | 21.08.2008 13:12 |
Drag&Drop | shtuceron | Общие вопросы Delphi | 3 | 09.04.2008 19:04 |
Drag and Drop | Xardas | Общие вопросы Delphi | 8 | 20.01.2008 23:09 |