Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
prog:lazarus:cas:wm_messages:envois [25/04/2023 12:02]
thierry
prog:lazarus:cas:wm_messages:envois [25/04/2023 12:34] (Version actuelle)
thierry [Perform]
Ligne 1: Ligne 1:
-====== Envois de Messages Windows ====== +====== Envois ​et Réception ​de Messages Windows ====== 
-Pistes : + 
-  function SendApplicationMsg(Msg: CardinalWParamWParam; LParam: LParam): Longint; (unité Forms)+===== Envois de messages ===== 
 +==== PostMessage ==== 
 +postMessage : Envoie un message dans la file d'​attente de messages associée au thread et revient ​**__sans attendre__** que le thread ai traité ce message. 
 + 
 +On pourrait dire que ce mécanisme est Asynchrone. 
 +<code delphi>​ 
 +PostMessage(Application.MainForm.Handle,​1222,​0,​0); 
 +</​code>​ 
 +==== SendMessage ==== 
 +SendMessage ​appelle la procédure de fenêtre pour la fenêtre spécifiée et ne revient pas tant que la procédure de fenêtre n'a pas traité le message. 
 + 
 +Par comparaison avec ''​PostMessage''​ on pourrait assimiler ce mécanisme avec du Synchrone. 
 +<code delphi>​ 
 +SendMessage(Application.MainForm.Handle,​1222,​0,​0); 
 +</​code>​ 
 + 
 +==== Perform ==== 
 +''​Perform''​ a le même comportement que ''​SendMessage'' ​(Synchrone) 
 +<code delphi>​ 
 +Application.MainForm.Perform(1222,​0,​0);​  
 +</​code>​ 
 + 
 + 
  
 ===== Interception de message ===== ===== Interception de message =====
 ==== Par un TForm ==== ==== Par un TForm ====
 +Dans cet exemple on veut intercepter un message indexé 1222.
 +
 +Pour envoyer ce message on peut utiliser : ''​PostMessage(Application.MainForm.Handle,​1222,​0,​0);''​
 <code delphi> <code delphi>
  ​TMainForm = class(TForm)  ​TMainForm = class(TForm)