procedure TApplication.HandleMessage;
begin
 if not ProcessMessage then Idle;
end;ProcessMessage和Idle知道?

解决方案 »

  1.   

    function TApplication.ProcessMessage: Boolean;
      var
       Handled: Boolean;
       Msg: TMsg;
      begin
       Result := False;
       if PeekMessage(Msg, 0, 0, 0, PM_REMOVE) then
       begin
        Result := True;
        if Msg.Message <> WM_QUIT then
        begin
         Handled := False;
         if Assigned(FOnMessage) then FOnMessage(Msg, Handled);
         if not IsHintMsg(Msg) and not Handled and not IsMDIMsg(Msg) and
          not IsKeyMsg(Msg) and not IsDlgMsg(Msg) then
        begin
         TranslateMessage(Msg);
         DispatchMessage(Msg);
        end;
       end
       else
        FTerminate := True;
       end;
      end;
      

  2.   

    那它是不能处理WM_CLOSE了?
    ehom:再请教你一个问题:
    程序创建一个Button,怎样让在点击这个button之前,程序暂停执行
      

  3.   

    你还不了解WINDOW程序的机理,它本身就是个消息循环,没有接到消息,它就一直循环,相当于停着!
      

  4.   

    要不这样?按钮改变一标记flag的值!
    repeat
      Application.ProcessMessages;
    until flag;
      

  5.   

    repeat
      Application.ProcessMessages;
    until flag;
    这个循环我试过,它不能处理窗口关闭的消息。
    这是为什么。