关于线程的问题 ( 积分: 50 )

  • 主题发起人 主题发起人 landina
  • 开始时间 开始时间
L

landina

Unregistered / Unconfirmed
GUEST, unregistred user!
我想在自己定义的类中使用线程,在线程中要发送windows消息到类实例中,要如何做?
我是如下定义的,但老是出错,为什么?
TTest=class(TInterfacedObject,ITest)
private:
FHandle: HWND;
procedure CommonThreadProc(var msg: TMessage);
public
constructor Create;
end;
procedure TTest.CommWndProc(var msg: TMessage);
begin

end;
constructor TCamera.Create;
begin
FHandle := Classes.AllocateHWnd(CommWndProc);
end;

线程定义:
unit TriggerEdgeSnapThreadU;

interface

uses
Windows, Classes, IntfCamera, QDialogs;

type
TTestThread = class(TThread)
private
{ Private declarations }
hWinHandle: THandle;
protected
procedure Execute
override;
public
constructor Create(CreateSuspend: Boolean
WindowsHandle: HWND);
end;

implementation

constructor TTestThread.Create(CreateSuspend: Boolean;
WindowsHandle: HWND);
begin
hWinHandle := WindowsHandle;//出错语句
end;

procedure TTestThread.Execute;
begin
while not Terminated do
begin
PostMessage( hWinHandle, WM_SNAPSHOT, 0, 0 ) ;
end;
end;

end.
 
我想在自己定义的类中使用线程,在线程中要发送windows消息到类实例中,要如何做?
我是如下定义的,但老是出错,为什么?
TTest=class(TInterfacedObject,ITest)
private:
FHandle: HWND;
procedure CommonThreadProc(var msg: TMessage);
public
constructor Create;
end;
procedure TTest.CommWndProc(var msg: TMessage);
begin

end;
constructor TCamera.Create;
begin
FHandle := Classes.AllocateHWnd(CommWndProc);
end;

线程定义:
unit TriggerEdgeSnapThreadU;

interface

uses
Windows, Classes, IntfCamera, QDialogs;

type
TTestThread = class(TThread)
private
{ Private declarations }
hWinHandle: THandle;
protected
procedure Execute
override;
public
constructor Create(CreateSuspend: Boolean
WindowsHandle: HWND);
end;

implementation

constructor TTestThread.Create(CreateSuspend: Boolean;
WindowsHandle: HWND);
begin
hWinHandle := WindowsHandle;//出错语句
end;

procedure TTestThread.Execute;
begin
while not Terminated do
begin
PostMessage( hWinHandle, WM_SNAPSHOT, 0, 0 ) ;
end;
end;

end.
 
自己知道原因了,请管理帮我删除啊。

还有啊,为什么现在大富翁不能删除贴子啊。
 
哈哈,分给我吧
 
哈哈,我也分一份
 
散分吧。
这里的规矩
要不就挂着
 
哈哈,我也要~
 
[:D]我也来凑个热闹
能删不就天下大乱了吗?!所以提问前先想好,没后悔药可买的!
 
后退
顶部