Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.10.04;
Скачать: CL | DM;

Вниз

3D игра - переход от управления с клавы на мышь   Найти похожие ветки 

 
thing ©   (2009-07-20 22:38) [0]

Приветствую Вас, уважаемые.

Прошу вашей помощи в решение задачи!

Есть игрушка, которая стартует в полноэкранном режиме (разрешение 640х480) управление производится с помощью клавиатуры, программа написана на том же дельфи, используется TDXDraw. Прога реагирует на альтаб, но не переходит в оконный режим, а просто сворачивается.

Мне необходимо реализовать управление мышкой, т.е. всё управление переложить на мыша.

Пришла такая мысль, что каким-то образом вытащить игрушку из полноэкранного режима в оконный (если это возможно) задать размеры, положение, стиль главному окну игрушки и надстроить к ней кнопки (по клику на эти нарисованные отправлять PostMessage"м коды кнопок). Прога с кнопками это уже отдельное приложение, которое по задумке будет не перехватывая фокус "висеть" позади игрушки.

иллюстрация http://imageshost.ru/links/237cb80e20480c8950247f9764a44ddd

Нашел, способ задать рабочее пространство экрана (т.к. из хелпа по DXDraw понял, что переход в полноэкранный "doFullScreen" режим осуществляется путём вычисление рабочей области экрана - прим.перевод) - SystemParametersInfo(SPI_SETWORKAREA, 0, @Rect, SPIF_SENDCHANGE). Как я понял из эксперимента SPI_SETWORKAREA хорош для стандартных прог, а игрушке фиолетово, какая рабочая область задана.

Может есть у кого идеи как решить эту задачку?

Заранее благодарю за ответ!


 
KilkennyCat ©   (2009-07-20 22:52) [1]

Что-то я не совсем понял цели перевода в оконный режим... только для того, чтобы получить мышиное управление? Но оно и в полноэкранном работает и очень даже хорошо работает...
А какие-то фоновые приложения, что-то перехватывающие, в данном случае, извиняюсь, бред полнейший.


 
thing ©   (2009-07-20 23:00) [2]

2KilkennyCat

Цель перевода в оконный режим - нарисовать кнопки по которым можно кликать :), т.к. в игрушке нет этих нарисованных кнопок. То есть полностью отказаться от управления с клавы. Вот почему и пришла мысль о приложении на фоне.


 
@!!ex ©   (2009-07-20 23:14) [3]

Я бы перехватывал контекст и рисовал прямо в фуллскрине.


 
thing ©   (2009-07-20 23:21) [4]

Спасибо за то, что откликнулись!

2@!!ex

Если я правильно понял, то Вы предлагаете рисовать прямо на игрушке. Я об этом думал, но там места нет :(


 
@!!ex ©   (2009-07-20 23:41) [5]

> [4] thing ©   (20.07.09 23:21)

А типа в оконном режиме оно появиться? :))
Сделай псевдо окошко, котороу пользователь сам разместит там, где ему удобно будет. Как в Urban Assault сделано


 
thing ©   (2009-07-20 23:58) [6]

2@!!ex

Отличная идея (если делать полупрозрачные кнопки)! Спасибо!
Но вот теперь проблема с тем, чтобы вывести окно своей проги поверх игрушки.

Попробовал поставить на таймер


showwindow(Application.handle, SW_SHOWNOACTIVATE);
SetForegroundWindow(Application.handle);


- окно появляется на секунду, но потом снова исчезает.


 
KilkennyCat ©   (2009-07-21 00:01) [7]

так игрушка не твоя, что ли?


 
thing ©   (2009-07-21 00:04) [8]


> А типа в оконном режиме оно появиться? :))

в том плане, что поместить окно игрушки в нужное место на экране (привёл пример на картинке). - в оконном режиме размер окна игрушки был бы 640х480, а разрешение выставить 800х600, следовательно, остальное пространство можно было бы отдать под кнопки :) - вот такая была идея


 
thing ©   (2009-07-21 00:05) [9]


> так игрушка не твоя, что ли?

Забыл сказать. Прошу прощения.
Нет, игрушка не моя :(( - если бы была моя, то проблем бы не было :)))


 
@!!ex ©   (2009-07-21 01:42) [10]

> [6] thing ©   (20.07.09 23:58)

Ну нужно дополнительное окно. Я в первос своем сообщении написал: перехватывай DX контекст и рисуй прямо поверх игры.
Это лучшй вариант.
Я так делал в Tactics"e: http://sol-online.org/index.php?content=info&project=tactics
У меня правда всего ничего: текст, да стрелка.
Тебе придеться рисовать больше, но количество значения не имеет. Главное контекст поймать.


 
thing ©   (2009-07-21 02:04) [11]


> @!!ex ©

а что значить "контекст поймать" ?


 
@!!ex ©   (2009-07-21 10:17) [12]

> [11] thing ©   (21.07.09 02:04)

Получить достум к управлению DX.


 
thing ©   (2009-08-01 02:30) [13]


> @!!ex


Спасибо огромное за помощь!
Нашел даже ещё один способ - длл-инъекция с созданием дочернего окна, а уже на этом окне всё, что угодно можно разместить.



Страницы: 1 вся ветка

Текущий архив: 2009.10.04;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.016 c
15-1248790363
Копир
2009-07-28 18:12
2009.10.04
Большой российский суперкомпьютер.


2-1249326273
Ruzzz
2009-08-03 23:04
2009.10.04
Как "дорисовать" стандартный компонент ОС?


2-1248933090
Someone
2009-07-30 09:51
2009.10.04
Как изменить значение ключа в реестре (по умолчанию)?


15-1249245002
Юрий
2009-08-03 00:30
2009.10.04
С днем рождения ! 3 августа 2009 понедельник


2-1248965387
xyz
2009-07-30 18:49
2009.10.04
не компилируется MessageBox