Message dans la bouteille

Delphi, vous avez un message à gérer!

L'une des clés de la programmation Windows traditionnelle est de gérer le messages envoyé par Windows aux applications. Autrement dit, un message est une information envoyée d'un endroit à un autre. Pour la plupart, Delphi facilite la gestion des messages grâce à son utilisation des événements, un événement est généralement généré en réponse à un message Windows envoyé à une application.

Cependant, un jour, vous voudrez peut-être traiter certains messages inhabituels comme: CM_MOUSEENTER qui se produit (est publié par Windows) lorsque le curseur de la souris entre dans la zone client d'un composant (ou formulaire).

La gestion des messages par eux-mêmes nécessite quelques techniques de programmation supplémentaires, cet article est là pour nous aider à trouver le bon chemin à travers la rivière des messages et à saisir les informations nécessaires.

Stratégies de manipulation des messages Windows avec Delphi

  • Faites glisser une fenêtre: pas de barre de titre! Comment pouvez-vous faire glisser une telle fenêtre? C'est simple et amusant: faisons bouger un formulaire Delphi en cliquant (et en faisant glisser) dans sa zone client. L'idée principale est de mettre la main sur le message Windows wm_NCHitTest.
  • Comment envoyer des informations (chaîne, image, enregistrement) entre deux applications Delphi (WM_CopyData): découvrez comment envoyer le message WM_CopyData entre deux applications Delphi pour échanger des informations et faire communiquer deux applications. Le code source qui l'accompagne montre comment envoyer une chaîne, un enregistrement (type de données complexe) et même des graphiques à une autre application.
  • Sticky Windows: cette stratégie vous permet d'ancrer vos formulaires Delphi aux bords de l'écran de votre bureau.
  • Surveillance des modifications du registre: besoin d'être informé des modifications apportées aux attributs ou au contenu d'une clé de registre spécifiée? Ensuite, vous êtes prêt pour cela votre boîte à outils de code Delphi.
  • Envoi de messages à des applications non fenêtrées: cette stratégie est utilisée pour envoyer des messages (signaux) à des applications non fenêtrées en utilisant AllocateHWND et DefWindowProc. Vous devez comprendre ce que fait Delphi en arrière-plan pour intercepter les messages Windows, comment écrire votre propre gestionnaire de messages pour une application fenêtrée et comment obtenir un identifiant de message unique que vous pouvez utiliser en toute sécurité dans vos applications. Il existe également un petit bogue dans la procédure Delphi DeallocateHWND que vous pouvez corriger en cours de route.
  • Contrôle du nombre d'instances d'application: dans cet article, vous apprendrez à "activer une seule fois" une application Delphi qui peut vérifier son instance précédente (en cours d'exécution). Au cours du processus, plusieurs techniques de mise en œuvre d'une telle vérification seront discutées; ainsi que comment mettre au premier plan votre application en cours d'exécution, si un utilisateur essaie de l'exécuter "une fois de plus". À la fin de l'article, vous disposerez d'un code à copier pour contrôler le comportement des multiples instances de votre application: avec l'option de limiter le nombre d'instances en cours d'exécution.
  • Comment gérer le changement d'heure système à l'aide du code Delphi: si vous devez réagir lorsque l'heure de la date du système a changé, vous pouvez gérer le message Windows WM_TimeChange.
  • Comment dessiner du texte personnalisé sur la barre de légende d'un formulaire Delphi: si vous souhaitez ajouter du texte personnalisé sur la barre de légende d'un formulaire, sans modifier la propriété Caption du formulaire, vous devez gérer un message Windows spécial: WM_NCPAINT (avec WM_NCACTIVATE ).
  • Comment afficher les conseils d'élément de menu: par conception (Windows), dans les applications Delphi, les indices attribués aux éléments de menu ne s'affichent pas dans la fenêtre d'info-bulle contextuelle (lorsque la souris survole un menu).
  • Obtenir, définir et gérer les modes du périphérique d'affichage (résolution d'écran et profondeur des couleurs): cette stratégie vous permet de modifier les paramètres du mode d'affichage Windows (résolution et profondeur des couleurs) à partir du code Delphi. Vous pouvez également gérer le message Windows WM_DISPLAYCHANGE envoyé à toutes les fenêtres lorsque la résolution d'affichage a changé.
  • Obtenir l'URL actuelle à partir d'IE: il existe une tactique Delphi pour récupérer l'URL complète de toutes les instances Internet Explorer ouvertes.
  • Détection et prévention de l'arrêt de Windows: vous pouvez utiliser Delphi pour annuler par programme l'action d'arrêt de Windows.
  • Afficher une boîte de dialogue de mot de passe: supposons que vous ayez un type d'application critique pour les données où vous ne voudriez pas qu'un utilisateur non créé travaille avec les données. Que faire si vous devez afficher une boîte de dialogue de mot de passe * avant * l'application est restaurée pour vous assurer qu'un utilisateur autorisé y accède.
  • Supprimez la contrainte Windows sur la taille minimale du formulaire: par conception Windows, un formulaire (fenêtre) a une contrainte de taille qui définit la hauteur minimale du formulaire à la hauteur de la barre de légende et la largeur à 112 pixels (118 dans le thème XP).
  • Comment détecter un événement OnClose (OnPopDown) d'un TPopupMenu: Malheureusement, le TPopupMenu n'expose pas un événement que vous pouvez gérer qui se déclenchera lorsque le menu se fermera - soit après qu'un utilisateur a sélectionné un élément dans le menu ou a activé un autre élément d'interface utilisateur.
  • Interception des messages envoyés à une application: "… Delphi fait apparaître l'événement OnMessage pour l'objet Application. Le gestionnaire d'événement OnMessage est" supposé "pour vous permettre d'intercepter tous les messages envoyés à votre application ..."