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

Windows Discussion :

[WinAPI non MFC] Un exemple simple de listbox ownerdraw ?


Sujet :

Windows

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de kidpaddle2
    Inscrit en
    Avril 2006
    Messages
    430
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 430
    Par défaut [WinAPI non MFC] Un exemple simple de listbox ownerdraw ?
    Bonjour,

    J'aimerais, pour un projet, utiliser une listbox dont quelques items seront colorés d'une certaine couleur, et qui soit transparente.
    Je pense qu'une listbox ownerdraw correspond parfaitement à ce que j'attend, seulement il m'est impossible de trouver un exemple -le plus- simple, et si possible commenté, sur celle-ci.

    Pourriez-vous m'en fournir un, que je puisse l'étudier ?

    Merci d'avance.

    P.S: le fait de la dessiner moi-même (donc je suppose, avec des TextOut()) la rend transparente, ou dois-je effectuer d'autres actions pour arriver à mes fins ? (j'aimerais laisser apparaître derrière le bitmap de background représentant un écran)

  2. #2
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 540
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 540
    Par défaut
    Avec le HWND de la ListBox obtenu on obtient un HDC qui permette de dessiner dedans.
    Sinon il faut capter WM_CTLCOLOR voir les messages windows dans le MSDN

  3. #3
    Membre éclairé Avatar de kidpaddle2
    Inscrit en
    Avril 2006
    Messages
    430
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 430
    Par défaut
    OK pour le WM_CTLCOLORLISTBOX. J'ai déjà vu avec Médinoc pour la transparence en utilisant -COLORSTATIC. Je peux bien le faire pour celui-ci

    Par contre, j'aimerais avoir un exemple concret. Savoir que ce HDC permet de dessiner dedans ne m'aide pas beaucoup... j'ai entendu parler de WM_DRAWITEM et de la structure DRAWITEMSTRUCT, mais je ne sais pas comment utiliser tout ceci : la doc fournit des exemples trop complexes, ou juste l'utilisation de ces structures/messages, qui n'est pas forcément évident une fois au code, pour gérer le dessin de la listbox...

  4. #4
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 540
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 540
    Par défaut
    C'est dans le MSDN ; pour la DRAWITEMSTRUCT il suffit d'obtenir le HWND et le HDC du controle; pour le rectangle tu peux prendre GetClipBox() .
    Une fois tous les paramêtres obtenus faire un SendMessage(WM_DRAWITEM,PARAM *(drawitemstruct));

  5. #5
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 399
    Par défaut
    Euh...
    Généralement, le WM_DRAWITEM, tu n'es pas supposé l'envoyer toi-même...
    C'est la ListBox qui te l'envoie pour te dire "hé ho, dessine-moi!"
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  6. #6
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 540
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 540
    Par défaut
    Citation Envoyé par Médinoc
    Euh...
    Généralement, le WM_DRAWITEM, tu n'es pas supposé l'envoyer toi-même...
    C'est la ListBox qui te l'envoie pour te dire "hé ho, dessine-moi!"
    oui finalement tu as raison
    Mais aurais-tu une solution ?

Discussions similaires

  1. [RMI] Exemple simple de mise en place
    Par Marc90 dans le forum API standards et tierces
    Réponses: 8
    Dernier message: 31/05/2006, 17h17
  2. Réponses: 2
    Dernier message: 28/03/2006, 12h13
  3. Creation d'un message dans une dll non MFC
    Par dug dans le forum Windows
    Réponses: 1
    Dernier message: 29/11/2005, 13h50
  4. Réponses: 6
    Dernier message: 20/10/2005, 22h36
  5. recherche exemple simple pour corba en c++
    Par Pinggui dans le forum CORBA
    Réponses: 4
    Dernier message: 06/05/2002, 12h29

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