没有继承及消息的分发,即是 inherited 和 DispatchMessage。

解决方案 »

  1.   

    请问kyee,能不能说的详细一点!
    谢谢!·
      

  2.   

    继承(inherited)也就是将你未处理的消息延用本来的处理
      

  3.   

    关键就在inherited,你没有这句,意味着你不处理的消息就会被你吃调,windows消息循环被破坏。楼上的答案都是正确的,可以给分了。
      

  4.   

    procedure Tfrm_Main.MessageEventsMessage(var Msg: tagMSG;
          var Handled: Boolean);
         var
           F1: TForm;
           i: integer;
         begin        case Msg.Message of
            WM_ChildShow: //子窗体显示
            begin
               F1 := TForm(Msg.lParam);
               ChildrenList.Add(F1);
               Handled := true;     //不再往上转发了
             end;       WM_ChildClose: //子窗体关闭
           begin
              F1 := TForm(Msg.lParam);
              for i := ChildrenList.Count downto 1 do
              begin
                if TForm(ChildrenList.Items[i - 1]).Handle = F1.Handle then
                begin
                   TDataModule(ChildrenList.Items[i - 2]).Free;
                   TForm(ChildrenList.Items[i - 1]).Free;
                   ChildrenList.Delete(i - 1);
                   ChildrenList.Delete(i - 2);
                   break;
                end;
            end;
            Handled := true;
          end;
         else 
                begin
                   Handled := false;
                   inherited;加这里
                  end
     end;
    end;
      

  5.   

    建议你可以看看TApplication的源代码:)
      

  6.   

    各位高手,还是不行,我把这段代码去掉就可以发UDP消息!
    DispatchMessage\必须要吗?
      

  7.   

    .....
    inherited;//不能缺