Форум: "Начинающим";
Текущий архив: 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.007 c