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 [18/03/2023 12:35]
thierry ↷ Page déplacée de prog:lazarus:cas:messages:envois à prog:lazarus:cas:wm_messages:envois
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(MsgCardinalWParamWParamLParamLParam): 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 ===== 
 +==== 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>​ 
 + ​TMainForm = class(TForm) 
 +  ... 
 +  private 
 +    procedure TestMSG(var Message:TMessage);message 1222; 
 +    ... 
 +  public 
 +  end;   
 +   
 +  ... 
 +  ... 
 +   
 +procedure TMainForm.TestMSG(var MessageTMessage); 
 +begin 
 +  DebugLn('Reçu Message 1222')
 +end;                                                     
 +</​code>​ 
 +