+ -
当前位置:首页 → 问答吧 → 请教多线程操作多个窗口的问题

请教多线程操作多个窗口的问题

时间:2011-11-25

来源:互联网

比如4个线程,每个线程操作一个画图程序,我现在只能有一个线程可以正常用,用threadvar把要操作的窗口句柄声明为全局变量了,可是句柄的值好像还是每个线程都可以访问,以至于窗口的句柄被改变了,请高手赐教~!!
implementation
threadvar
Ghwnd : Thandle; //声明句柄为全局变量


procedure qidongxc();
begin
 TTestThread.Create(false); //启动第一个线程
 TTestThread.Create(false); //启动第二个线程
 TTestThread.Create(false); //启动第三个线程
 TTestThread.Create(false); //启动第四个线程
end;

procedure TTestThread.Execute;
begin
chuangkoujubing(); //调用获得窗口句柄过程
kaishihuatu(); //开始在画图程序上画图
end;


现在只能有一个画图窗口在正常操作。
是不是用是threadvar来声明变量的话,就不用考虑线程同步的问题了,我没有操作该程序上的VCL组件。谢谢大家,如果我的做法不对,请指正,我就是像研究一下,利用多线程操作多个窗口,且在窗口中执行操作的过程也都是一样的,请教实现上面说的功能,应该怎么合理的使用线程呢,我自己闷头已经研究大概4天了,哎,还是没有搞定,希望高手点拨一下,谢谢~!!

作者: a80141783   发布时间: 2011-11-25

线程里访问窗口要用synchronize,或者发消息给窗口,让窗口自己画。

作者: lght   发布时间: 2011-11-25

引用 1 楼 lght 的回复:
线程里访问窗口要用synchronize,或者发消息给窗口,让窗口自己画。


你说的画图是不是在delphi创建的那个FORM里面画啊?我说的画图是在“开始--程序--附件”里的那个画图程序里面画。

作者: a80141783   发布时间: 2011-11-25

热门下载

更多