模式窗口不会阻塞其它窗口接收消息和处理消息的..function TCustomForm.ShowModal: Integer; .... begin ..... //在SHOWMODAL的时候,程序都在执行这个REPEAT循环... repeat Application.HandleMessage;//这儿分派处理消息.. if Application.FTerminate then ModalResult := mrCancel else if ModalResult <> 0 then CloseModal; until ModalResult <> 0; Result := ModalResult; SendMessage(Handle, CM_DEACTIVATE, 0, 0); if GetActiveWindow <> Handle then ActiveWindow := 0; ..... end;//-------------------------------------------- 同SHOW方式相比,SHOWMODAL主要只是自建一个消息循环而已.这个处理同主消息循环没有多 大区别.
....
begin
.....
//在SHOWMODAL的时候,程序都在执行这个REPEAT循环...
repeat
Application.HandleMessage;//这儿分派处理消息..
if Application.FTerminate then ModalResult := mrCancel else
if ModalResult <> 0 then CloseModal;
until ModalResult <> 0; Result := ModalResult;
SendMessage(Handle, CM_DEACTIVATE, 0, 0);
if GetActiveWindow <> Handle then ActiveWindow := 0;
.....
end;//--------------------------------------------
同SHOW方式相比,SHOWMODAL主要只是自建一个消息循环而已.这个处理同主消息循环没有多
大区别.