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
    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
    Membre confirm�
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    97
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 97
    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
    Membre confirm�
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    97
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 97
    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
    Par d�faut
    laquelle ? ( )

  5. #65
    Membre confirm�
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    97
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 97
    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
    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
    Membre confirm�
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    97
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 97
    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