怎么向createthread或begincreate传递函数的参数值?

来源:互联网 发布:io域名价格 编辑:程序博客网 时间:2024/04/16 15:42
const         Margin   =   20;         type         PData   =   ^TData;         TData   =   record             XPos:   Integer;             YPos:   Integer;         end;     ______________________________________________________     function   ThreadFunc(Ptr:   Pointer):   LongInt;   stdcall;     var         i,   j:   Integer;         P:   TColorRef;         DC:   HDC;         Data:   PData;     begin         Data   :=   PData(Ptr);         DC   :=   GetDC(Form1.Handle);         for   j   :=   0   to   AHeight   do             for   i   :=   Margin   to   AWidth   +   Margin   do   begin                 P   :=   GetPixel(DC,   i,   j);                 SetPixel(DC,   i   +   Data^.Xpos,   Data^.YPos   +   j,   P);             end;         ReleaseDC(Form1.Handle,   DC);         Dispose(Data);     end;     ____________________________________________________         procedure   TForm1.StartMenu(Sender:   TObject);     var         hThread1,   hThread2,   hThread3:   THandle;         ThreadID:   DWORD;         Data:   PData;     begin         New(Data);         Data^.xPos   :=   AWidth;         Data^.YPos   :=   0;         hThread1   :=   CreateThread(nil,   0,   @ThreadFunc,                                                           Data,   0,   ThreadID);             New(Data);         Data^.xPos   :=   0;         Data^.YPos   :=   AHeight;         hThread2   :=   CreateThread(nil,   0,   @ThreadFunc,                                                           Data,   0,   ThreadID);             New(Data);         Data^.xPos   :=   AWidth;         Data^.YPos   :=   AHeight;         hThread3   :=   CreateThread(nil,   0,   @ThreadFunc,                                                           Data,   0,   ThreadID);             if   ((hTHread1   =   0)   or   (hThread2   =   0)   or   (hThread3   =   0))   then             MessageBox(Handle,   'No   Thread!',   nil,   mb_Ok);     end;