Код:
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д графики.