delphi在处理消息的时候是逐级调用的,最基础的算是 TWinControl.WndProc函数了,下面给出了这个函数的源代码。
procedure TWinControl.WndProc(var Message: TMessage);
var
Form: TCustomForm;
LMouseEvent: TTrackMouseEvent;
P: TPoint;
Target: TControl;
begin
case Message.Msg of
CM_UNTHEMECONTROL:
if (csDesigning in ComponentState) and ThemeServices.ThemesAvailable then
begin
SetWindowTheme(Handle, ' ', ' ');
SetWindowPos(Handle, 0, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE or SWP_NOZORDER or SWP_NOACTIVATE or SWP_SHOWWINDOW or SWP_FRAMECHANGED);
end;
CM_SETACTIVECONTROL:
begin
Form := GetParentForm(Self);
if (Form <> nil) and (Form <> Self) then
Form.Perform(CM_SETACTIVECONTROL, Message.WParam, Message.LParam);
end;
WM_SETFOCUS:
begin
Form := GetParentForm(Self);
if (Form <> nil) and (not (csDesigning in Form.ComponentS