![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Мессагу на экран. [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]Прям ни кто не знает, можно подумать? или ....!