IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Delphi Discussion :

[Delphi Win32] Comment intercepter le message WM_CTLCOLOR ?


Sujet :

Langage Delphi

  1. #1
    Rédacteur
    Avatar de Erakis
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2003
    Messages
    523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 523
    Points : 233
    Points
    233
    Par défaut [Delphi Win32] Comment intercepter le message WM_CTLCOLOR ?
    Bonjour à tous,

    J'aimerais intercepter le message WM CTLCOLOR. Je suis un habitué du C# et du MFC alors je suis un peu perdu. Quelqu'un pourrais me mettre sur une piste ?

    En MFC je faisais ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    HBRUSH CTransparentStatic::CtlColor(CDC* pDC, UINT /*nCtlColor*/)
    {
       pDC->SetBkMode(TRANSPARENT);
       return (HBRUSH)GetStockObject(NULL_BRUSH);
    }
    Merci beaucoup !
    Mieux vaut ne rien savoir que beaucoup savoir à moitié !
    Faite vous en pas avec la vie, personne en est sortie vivant !

  2. #2
    Membre expérimenté Avatar de guillemouze
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    876
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 876
    Points : 1 448
    Points
    1 448
    Par défaut
    la technique de base en delphi pour intercepter les messages :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    interface
    
    type
      MaClasse = class(TWinControl)
      private
        procedure WMCTLCOLOR(var message: TMessage); message WM_CTLCOLOR;
      end;
    
    implementation
    
    procedure MaClasse.WMCTLCOLOR(var message: TMessage);
    begin
      //ici le code lors de la reception du message
    end;
    regarde le code source des composants de la VCL, tu trouvera des exemples
    tu aura certainement besoin de mettre en uses Windows et Messages

  3. #3
    Rédacteur
    Avatar de Erakis
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2003
    Messages
    523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 523
    Points : 233
    Points
    233
    Par défaut
    Wow, merci c'est très gentil de ta part.

    Quand j'utilisais Dephi 2 et 5, je me rappel qu'il y avait toujours l'aide qui venait avec et qui était très bien fait. Comme par exemple la hiérarchie des classes. Qu'est-elle devenue ? J'ai télécharger la version d'évaluation de Dephi 11 mais je n'ai pas d'aide qui vient avec, est-ce normal ?

    Merci encore
    Mieux vaut ne rien savoir que beaucoup savoir à moitié !
    Faite vous en pas avec la vie, personne en est sortie vivant !

  4. #4
    Membre expérimenté Avatar de guillemouze
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    876
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 876
    Points : 1 448
    Points
    1 448
    Par défaut
    je sais pas, moi je suis sous delphi 7, et elle est toujours très pratique

    PS: en regardant dans Messages.pas, j'ai trouvé ca:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
      TWMCtlColor = packed record
        Msg: Cardinal;
        ChildDC: HDC;
        ChildWnd: HWND;
        Result: Longint;
      end;
    donc tu peux remplacer la declaration par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    procedure WMCTLCOLOR(var message: TWMCtlColor ); message WM_CTLCOLOR;
    PS2:
    j'ai oublié mais il faut que tu ajoute un inherited; dans l'implementation si un ancetre de ton composant doit gerer ce meme message

  5. #5
    Rédacteur
    Avatar de Erakis
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2003
    Messages
    523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 523
    Points : 233
    Points
    233
    Par défaut
    Ce message n'est jamais intercepté alors ce que je désirais faire ne fonctionnera pas.

    J'ai trop fait de C# ces dernières années, je m'ennuie donc de Delphi VCL

    Merci BEAUCOUP pour ton aide, c'est grandement apprécié
    Mieux vaut ne rien savoir que beaucoup savoir à moitié !
    Faite vous en pas avec la vie, personne en est sortie vivant !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 27/07/2009, 11h06
  2. Comment Intercepter les messages Excel en .net
    Par la mouette dans le forum VB.NET
    Réponses: 1
    Dernier message: 19/10/2008, 21h07
  3. comment intercepter des messages e-mail?
    Par Just-Soft dans le forum Langage
    Réponses: 2
    Dernier message: 03/10/2008, 16h51
  4. Comment intercepter les messages d'un processus sous windows?
    Par Hamdi Hedhili dans le forum Général Java
    Réponses: 3
    Dernier message: 17/03/2008, 16h57
  5. [MFC] Comment intercepter le message d'un slider ?
    Par Philippe320 dans le forum Visual C++
    Réponses: 11
    Dernier message: 21/07/2006, 18h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo