|
|||
Fermer
GERER LES MESSAGES WINDOWS INTERCEPTION DE TOUS LES MESSAGES DE A NOTRE APPLICATION Dernière mise à jour : 29/01/00 Utilisation de Application.OnMessage Dans l'inspecteur d'objet, nous
n'avons pas accès aux propriétés ou aux événements liés à
l'application. Dans la partie private de la déclaration de notre Form principale ajoutons la ligne
procedure AppMessage(var Msg: TMsg; var Handled: Boolean);
Dans l'événement OnCreate de notre Form ajoutons l'affectation de la procédure AppMessage à l'événement OnMessage de notre application : {---------------------------------------------------------------------------} { affectation de AppMessage en temps que procédure déclenchée par OnMessage } {---------------------------------------------------------------------------} procedure TForm1.FormCreate(Sender: TObject); begin Application.OnMessage := AppMessage; end;
Il ne nous reste plus qu'à implémenter notre nouvelle procédure AppMessage : Dans la partie implementation Ajoutons par exemple : procedure TForm1.AppMessage(var Msg: TMsg; var Handled: Boolean); {------------------------------------------------------------------------} { procédure lancée par chaque évènement OnMessage de l'application } { attention cette procédure est appelée pour chaque message si vous } { n'y prenez garde, elle peut ralentir votre application } { les messages arrivent même s'ils sont destinés à une autre fenêtre que } { la fenêtre principale (essayez dans la fenêtre du ShowMessage) } { Affectez la valeur True à Handled si le message a été complètement } { géré afin d'empêcher la suite du traitement normal du message. } {------------------------------------------------------------------------} begin if (Msg.message =WM_KEYDOWN) then ShowMessage('message WM_KEYDOWN dans AppMessage') // handled=true; aurait empéché la suite du traitement normal du message // il n'aurait donc pas été traité par WindProc end; Lancez le programme et appuyez sur une touche ou le bouton droit de la souris. source du programme exemple
|