在我的线程类中声明:Procedure aaa(var Msg:Tmessage);Message 8888;可是不管你怎样对这个线程运用sendmessage函数就是无法触发这个事件!Form1:
Button1Click(sender : tobject);
begin
    sendMessage(Thread1.handle,8888,0,0);
end;为什么?我一定需要线程能够接收到消息的!

解决方案 »

  1.   

    getmessage?应该是接收到消息后才触发事件……
      

  2.   

    呵呵
    必须有窗体接收消息
    TThread根本没有办法接收消息
      

  3.   

    你用
    const WM_MyMessage = wm_user+$200
    发送这个消息看看
    因为8888有可能在0-WM_User之间,这样的话肯定不能
    接收的时候,同样接收这个消息处理
    Procedure aaa(var Msg:Tmessage);Message WM_MyMessage;
      

  4.   

    线程不能接收消息
    要实现消息通讯的话用TEvent;
    MyEvent:= TEvent.Create(nil,True,False,'dsalfjaslfjakl');
    MyEvent.ResetEvent;
    MyEvent.SetEvent;
    MyEvent.WaitFor
    就几个简半日的用法
      

  5.   

    GetMessage可以提取线程的消息的..
    ----------------
    在线程中响应消息 
    ----------------
    TMyThread=class(TThread) 
    private 
    FOwner:TControl; 
    FOwnerProc:TWndMethod; 
    FMessage:TMessage; 
    FEvent :TSimpleEvent; 
    procedure ThreadWndProc(var Message:TMessage); 
    constructor Create(AOwner:TControl); 
    destructor Destroy; 
    protect 
    procedure Execute;override; 
    end; 
    constructor TMyThread.Create(AOwner:TControl); 
    begin 
    inherited Create(True); 
    FOwner:=AOwner; 
    if Assigned(FOwner) then 
    begin 
    FOwenrProc:=AOwner.WindowProc; 
    FOwner.WindowProc:=ThreadWndProc; 
    end; 
    FEvent:=TSimpleEvent.Create; 
    end; 
    destroy TMyThread.Destroy; 
    begin 
    if Assigned(FOwner) then 
    FOwner.WindowProc:=FOwnerProc; 
    FEvent.Free; 
    inherited Destroy; 
    end; procedure TMyThread.ThreadWndProc(var Message:TMessage); 
    begin 
    if Message.Msg=WM_DESTROY then 
    begin 
    FOwner.WindowProc:=FOwnerProc; 
    FOwnerProc:=nil; 
    FOwner:=nil; 
    end; 
    if Message.Msg=所要处理的消息 then 
    begin 
    FMessage:=Message; 
    FEvent.SetEvent; 
    end 
    else if Assigned(FOwnerProc) then FOwnerProc(Message); 
    end; 
    procedure TMyThread.Execute; 
    begin 
    while not Terminated do 
    begin 
    FEvent.WaitFor(INIFILE); 
    FEvent.ResetEvent; 
    ....//根据FMessage处理消息 
    end 
    end; 
      

  6.   

    向线程发送消息用
    BOOL PostThreadMessage(
        DWORD idThread, // thread identifier
        UINT Msg, // message to post
        WPARAM wParam, // first message parameter
        LPARAM lParam  // second message parameter
       );
    应该可以吧
      

  7.   

    UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!
      

  8.   

    UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!UP!大家好!
      

  9.   

    一个线程有一个消息队列,它是不能使用用普通的VCL的消息处理。
    要在PeekMessage or GetMessage来取得当前线程消息。而别的线程是通过PostThreadMessage(Thread.ThreadID, WM_USER, 0, 0)来进行线程间的消息传递的。看看这三个API函数的help吧
      

  10.   

    var
      Thread: TMyThread;Button1.OnClick
      Thread := TmYThread.Create;Button2.OnClick
      PostThreadMessage(Thread.ThreadID, WM_CLOSE, 0, 0);TMyThread = class(TThread)
      Event: THandle;procedure TMyThread.Execute;
    var
      msg: TMsg;
    begin
      PeekMessage(msg, 0, 0, 0, PM_NOREMOVE);
      Event := CreateEvent(nil, False, False, nil);
      try
        while True do
          case MsgWaitForMultipleObjects(1, Event, False, INFINITE, QS_ALLINPUT) of
            WAIT_OBJECT_0:
            begin
              // 有地方调用了SetEvent函数
            end;
            WAIT_OBJECT_0 + 1:
            begin
              // 有地方用PostThreadMessage发消息过来
              while PeekMessage(Msg, 0, 0, 0, PM_REMOVE) do
                case Msg.message of
                  WM_CLOSE, WM_QUIT:
                    break;
                else
                  DispatchMessage(Msg);
                end;
            end;
          end;
      finally
        CloseHandle(Event);
      end;
    end;