В Windows API определен ряд функций, позволяющих послать сообщение
Функция посылает указанное ней сообщение окну или множеству окон и не возвращается, пока сообщение обрабатывается
Function SendMessage(hWnd:HWND; Msg:Cardinal; wParam, lParam: integer):longint;
Функция посылает указанное ней сообщение, но в отличии от SendMessage помещает сообщение в очередь и сразу возвращается, не дожидаясь обработки сообщений.
Function PostMessage(hWnd:HWND; Msg:Cardinal; wParam, lParam: integer): boolean;
Таким образом функция PostMessage
не годится для отправки
срочных сообщений, но зато она не блокирует вызвавшее сообщение на время обработки сообщения
приемником.
Для отправки сообщений самому себе в классе TControl
реализован
метод Perform
, который фактически ничего никуда не отправляет, а
напрямую вызывает WindowProc
класса, что конечно работает быстрее.
function TControl.Perform(Msg: Cardinal; WParam, LParam: Longint): Longint; var Message: TMessage; begin Message.Msg := Msg; Message.WParam := WParam; Message.LParam := LParam; Message.Result := 0; if Self <> nil then WindowProc(Message); Result := Message.Result; end;