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

MFC Discussion :

[CImageList] Problème avec GetImageInfo


Sujet :

MFC

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Avatar de TheGzD
    Homme Profil pro
    Ingénieur/ Docteur en Informatique
    Inscrit en
    Avril 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur/ Docteur en Informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 327
    Par défaut [CImageList] Problème avec GetImageInfo
    Salut !

    J'utilise un CImageList pour afficher des images dans une CComboBox : ça permets à l'utilisateur de mon application de sélectionner une image.

    Cette image je veux par la suite pouvoir la récupérer et l'afficher en réajustant dynamiquement sa taille. Je n'ai malheureusement pas trouvé de méthode de CImageList la permettant. Sachant comment le faire avec un CBitmap je suis donc parti sur une solution durant laquelle je construirai un CBitmap connaissant la CImageList et l'index de l'image qui m'intéresse.
    J'ai donc utiliser la fonction GetImageInfo qui est sensée me permettre de remplir la structure suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    typedef struct _IMAGEINFO {
       HBITMAP hbmImage;
       HBITMAP hbmMask;
       int Unused1;
       int Unused2;
       RECT rcImage;
    } IMAGEINFO, *LPIMAGEINFO;
    A partir de là je récupére hbmImage pour créer un CBitmap avant de l'afficher comme je le souhaite.

    J'ai donc tenté de faire comme ça, cependant bien que le CRect rempli dans la stucutre soit cohérent avec ce que je peux attendre, hbmImage contient (selon Visual) "Expression cannot be evaluated" ... moi pas comprendre ...

    Voici mon code (même si je ne pense pas que ça puisse trop aider) :
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
            IMAGEINFO Info;
     
            this->m_listeimage.GetImageInfo(this->idPicto, &Info);
     
            //get a memory dc object
            CDC dcMem2;
            //create a compatible dc
            dcMem2.CreateCompatibleDC(dc);    // Select the bitmap into the in-memory DC
            //Select the bitmap into the dc
            CBitmap * bm;
            bm = CBitmap::FromHandle(Info.hbmImage);
            CBitmap* pOldBitmap = dcMem2.SelectObject(bm);
     
            dc->TransparentBlt(
                lpDrawItemStruct->rcItem.left+2,
                lpDrawItemStruct->rcItem.top+6,
                (Info.rcImage.right-Info.rcImage.left)*3/5,
                (Info.rcImage.right-Info.rcImage.left)*3/5,
                &dcMem2,
                Info.rcImage.left,
                Info.rcImage.top,
                Info.rcImage.right-Info.rcImage.left,
                Info.rcImage.bottom-Info.rcImage.top,
                NULL);
    Merci d'avance.

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Bonjour,
    HBITMAP est un handle donc une structure opaque. C'est pour ça que le debugger ne peut te dire ce qu'il y a à l'intérieur.
    Que te retourne CBitmap::FromHandle(Info.hbmImage); ? Si c'est nul, tu peux peut être essayé avec un Attach/Detach ?

  3. #3
    Membre éprouvé
    Avatar de TheGzD
    Homme Profil pro
    Ingénieur/ Docteur en Informatique
    Inscrit en
    Avril 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur/ Docteur en Informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 327
    Par défaut
    Citation Envoyé par 3DArchi Voir le message
    Que te retourne CBitmap::FromHandle(Info.hbmImage); ? Si c'est nul, tu peux peut être essayé avec un Attach/Detach ?
    justement il ne me retourne pas de valeur nulle :s

  4. #4
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Citation Envoyé par TheGzD Voir le message
    justement il ne me retourne pas de valeur nulle :s
    Salut,
    Je ne comprend pas alors quel est ton problème ? bm est un pointeur valide ? dcMem2.SelectObject(bm) retourne un pointeur valide ?

  5. #5
    Membre éprouvé
    Avatar de TheGzD
    Homme Profil pro
    Ingénieur/ Docteur en Informatique
    Inscrit en
    Avril 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur/ Docteur en Informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 327
    Par défaut
    bm est un pointeur valide ?
    oui

    dcMem2.SelectObject(bm) retourne un pointeur valide ?
    oui

    Je ne comprend pas alors quel est ton problème ?
    justement il ne devrait pas y en avoir, mais dès que je veux dessiner le bitmap il ne se produit rien ...

    J'ai trouvé un post de quelqu'un qui a vraisemblablement le même problème :
    http://www.programmersheaven.com/mb/...list/?S=B20000

    sans réponses ...

  6. #6
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Commençons par la base...
    1/Les coordonnées sont bonnes ? (zone affichable, top-left<bottom-right, etc...).
    2/Qu'est ce que dc ? C'est à dire dans quelle fonction tu te trouves pour le rendu ?

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

Discussions similaires

  1. VC++ Direct3D8, problème avec LPD3DXFONT et LPD3DTEXTURE8
    Par Magus (Dave) dans le forum DirectX
    Réponses: 3
    Dernier message: 03/08/2002, 11h10
  2. Problème avec [b]struct[/b]
    Par Bouziane Abderraouf dans le forum CORBA
    Réponses: 2
    Dernier message: 17/07/2002, 10h25
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 18h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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