Quest3D - Русскоязычное сообщество

Quest3D => Логика => Тема начата: Alteste от 21 Июня 2010, 10:27:46



Название: Перемещаемое GUI
Отправлено: Alteste от 21 Июня 2010, 10:27:46
Как сделать блок с GUI перемещаемым при помощи мышки? Как обычное окно виндовс


Название: Re: Перемещаемое GUI
Отправлено: DimiS от 21 Июня 2010, 14:42:29
отслеживать когда произошел клик по прямоугольнику твоего окошка, далее изменять координаты твоего окошка в соответствиями с изменением координат мышки
как то так


Название: Re: Перемещаемое GUI
Отправлено: Ruslan от 21 Июня 2010, 14:53:20
Alteste
Зеленым я пометил участок, где провожу проверку на то, что указатель мышки не находится на некоторых компонентах GUI.


Название: Re: Перемещаемое GUI
Отправлено: Alteste от 27 Июня 2010, 14:36:24
При использовании Win32 SetWindow - со всеми снятыми галочками окно проекта появляется чистое, без рамок и верхней панели. Как в самом квесте сделать свою панель, за которую можно было бы таскать мышкой окно проекта?


Название: Re: Перемещаемое GUI
Отправлено: DimiS от 28 Июня 2010, 19:18:46
никак, в самом квесте никак
можешь сделать свой ченел который будет отправлять твоему окну новые координаты и в квесте поместить всю логику по рисвоанию панельки и обработке клика по ней
ещё можеш написать такой ченел, который будет просто виндовыми средствами рисовать нужную тебе верхнюю панель


Название: Re: Перемещаемое GUI
Отправлено: dfx от 10 Июля 2010, 14:32:02
Цитировать
При использовании Win32 SetWindow - со всеми снятыми галочками окно проекта появляется чистое, без рамок и верхней панели. Как в самом квесте сделать свою панель, за которую можно было бы таскать мышкой окно проекта?

Цитировать
никак, в самом квесте никак

Что то мне подсказывает, что такое можно сделать.
Такой подход пробовали? -

Псевдокод:
Код:
onMouseDown
windowPosX = mouseScreenPosX-mouseViewPortPosX
mouseOffsetX = mouseScreenPosX
windowPosY = mouseScreenPosY-mouseViewPortPosY
mouseOffsetY = mouseScreenPosY
onMousePressed
SetWidowPos(
X = (mouseScreenPosX - mouseOffsetX)+windowPosX,
Y = (mouseScreenPosY - mouseOffsetY)+windowPosY)

Добавлено позже:

Попробовал, вроде работает.(см. вложенный файл)


Название: Re: Перемещаемое GUI
Отправлено: Ruslan от 10 Июля 2010, 19:28:39
dfx
Как это применять в реальном проекте, и есть ли в этом смысл?


Название: Re: Перемещаемое GUI
Отправлено: DimiS от 10 Июля 2010, 21:46:26
да, действительно можно, каюсь
чёто завтыкал что у канала СетВиндоу можно ещё и координаты окна передавать


Название: Re: Перемещаемое GUI
Отправлено: dfx от 11 Июля 2010, 13:38:39
to Ruslan.
Наверное есть ситуации, где это может понадобиться. Только почему этот вопрос адресован мне?


Название: Re: Перемещаемое GUI
Отправлено: Ruslan от 11 Июля 2010, 13:45:54
dfx
Можете не отвечать, я предположил, что вы подскажете, где этот метод может быть полезен, раз вы его привели.
Вопрос в теме был:
Цитировать
Как сделать блок с GUI перемещаемым при помощи мышки? Как обычное окно виндовс
Вот я и спрашиваю, возможно ли при помощи описанного выше метода создать несколько окон, привязать к ним группы элементов ГУИ, и что бы можно было мышкой передвигать эти окна, вместе с элементами, в основном окне приложения?


Название: Re: Перемещаемое GUI
Отправлено: dfx от 11 Июля 2010, 18:34:35
Руслан, это ответ на вопрос, где Alteste спросил, как перетаскивать окно проекта, если к нему применен стиль без рамок и заголовка. Я специально вывел цитаты, что бы было понятно. :) Я думаю, что это может понадобиться, если нужен уникальный вид окна проекта. Я не исключаю таких ситуаций, но сам с ними не сталкивался. Будьте внимательнее, пожалуйста.