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

Вниз

Вывести часики поверх игр   Найти похожие ветки 

 
AndreW200   (2005-08-31 11:38) [0]

Как мне вывести часики, которые бы были всегда наверху, даже в играх. Независмо от того, что они используют DerictShow, OpenGL.


 
Кефир87 ©   (2005-08-31 15:14) [1]

TextOut(0, 0, DateTimeToStr(now));


 
MeF Dei Corvi ©   (2005-08-31 15:37) [2]

Бредовый вопрос :) Бредовая идея. Никак. А если какая-то программа сможет, то лично я бы снёс её сразу, т.к. мешает
> DerictShow, OpenGL.

Есть ещё Direct3D...


 
Sphinx ©   (2005-08-31 16:01) [3]

У меня вот SIM выводит свои сообщения поверх всего...написан на Qt - можешь попробовать юзать эту либу %)


 
RzCoDer ©   (2005-08-31 17:49) [4]

AndreW200, поставь будильник перед монитором или стикиры клей каждую минуту ;)


 
Brother   (2005-09-09 09:40) [5]

Лучше к будильнику ведро воды и в назначенный час как......


 
Fer   (2005-09-09 11:30) [6]

GETDC(0) и далее выводишь на него


 
Coriolis   (2005-09-09 12:20) [7]

Причём то что ты будешь выводить на нулевой DC надо очень быстро обновлять в цикле. Но тада будут ттттооорррррммммммоззззаааа...
У меня есть свои часики, у них в свойствах стоит StayOnTop. На опенGL ных играх они видны, правда мерцают. А вот на Dх - не видно совсем.

2 Sphinx: А чего за Qt? А можно подробней? Или ссылку на хомепаге этого проекта. Она что, реально выводит что-то поверх любого графич приложения и без глюков/тормозов?


 
Sphinx ©   (2005-09-09 17:16) [8]

2 Coriolis
Кто сказал что без глюков и тормозов ? :)

Qt - это клосплатформенная библиотека GUI а SIM - это клиент, в частности ICQ выполненный на этой библиотеке...

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


 
keal   (2005-09-12 13:48) [9]

а нельзя в каждом цикле узнавать dc активного окна и выводить на него?


 
Coriolis   (2005-09-12 16:35) [10]

То же самое что на нулевое. (см выше)
Будут большие тормоза.


 
Fer   (2005-09-12 17:25) [11]

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


 
OSokin ©   (2005-09-13 20:03) [12]

Sphinx ©   (31.08.05 16:01) [3]
А ты уверен, что у него линукс?..
Coriolis   (09.09.05 12:20) [7]
Правильно, они и будут мерцать!

Имхо, единственный путь - увеличить приоритет и желательно писать напрямую в видеопамять (или с помощью каких-нибудь спец функций, той же ПрямойРисовалки и т. п.)


 
Servelat ©   (2005-09-13 20:16) [13]

Еще один вариант от меня:
Ставим прогу VirtualPC (или как-то так называется, кто не в курсе, эта прога полностью эмулирует компьютер, то есть можно например под Windows поставить Linux и запускать его в окошке когда надо), потом устанавливаем в неё мастдай (Виндовс в смысле), потом разворачиваем на весь экран, потом выводим часики в своем процессе поверх окна указанной программы. Ах да, производительность такой системы будет... Хотя зачем сразу о грустном. Ну это так, мой вариант (кто-то же стикеры предложил, чем я хуже (=  )

А вообще, наибольший смысл я вижу во втором посте:

> А если какая-то программа сможет, то лично я бы снёс её
> сразу, т.к. мешает

Я бы тоже снес. Нафига мне часики или что там еще может быть во время игры? Работает от этого медленнее, может закрывать важные части интерфейса (я же больше чем в одну игру играю), да и отвлекает. Единственное применение такой ерунды я помню в компьютерных клубах, чтоб показывать, когда осталось 15 минут/5 минут/30 секунд до конца оплаченного времени, но там всех устраивал неторопливый мерцающий вариант.
__________________
Good luck & Have fun


 
Sphinx ©   (2005-09-13 21:18) [14]

2 OSokin ©  
Qt - клосплатформенная. Есть версия и для Windows.
Собственно SIM у меня под винью стоит...так сказать, память о днях пользования линуксом :)


 
Coriolis ©   (2005-09-27 16:41) [15]

2 OSokin (13.09.05 20:03) [12]
"Имхо, единственный путь - увеличить приоритет и желательно писать напрямую в видеопамять (или с помощью каких-нибудь спец функций, той же ПрямойРисовалки и т. п.)"
Каким это образом ты собираешься писать напрямую в видеопямять из уровня пользователя? Никак низзя.
DirectDraw - не прокатит. Никаким образом.
Когда графическая библиотека захватывает устройство, то оно получает эксклюзивный доступ к драйверу. Т.е. вывод на экран может производить только тот-же поток, что создал устройство. А другие сосут лапу.
Не, конечно можно внедриться в этот поток, перехватить функцию SwapBuffers, и рисовать свои часики. Вот только это уже не так просто.

2 Fer   (12.09.05 17:25) [11]
"после получения getdc(0) можно выводить на экран информацию.
При этом необязательно чтобы твоя прога с формой висела в stayontop, програ вообще (лучше) может быть без формы
Проблем не будет - Ты же выводишь не в какуюто поверхность или окно, ты выводишь на экран."
ага, когда ты сделаешь Getc(0), приложение, пока ты рисуешь, не может рисовать вплоть до освобождения DC. Т.е. чем чаще ты будешь отрисовывать свою надпись, тем больше будет задержка между кадрами.

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

Единственный выход(как мне кажется, но я не претендую на абсолютную истину)- это перехватывать функции SwapBuffers и Present.


 
Grief ©   (2005-09-27 19:39) [16]

Есть вариант - но надо и для директа и для опенджиэля по отдельности выводить. Возьмите к примеру Fraps - выводит поверх и не глючит и не тормозит - классная прога!


 
Sapersky   (2005-09-28 11:58) [17]

Если это о перехвате - то и для каждой версии директа по отдельности.
http://www.madshi.net/ -> madCodeHook


 
Grief ©   (2005-09-28 16:26) [18]

не совсем для каждой, да и имеет ли это смысл, достаточно для восьмого, девятого и еще пораньше какого-нить...


 
Cash ©   (2005-10-02 21:04) [19]

Эй, Эй, Эй. Sory about next words.
Ну что это такое, прочитал я первые два сообщения офигел (не понял юмора), прочитал нес-ко последних - офигел еще раз (опять не понял).
Тут чё, все на GameDev-е выросли, чтоли, и DirectX толком не нюхали (for this now)???
 В пакете DirectX SDK усть такая прикольная тулза, называется DirXSpy, я думаю это название пояснять не надо. Оно конечно все на VC++, но это не мешает библиотека то консольная, а юнит функцый под OP(Delphi) передлать легко. Она все DirectX API отлавливает, с возвратом адресов!
Что мешает отловить создание D3D и Device, а?
А что потом с этими адресами можно делать!!!
Надо только синхронизацыю с процессом отрисовки провести, чтоб мерцания небыло.
(Sory once more if i acting your comfort)

С OpenGL я работал мало, поэтому толком не знаю, но чтото во всемирной видел.


 
Kerk ©   (2005-10-02 22:28) [20]

Cash ©   (02.10.05 21:04) [19]

А что у тебя с Russian? (Sorry, что по-английски).



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

Форум: "Игры";
Текущий архив: 2006.04.16;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.5 MB
Время: 0.039 c
8-1130421802
Андрей_7
2005-10-27 18:03
2006.04.16
Как программным путем вставлять в Nero Wave Editor волны


15-1142731950
Лорд Байрон
2006-03-19 04:32
2006.04.16
Проблемы с виндой


2-1143649954
tort
2006-03-29 20:32
2006.04.16
Как установить коррдинаты курсора в МЕМО?


15-1143551972
oldman
2006-03-28 17:19
2006.04.16
Для любителей группы "Черный кофе" (старой, годика 1987....)


4-1138288327
Vlad2
2006-01-26 18:12
2006.04.16
Как получить Handle статически (LIB) загружаемой 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
Английский Французский Немецкий Итальянский Португальский Русский Испанский