to LogRus
Сейчас использую потоки, только через boost::thread потому, что удобно и работает одинаково и в Linux и Windows.
Чего и вам советую.
можно ссылки на документацию
может с этого надо было сразу начать
кагда открываю .bpr всё работает, но сделать его как новое приложение никак
вставляю код из примера - объясните КАК ТУТ СОЗДАЁТСЯ
ThreadForm ThreadFormUnit.h
#ifndef ThreadFormUnitH
#define ThreadFormUnitH
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
//---------------------------------------------------------------------------
class TThreadForm : public TForm
{
__published: // IDE-managed Components
TButton *Start;
TButton *Stop;
void __fastcall StartClick(TObject *Sender);
void __fastcall StopClick(TObject *Sender);
private: // User declarations
public: // User declarations
__fastcall TThreadForm(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TThreadForm *ThreadForm;
//---------------------------------------------------------------------------
#endif
ThreadFormUnit.cpp
#include <vcl.h>
#pragma hdrstop
#include "ThreadFormUnit.h"
#pragma package(smart_init)
#pragma resource "*.dfm"
TThreadForm *ThreadForm;
HANDLE Thread;
DWORD WINAPI ThreadFunc(LPVOID Param)
{
HANDLE MainWnd(Param);
RECT R;
GetClientRect(MainWnd, &R);
const MaxWidth = R.right - R.left;
const MaxHeight = R.bottom - R.top;
int X1, Y1, X2, Y2, R1, G1, B1;
bool IsEllipse;
while(true)
{
HDC DC = GetDC(MainWnd);
X1 = rand() % MaxWidth;
Y1 = rand() % MaxHeight;
X2 = rand() % MaxWidth;
Y2 = rand() % MaxHeight;
R1 = rand() & 255;
G1 = rand() & 255;
B1 = rand() & 255;
IsEllipse = rand() & 1;
HBRUSH Brush = CreateSolidBrush(
RGB(R1, G1, B1));
SelectObject(DC, Brush);
if(IsEllipse)
Ellipse(DC, X1, Y1, X2, Y2);
else
Rectangle(DC, X1, Y1, X2, Y2);
ReleaseDC(MainWnd, DC);
DeleteObject(Brush);
}
}
__fastcall TThreadForm::TThreadForm(TComponent* Owner)
: TForm(Owner)
{
randomize();
DWORD Id;
Thread = CreateThread(0, 0, ThreadFunc,
ThreadForm->Handle, CREATE_SUSPENDED, &Id);
if(!Thread)
{
ShowMessage("Error! Cannot create thread.");
Application->Terminate();
}
}
void __fastcall TThreadForm::StartClick(TObject *)
{
ResumeThread(Thread);
Start->Enabled = false;
Stop->Enabled = true;
}
void __fastcall TThreadForm::StopClick(TObject *)
{
SuspendThread(Thread);
Stop->Enabled = false;
Start->Enabled = true;
}