Форум: "Система";
Текущий архив: 2003.01.27;
Скачать: [xml.tar.bz2];
Вниз
Мессагу на экран. Найти похожие ветки
← →
vidiv (2002-11-11 12:37) [0]Люди, помогите: как выдать на экран некоторый текст, и что бы через некоторое время он исчез. Мне надо, что бы железно работале и на нормальном (не ига) режиме, так и в режиме игры. т.е. я пытвюсь нарисовать на экране ( TextOut(Getdc(0),0,0,"..",n) ), но DirectX все стирает. Может есть какие нибудь другие пути решения этой задачи. Все это на D5 и под 9x
← →
vidiv (2002-11-12 02:11) [1]Прям ни кто не знает, можно подумать? или ....!
← →
apay (2002-11-12 02:21) [2]LockWindowUpdate( GetDesktopWindow );
Sleep( x );
LockWindowUpdate( 0 );
может понадобиться залокить еще и в DirectX.
← →
vidiv (2002-11-12 04:25) [3]2apay
КАК залокить DirectX?
← →
Song (2002-11-12 09:02) [4]Через сам же DirectDraw
← →
vidiv (2002-11-12 09:07) [5]2Song
Я вообще чуть-чуть работал с DirectX но это было через DelphiX и естественно там особо думать не приходится, поэтому я вообще не знаю, какие там есть функции. Может лучше всего и использовать DirectX для вывода на экран, ведь некоторые программы это делают (например NVidia выдает свой логотип). Если будет не трудно, Song, скажи конкретнее, и(или) ссылочкой.
← →
Song (2002-11-12 09:19) [6]Я не работал с DirectX
← →
ggrisha (2002-11-12 10:27) [7]Нужно просто перерисовывать это сообщение почаще, т.к. не факт что игра будет в режиме DirectX.
← →
vidiv (2002-11-12 11:00) [8]2ggrisha
Мы сейчас про это и говорим. Если выводить его по чаще он всеравно будет моргать.
А можно ли сделать так, что бы нарисовал, подвесил комп на время(забрать 100% времени проца), подождал и отпустил?
← →
ggrisha (2002-11-12 13:04) [9]Чтобы не моргала синхронизуй вывод сообщения с вертикальной разверткой.
← →
vidiv (2002-11-12 15:52) [10]2 ggrisha
А КАК?
← →
BigDAN (2002-11-12 17:53) [11]Каковы методы синронизации вывода с разверткой, если не используешь DirectX? AFAIK используя GUI это сделать невозможно!
← →
apay (2002-11-12 22:53) [12]как залокить 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;
← →
vidiv (2002-11-15 01:42) [13]это не работает
← →
apay (2002-11-15 01:48) [14]попробуй в добавок к этому сделать
LockWindowUpdate( GetDesktopWindow );
я когда-то писал фоновую программку, которая не давала другим рисовать, к сожалению исходники утеряны :(
Страницы: 1 вся ветка
Форум: "Система";
Текущий архив: 2003.01.27;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.009 c