LoadDib => charger une image en 24 bits ?

LoadDib => charger une image en 24 bits ? - C++ - Programmation

Marsh Posté le 19-01-2008 à 14:51:06    

bonjour
 
j'essaye d'améliorer les icônes des barres d'outils d'un logiciel, celles utilisées actuellement sont en 16 couleurs (4bits !). je voudrais passer en images 24 bits...
 
j'ai déjà réussi pour plusieurs éléments du programme (certaines barres de menu.. lorsque c'était codé en utilisant la fonction LoadBitmap) mais j'en ai qui sont codées différement (LoadDib), et j'arrive pas a lui faire manger du 24bits  :o  
 
là c'est la ligne qui charge le fichier bitmap: (tous les icones sont dans 1 seul bitmap, à découper par la suite)

Code :
  1. bmpPatterns = LoadDib(MAKEINTRESOURCE(IDB_PATTERNS));


 
avec bmpPatterns de type:

Code :
  1. LPMODPLUGDIB CMainFrame::bmpPatterns = NULL;


 
et la "définition du type MODPLUGDIB" (je suis pas sur de mes termes...)

Code :
  1. LPMODPLUGDIB LoadDib(LPCSTR lpszName)
  2. //-----------------------------------
  3. {
  4. HINSTANCE hInstance = AfxGetInstanceHandle();
  5. HRSRC hrsrc = FindResource(hInstance, lpszName, RT_BITMAP);
  6. HGLOBAL hglb = LoadResource(hInstance, hrsrc);
  7. LPBITMAPINFO p = (LPBITMAPINFO)LockResource(hglb);
  8. if (p)
  9. {
  10.  LPMODPLUGDIB pmd = new MODPLUGDIB;
  11.  pmd->bmiHeader = p->bmiHeader;
  12.  for (int i=0; i<16; i++) pmd->bmiColors[i] = p->bmiColors[i];
  13.  LPBYTE lpDibBits = (LPBYTE)p;
  14.  lpDibBits += p->bmiHeader.biSize + 16 * sizeof(RGBQUAD);
  15.  pmd->lpDibBits = lpDibBits;
  16.  return pmd;
  17. } else return NULL;
  18. }


 
 
 
 
actuellement si je lui rentre une bitmap 24bits il m'affiche une image noire... savez-vous comment adapter ce code pour lui faire supporter plus de 16 couleurs ?

Reply

Marsh Posté le 19-01-2008 à 14:51:06   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed