Botschaften abfangen

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Die Behandlung von Botschaften ändern


Es gibt Situationen, in denen Botschaften von den Komponenten ignoriert werden sollen. Die Komponente darf dann die Botschaft nicht an ihre Behandlungsroutine weiterleiten. Sie können eine Botschaft abfangen, indem Sie die virtuelle Methode WndProc überschreiben.

Für VCL-Komponenten überprüft die Methode WndProc Botschaften, bevor sie diese an die Methode Dispatch übergibt. Dispatch bestimmt dann, welche Methode die Behandlung der Botschaft übernimmt. Durch Überschreiben von WndProc können Sie der Komponente die Möglichkeit geben, Botschaften vor der Weiterleitung an die Behandlungsroutine auszufiltern. Für ein Steuerelement, das von TWinControl abgeleitet ist, könnte die Methode WndProc z.B. folgendermaßen überschrieben werden:

 procedure TMyControl.WndProc(var Message: TMessage);
 begin
   { Prüft, ob die Verarbeitung fortzusetzen ist }
   inherited WndProc(Message);
 end;
 void __fastcall TMyControl::WndProc(TMessage& Message)
 {
    // tests to determine whether to continue processing
 if(Message.Msg != WM_LBUTTONDOWN)
 
 }

Die Komponente TControl definiert komplette Gruppen von Mausbotschaften, die ausgefiltert werden, wenn der Benutzer Steuerelemente zieht und ablegt. Durch das Überschreiben von WndProc können Sie folgendes erreichen:

  • Anstatt Behandlungsroutinen für jede einzelne Botschaft festzulegen, werden Botschaftsgruppen ausgefiltert.
  • Die Weiterleitung der Botschaft wird unterbunden, d.h. es wird keine Behandlungsroutine aufgerufen.