Показать сообщение отдельно
  #2  
Старый 12.05.2011, 12:56
Аватар для ~TB~
~TB~ ~TB~ вне форума
Начинающий
 
Регистрация: 17.02.2006
Адрес: Казахстан
Сообщения: 172
Версия Delphi: XE
Репутация: 1500
По умолчанию

Код:
interface
type
// класс потока
  TMainThread = class(TThread)
  private
  protected
    procedure Execute; override;
  end;

var
// собственно сам поток
  MainThread: TMainThread;

Код:
implementation
// на создание формы создаем и запускаем поток
procedure TFMainForm.FormCreate(Sender: TObject);
begin
  MainThread := TMainThread.Create(True);
  MainThread.FreeOnTerminate := True;
  MainThread.Priority := tpNormal;
  MainThread.Resume;
end;

Код:
procedure TFMainForm.FormClose(Sender: TObject);
begin
// на закрытие формы останавливаем поток если он существует
  if Assigned(MainThread) then
    if not MainThread.Terminated then
      MainThread.Terminate;
end;

Код:
// процедура выполнения потока, т.е. в ней пишем выполняемые действия
procedure TMainThread.Execute;
begin
  // пока поток работает
  while not Terminated do
  begin
    Synchronize(RepaintImage {здесь например может быть процедура перерисовки изображения} );
  end;
end;

И таких потоков можно запустить несколько, например 1 на прорисовку, 1 на AI, 1 еще на что-нибудь. И вообще если собираешься делать нормалью игру советую забить на средства GDI (они дико медленны) и пользовать либо готовые игровые движки, либо написать свой. Можно использовать DirectX SDK, вроде как там до сих пор есть DirectDraw - довольно неплох для вывода 2д графики.
__________________
00110001 00101100 00110110 00110001 00111000 00110000 00110011 00110011 00111001 00111000 00111000 00110111 00110100 00111001 00111000 00111001 00110100 00111000 00110100 00111000 00110010 00110000 00110100 00110101 00111000 00110110 00111000 00110011 00110100 00110011 00110110 00110101 00110110
Ответить с цитированием