2005年3月15日,发布于:
http://zyyang.spaces.live.com/blog/cns!193DAE30814DFA36!210.entry
- procedure TApplication.Run;
- begin
- FRunning := True; //I am Running.
- try
- AddExitProc(DoneApplication); //Add the current Application's Exit Proc Handler(Using AddExitProc()) so that DoneApplication is called when Exit.
- if FMainForm <> nil then //The first Form Application Creates.
- begin
- case CmdShow of
- SW_SHOWMINNOACTIVE: FMainForm.FWindowState := wsMinimized;
- SW_SHOWMAXIMIZED: MainForm.WindowState := wsMaximized;
- end;
- if FShowMainForm then
- if FMainForm.FWindowState = wsMinimized then
- Minimize else
- FMainForm.Visible := True;
- repeat
- try
- HandleMessage; //Messages Handling
- except
- HandleException(Self); //Exception
- end;
- until Terminated; //Application if told to shutdownn.
- end;
- finally
- FRunning := False; // Everything is over.
- end;
- end;
本文详细解析了VCL框架下TApplication.Run()过程,包括设置运行状态、添加退出处理、主窗体的显示逻辑以及消息循环与异常处理。在Application.Run()中,会根据CmdShow参数调整主窗体状态,并在消息循环中处理窗口消息及异常情况,直到应用程序被终止。
276

被折叠的 条评论
为什么被折叠?



