procedure asdfa;
beginend;tid: Cardinal;
BeginThread(nil, 0, @asdfa, nil, 0, tid);就ok了 用不着CreateThread另外 为什么不用Delphi封装的TThread呢 多方便 还比较容易控制同步问题
beginend;tid: Cardinal;
BeginThread(nil, 0, @asdfa, nil, 0, tid);就ok了 用不着CreateThread另外 为什么不用Delphi封装的TThread呢 多方便 还比较容易控制同步问题
解决方案 »
- 新人求教,请问关于记流水帐的SQL要怎么写。
- 界面设计的时候在窗口里面怎么画一根直线啊?
- QuickRep 怎么格局全变了?
- 大家好,希望截获一个 dataset 的删除事件,当dataset中的某个字段内容等于一个 值时禁止删除,如何处理
- 如何开发一个类似金蝶K3那样的通用单据编辑器,通过数据库字典自动生成单据!
- 程序模拟网页提交数据
- 怎样才能让DBGrid中的前两个字段在滚动条移动时固定不变,也就是后面的字段动,前两个不动!!
- 关于Web Service的这个wizard哪里可下到?????
- 如何向SQLSERVER中修改及插入一个TEXT字段类型?急!!!!!!!!!!!
- 如何edit编辑框的keydown或keypress事件中封锁VK_UP和VK_DOWN输入事件?
- 三个要命的问题 高手请帮忙 在线等待 急!
- 关于,vod的问题! 谢谢了哟!
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;我把关键的地方贴出来了,你看看吧