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 [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(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 ===== | ||
| + | ==== 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 Message: TMessage); | ||
| + | begin | ||
| + | DebugLn('Reçu Message 1222'); | ||
| + | end; | ||
| + | </code> | ||
| + | |||