Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Мессагу на экран. [D5, Win95/98]


vidiv ©   (2002-11-11 12:37:00) 

Люди, помогите: как выдать на экран некоторый текст, и что бы через некоторое время он исчез. Мне надо, что бы железно работале и на нормальном (не ига) режиме, так и в режиме игры. т.е. я пытвюсь нарисовать на экране ( TextOut(Getdc(0),0,0,"..",n) ), но DirectX все стирает. Может есть какие нибудь другие пути решения этой задачи. Все это на D5 и под 9x


apay   (2002-11-15 01:48:00) [1]

попробуй в добавок к этому сделать

LockWindowUpdate( GetDesktopWindow );

я когда-то писал фоновую программку, которая не давала другим рисовать, к сожалению исходники утеряны :(


vidiv   (2002-11-15 01:42:00) [2]

это не работает


apay   (2002-11-12 22:53:00) [3]

как залокить DirectX:
я использовал DirectX.pas из http://www.ingjapan.ne.jp/hori/index-e.html
это должно выглядеть примерно так:

...
var
DDSD: TDDSurfaceDesc;
FddScreen: IDirectDrawSurface;
FddScreen: IDirectDrawSurface;
...
Rc := ... (bounds-rectangle of desired area);
...
try
if DirectDrawCreate( nil, FddInterface, nil ) <> DD_OK then Abort;
try
DDSD.dwSize := SizeOf(DDSD);
DDSD.dwFlags := DDSD_CAPS;
DDSD.ddsCaps.dwCaps := DDSCAPS_PRIMARYSURFACE;
if FddInterface.CreateSurface( DDSD, FddScreen, nil ) <> DD_OK then Abort;
try
DDSD.dwSize := SizeOf(DDSD);
DDSD.dwFlags := DDSD_CAPS;
DDSD.ddsCaps.dwCaps := DDSCAPS_PRIMARYSURFACE;
if FddScreen.Lock( nil, DDSD, DDLOCK_WAIT, 0 ) <> DD_OK then Abort;
try
...
Sleep( x );
...
finally
FddScreen.Unlock( nil );
end;
finally
FddScreen := nil;
end;
finally
FddInterface := nil;
end;
except
(error handling)
end;


BigDAN   (2002-11-12 17:53:00) [4]

Каковы методы синронизации вывода с разверткой, если не используешь DirectX? AFAIK используя GUI это сделать невозможно!


vidiv   (2002-11-12 15:52:00) [5]

2 ggrisha
А КАК?


ggrisha   (2002-11-12 13:04:00) [6]

Чтобы не моргала синхронизуй вывод сообщения с вертикальной разверткой.


vidiv   (2002-11-12 11:00:00) [7]

2ggrisha
Мы сейчас про это и говорим. Если выводить его по чаще он всеравно будет моргать.

А можно ли сделать так, что бы нарисовал, подвесил комп на время(забрать 100% времени проца), подождал и отпустил?


ggrisha   (2002-11-12 10:27:00) [8]

Нужно просто перерисовывать это сообщение почаще, т.к. не факт что игра будет в режиме DirectX.


Song   (2002-11-12 09:19:00) [9]

Я не работал с DirectX


vidiv   (2002-11-12 09:07:00) [10]

2Song
Я вообще чуть-чуть работал с DirectX но это было через DelphiX и естественно там особо думать не приходится, поэтому я вообще не знаю, какие там есть функции. Может лучше всего и использовать DirectX для вывода на экран, ведь некоторые программы это делают (например NVidia выдает свой логотип). Если будет не трудно, Song, скажи конкретнее, и(или) ссылочкой.


Song   (2002-11-12 09:02:00) [11]

Через сам же DirectDraw


vidiv   (2002-11-12 04:25:00) [12]

2apay
КАК залокить DirectX?


apay   (2002-11-12 02:21:00) [13]

LockWindowUpdate( GetDesktopWindow );
Sleep( x );
LockWindowUpdate( 0 );

может понадобиться залокить еще и в DirectX.


vidiv   (2002-11-12 02:11:00) [14]

Прям ни кто не знает, можно подумать? или ....!


Наверх

Титульная страница Поиск, карта сайта Написать письмо