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 :

[MFC] parametrage d'une listbox


Sujet :

MFC

  1. #61
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    salut,
    je viens de relire ton code ,tu me bousille le rectangle d'affichage avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     // affichage du bmp à l'emplacement voulu
             GetClientRect(&(lpDrawItemStruct->rcItem));
    lpDrawItemStruct->rcItem est deja chargée il ne faut pas y toucher....


  2. #62
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 97
    Points : 26
    Points
    26
    Par défaut
    salut,
    ha oui en effet j'avais pas vu que c'etait un paramettre de sortie.

    sinon je suis en train d'essayer une methode.

    plutot que de dessiner directement mes images comme dans le code precedent et vu que je ne peu pas les faire defiler dans ma liste box:

    j'insere dans ma liste box les string correspondnat au nom des fichiers image.
    puis dans la fonction drawitem je recupere le nom et j'insere l'image à la place
    ainsi on peut faire defiler les images car on fait defiler le texte derriere en fait.

    enfin a tester car je fait 10000 truc en meme temps et ca navance pas vite.

  3. #63
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 97
    Points : 26
    Points
    26
    Par défaut
    cette methode etait la bonne, je mettrai mon code quand ca sera un peu plus propre

  4. #64
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    laquelle ? ( )

  5. #65
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 97
    Points : 26
    Points
    26
    Par défaut
    celle-ci:
    Citation Envoyé par mandagor
    plutot que de dessiner directement mes images comme dans le code precedent et vu que je ne peu pas les faire defiler dans ma liste box:

    j'insere dans ma liste box les string correspondnat au nom des fichiers image.
    puis dans la fonction drawitem je recupere le nom et j'insere l'image à la place
    ainsi on peut faire defiler les images car on fait defiler le texte derriere en fait.
    c'est barbar mais ca marche

    jappel cette fonction dans le drawitem en fonction d'un test pour savoir si c'est une liste de texte ou une liste d'image
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    void CMyListBox::ImageDraw(LPDRAWITEMSTRUCT lpDrawItemStruct)
    {
    	CDC *pdc;
    	pdc=new CDC();
    	CBitmap *bmp;
    	CString str;
     
    	GetText(lpDrawItemStruct->itemID,str);
    	HBITMAP hBitmap=(HBITMAP)LoadImage( 0,str,IMAGE_BITMAP,0,0,LR_LOADFROMFILE | LR_LOADMAP3DCOLORS|LR_SHARED ); 
    	bmp = CBitmap::FromHandle(hBitmap);
     
    	// Get the size of the bitmap.
    	BITMAP bmpInfo;
    	bmp->GetBitmap(&bmpInfo);
     
    	pdc->Attach(lpDrawItemStruct->hDC);
     
    	// Create an in-memory device context compatible with the
    	// display device context that is used to paint.
    	CDC dcMemory;
    	dcMemory.CreateCompatibleDC(pdc);
     
    	//si item selectionné
    	if ((lpDrawItemStruct->itemAction | ODA_SELECT) &&
    	  (lpDrawItemStruct->itemState & ODS_SELECTED) )
    	{       
    		if(m_bBlink && m_bFlipFlap)//clignotement?
    		{
    		   pdc->FillSolidRect(&lpDrawItemStruct->rcItem,crBkColor);
    		}else
    		{
    		  pdc->FillSolidRect(&lpDrawItemStruct->rcItem, crTextColor);
    		}
    	}
    	else //si item non selectionné
    	{
    		pdc->FillSolidRect(&lpDrawItemStruct->rcItem,crBkColor);
    	}
     
    	// Select the bitmap into the in-memory device context.
    	CBitmap* pOldBitmap = dcMemory.SelectObject(bmp);
     
    	// affichage du bmp à l'emplacement voulu
    	//GetClientRect(&(lpDrawItemStruct->rcItem));
    	int nX = lpDrawItemStruct->rcItem.left + bmpInfo.bmWidth;
    	int nY = lpDrawItemStruct->rcItem.top;
     
    	// Copy the bits from the in-memory device context to the on-
    	// screen device context to do the painting. Use the computed center
    	// point for the target offset.
    	pdc->BitBlt(nX, nY, bmpInfo.bmWidth, bmpInfo.bmHeight, &dcMemory,
    	0, 0, SRCCOPY);
     
    	dcMemory.SelectObject(pOldBitmap);
    }
    tu va me dir que là je recharge mon image a chaque fois mais a l'heure actuelle ce n'est pas grave.


  6. #66
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    re,
    a priori il manque un DeleteObject pour le handle bitmap.
    d'ailleurs au lieu de faire FromHandle tu declares un objet bitmap et non un pointeur et tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    CBitmap bmp;
    bmp.Attach(
    (HBITMAP)LoadImage( 0,str,IMAGE_BITMAP,0,0,LR_LOADFROMFILE | LR_LOADMAP3DCOLORS|LR_SHARED ));
    comme ça la destruction se fait toute seule sur la destruction de bmp.


  7. #67
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 97
    Points : 26
    Points
    26
    Par défaut
    merci pour l'info

+ Répondre à la discussion
Cette discussion est résolue.
Page 4 sur 4 PremièrePremière 1234

Discussions similaires

  1. Réponses: 16
    Dernier message: 13/07/2007, 16h26
  2. [MFC] clic droit sur une listbox ?
    Par julien.nasser dans le forum MFC
    Réponses: 1
    Dernier message: 07/06/2006, 14h53
  3. [MFC] initialisation d'une Listbox
    Par kitsune dans le forum MFC
    Réponses: 6
    Dernier message: 15/11/2005, 14h26
  4. [MFC] Probleme d'actualisation d'une listbox
    Par Robleplongeur dans le forum MFC
    Réponses: 5
    Dernier message: 13/05/2004, 14h15
  5. [MFC] CPropertySheet dans une CFormView ???
    Par Lofwyr dans le forum MFC
    Réponses: 2
    Dernier message: 30/07/2003, 16h49

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