MFC: listeview, longueur max

Utilisateur anonyme - 2 avril 2007 à 21:06
 Utilisateur anonyme - 3 avril 2007 à 18:49
Bonjour,

Voila j'ai passer mon sujet aujourd'hui et le prof m'as fais sécher:
j'ai un programme fais avec les MFC, et j'ai une listview, et il m'as demander: "ta listview qui affiche des imagettes, elle est infinie ou non ?"

Lui pense que oui et que ca utilise les liste chainée comme processus...

Si quelqu'un connait la réponse ?

Merci

3 réponses

Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
3 avril 2007 à 01:40
Salut:

Sans code source tout est possible.


________________________________________________________________________________
A.B. : 
"Dieu nous donne des mains, mais il ne bâtit pas les ponts
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
3 avril 2007 à 11:47
Une struct LVITEM a 2 membres 32bits, iTem et iSubItem.
Voila deja réglé à la base le prob de l'infini.

ciao...
BruNews, MVP VC++
0
Utilisateur anonyme
3 avril 2007 à 18:49
Sans code source tout est possible :p j'ai pas besoin de montrer le code source, c'est de la culture générale, que ce soit un listview VB ou VC++, l'affichage est-il infini ou non ? merci BruNews

sinon voici le code(meme si on a la reponse que ca n'est pas infini de BruNews), attention c'est du lourd

void CEssaiDlg::DrawThumbnails()
{
 CBitmap*    pImage = NULL; 
 HBITMAP     hBitmap = NULL;
 HPALETTE    hPal = NULL;
 HDC   hMemDC = NULL; 
 HGDIOBJ  hOldObj = NULL;
 POINT  pt;


 CFile  ImgFile;
 CString  strPath;
 int   nWidth, nHeight;


 //Ajout variables gdi+
 LPCWSTR pszWide;
 using namespace Gdiplus;
 Gdiplus::Image* image=NULL;
 Bitmap* pThumbnail;
 int m_nNomDossier=m_sRepertoireImages.GetLength();
 int m_nNomImage=0;
 CString m_sNomImage;


 //Pas d'images
 if(m_VectorImageNames.empty())
  return;
 //Espacement entre les imagettes
 int nGap = 6;


 m_cListeImagette.SetRedraw(FALSE);


 //Reset de la liste d'images
 for(int i=0; i<m_ImageListThumb.GetImageCount(); i++)
  m_ImageListThumb.Remove(i); 


 //Reset des items
 if(m_cListeImagette.GetItemCount() != 0)
  m_cListeImagette.DeleteAllItems();


 //Taille de la liste images
 m_ImageListThumb.SetImageCount(m_VectorImageNames.size());
 i = 0;


 //Dessine les imagettes
 std::vector<CString>::iterator iter;
 for(iter = m_VectorImageNames.begin(); iter != m_VectorImageNames.end(); iter++)
 {  
  strPath=*iter;
  USES_CONVERSION;
  pszWide=A2CW(strPath);
  //Chargement de l'image
  image=Image::FromFile(pszWide);


  //Dimensions de l'image
  nWidth=image->GetWidth();
  nHeight=image->GetHeight();


  pThumbnail=(Bitmap*)image->GetThumbnailImage(THUMBNAIL_WIDTH,THUMBNAIL_HEIGHT,NULL,NULL);


  HBITMAP hBm;
  Color backgroundColor;
  pThumbnail->GetHBITMAP(backgroundColor, &hBm);


  pImage=new CBitmap();;
  //CBitmap pImage;


  //pImage->Attach(hBm);
  pImage->Attach(hBm);


  // Addition bitmap à la liste d'imagettes
  m_ImageListThumb.Replace(i, pImage, NULL);


  // Inscription du nom de l'image
  m_sNomImage=m_VectorImageNames[i];
  m_nNomImage=m_sNomImage.GetLength();
  m_cListeImagette.InsertItem(i, m_sNomImage.Right(m_nNomImage-m_nNomDossier), i);


  // Position de l'image 
  m_cListeImagette.GetItemPosition(i, &pt); 
  //pt.x = nGap + i*(THUMBNAIL_WIDTH + nGap);
  m_cListeImagette.SetItemPosition(i, pt);
  i++;
   
  delete pImage;
  //delete pThumbnail;
 }


 // Affichage des imagettes
 m_cListeImagette.SetRedraw(TRUE);
}
0
Rejoignez-nous