Différences
Ci-dessous, les différences entre deux révisions de la page.
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: Cardinal; WParam: WParam; 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) |