1、如何在一个DLL中的窗体里加入一个处理WM_NULL消息的处理过程(定义常量为WM_NULL时,delphi提示非法引用),最好有示例。
2、DLL中的窗体无法进行线程同步处理,急啊请看源码:
procedure TClientHandleThread.Execute;
var
Thesize:Integer;
ThtStr:String;
RsltStream: TMemoryStream;
begin
  while not Terminated do
  begin
    if not MyMain.IdTCPOnline.Connected then
    begin
      MyMain.ToClientDisconnect;
      Break;
    end
    else begin
      try
        ThtStr:=MyMain.IdTCPOnline.ReadLn(EOL);
        Thesize:=Strtoint(ThtStr);
        if Thesize>0 then
          begin
            try
              RsltStream := TmemoryStream.Create;
              MyMain.IdTCPOnline.ReadStream(RsltStream,Thesize,False);
              RsltStream.Position := 0;
              SetLength(CommandStr, RsltStream.Size);
              RsltStream.Read(CommandStr[1], RsltStream.Size);
              CommandStr:=DecodeBase64(CommandStr);
              RsltStream.Free;
              Synchronize(HandleInput);//这里不执行!!!!
            Except
              MyMain.ToClientDisconnect;
              Break;
            end;
          end;
     except
     end;
    end;
  end;
end;
希望能给出解决方案,我已经两天两夜没睡觉了,先谢!

解决方案 »

  1.   

    Synchronize(HandleInput);//这里不执行!!!!
    改成SendMessage,用他通知需要同步的主窗体界面。
      

  2.   

    zhangxuyu1118(zxy),首选感谢指点,但我想问,SendMessage是加上还是改成?
      

  3.   

    WM_NULL             = $0000;
    当然不行了,>>Synchronize(HandleInput);//这里不执行!!!!
    直接
    PostMessage 给 主窗口就可,如果这个函数是要在主窗口显示数据的话
      

  4.   

    你们给人家说说如何postmessage阿我也知道用postmessage能传递消息可是具体怎么搞阿