我在写聊天程序在接收消息时想能和QQ一样:一个好友发来一条消息,收到后就弹出一个窗口,第二条消息来的时候就直接写在弹出的窗口中我用线程但是不行我该怎么做?
unit Threadform;interfaceuses
  Classes, ExtCtrls,Dialogs,msg;
type
  Tformmsg = class(TThread)
  private
  protected
    procedure Execute; override;
    procedure Timer1TTimer(Sender: TObject);
  end;
implementation
uses udpclientmain;{ Tformmsg }
procedure Tformmsg.Timer1TTimer(Sender: TObject);
begin
formmsg.Memo1.Lines.Add(UDPMainForm.msge);
UDPMainForm.i:=0;
end;
procedure Tformmsg.Execute;
var
 formmsg:Tfmmsg;
Timer1:TTimer;
begin
  FreeOnTerminate:=true;
  formmsg:=Tfmmsg.Create(nil);
  Timer1:=TTimer.create(fmmsg);
  timer1.Interval:=1000;
  timer1.Enabled:=true;
  UDPMainForm.i:=0;
  Formmsg.Caption:='与'+UDPMainForm.senduser+'聊天中';
  timer1.OnTimer:=Timer1TTimer;
  formmsg.Memo1.Lines.Add(UDPMainForm.msge);
  Formmsg.ShowModal;
  end;
end.

解决方案 »

  1.   

    msg:是第三方什么控件,没有什么其他说明吗?
      

  2.   

    其实不一定要用线程看你的代码,接收信息应该用的是udp控件,这个控件里面有个ondataReceived事件
    可以在这个事件里面进行处理
    如果有消息接受到,则判断显示信息的窗体是否已经建立(也就是是否已经打开),如果没有,建立并显示在桌面;反之,直接在窗体上加入收到的信息我以前公司使用的内部消息软件也是这样做的,希望可以帮助你
      

  3.   

    首先使用findwindow查看这个聊天窗口是否建立,如果建立使用sendmessage向这个窗口发送聊天信息内容,聊天窗口需要做消息处理