Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2009.10.04;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.006 c
2-1248564636
xyz
2009-07-26 03:30
2009.10.04
занесение записи в БД ADO


15-1249331406
Юрий
2009-08-04 00:30
2009.10.04
С днем рождения ! 4 августа 2009 вторник


15-1248942849
Miob
2009-07-30 12:34
2009.10.04
Отключить обновление экрана монитора


15-1249310183
pasha_golub
2009-08-03 18:36
2009.10.04
Вызов Free (Destroy) внутри метода объекта


2-1248693315
evgenij
2009-07-27 15:15
2009.10.04
Access violation после выгрузки dll





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский