(*--- Следующая программа представляет собой обратную работу запуска программы, когда мы используем потоки и без потоков.
отвечать. Нажав кнопку «Использование», создается поток.
При изменении размера формы и перемещения ее. Когда нажата кнопка nousedthread, если поток не создан, мы отправим
Теперь вы не можете ничего сделать, прежде чем программа будет рассчитана!
единица единицы 1;
интерфейс
Использование
Windows, сообщения, Sysutils, варианты, классы, графика, управления, формы,
Диалоги, stdctrls, кнопки;
тип
Tform1 = class (tform)
Используйте: TBITBTN;
Nousedthread: tbitbtn;
Процедура usedthreadclick (отправитель: tobject);
Процедура nousedthreadclick (отправитель: tobject);
Частный
{Частные объявления}
публичный
{Публичные объявления}
конец;
вар
Форма1: tform1;
Выполнение
{$ R *.dfm}
Функция mythreadfunc (p: pointer): longint; stdcall;
вар
я: longint;
DC: HDC;
S: String;
Начинать
DC: = getDC (form1.handle);
для i: = от 0 до 500000
S: = inttoStr (i);
Textout (DC, 10,10, Pchar (S), длина (S));
конец;
Выпущен (form1.handle, DC);
конец;
Процедура tform1.usedthreadclick (отправитель: tobject);
вар
hthread: thandle; // определить ручку
ThreadId: DWORD;
Начинать
// Создать поток, и функция потока вызывается одновременно
hthread: = createThread (ноль, 0,@mythreadfunc, nil, 0, threadid);
Если hthread = 0, то
MessageBox (ручка, 'не CrateateThread', Nil, MB_OK);
конец;
Процедура tform1.nousedThreadClick (отправитель: tobject);
Начинать
Mythreadfunc (ноль);
// Когда поток не создается, функция потока называется напрямую
конец;
конец.