Prob mem sur CreateDIBSection

Signaler
Messages postés
2
Date d'inscription
lundi 24 juin 2002
Statut
Membre
Dernière intervention
16 juillet 2002
-
Messages postés
9
Date d'inscription
vendredi 14 janvier 2005
Statut
Membre
Dernière intervention
6 juillet 2006
-
Salut
jessaye douvrir des images grace a OLE, se qui me permet d'ouvrir avec un meme code les images reconnu par windows

mon code est celui-ci :
memset( &bmi , 0 , sizeof(BITMAPINFO) ) ;
bmi.bmiHeader.biSize = sizeof (BITMAPINFOHEADER ) ;
bmi.bmiHeader.biWidth = width ;
bmi.bmiHeader.biHeight = height ;
bmi.bmiHeader.biPlanes = 1 ;bmi.bmiHeader.biBitCount 16 ; //16 16 bits 24 = 24 bits et 32 = 32 bits
bmi.bmiHeader.biCompression = BI_RGB ;
bmi.bmiHeader.biSizeImage = 0 ;
bmi.bmiHeader.biXPelsPerMeter = 0 ;
bmi.bmiHeader.biYPelsPerMeter = 0 ;
bmi.bmiHeader.biClrUsed = 0 ;
bmi.bmiHeader.biClrImportant = 0 ;

SetLastError(0);
memBitmap = CreateDIBSection( memDC ,
&bmi ,
DIB_RGB_COLORS , (void **)&pixelPtr , NULL,
0 ) ;
msg = GetLastError();

GetLastError me renvoi lerreur 8, soit un manque de memoire, pourtant tout est bien alloué et mon systeme a largement suffisement de RAM...

si quelqu'un sait dou vient le prob, merci de me lindiquer !
A voir également:

3 réponses

Messages postés
4
Date d'inscription
dimanche 31 mars 2002
Statut
Membre
Dernière intervention
7 juillet 2002

-------------------------------
Réponse au message :
-------------------------------

Salut
jessaye douvrir des images grace a OLE, se qui me permet d'ouvrir avec un meme code les images reconnu par windows

mon code est celui-ci :
#define ALIGNLONG(i) ((i+3)/4*4)
memset( &bmi , 0 , sizeof(BITMAPINFO) ) ;
bmi.bmiHeader.biSize = sizeof (BITMAPINFOHEADER ) ;
bmi.bmiHeader.biWidth = width ;
bmi.bmiHeader.biHeight = height ;
bmi.bmiHeader.biPlanes = 1 ;bmi.bmiHeader.biBitCount 16 ; //16 16 bits 24 = 24 bits et 32 = 32 bits
bmi.bmiHeader.biCompression = BI_RGB ;
bmi.bmiHeader.biSizeImage = 0 ;
bmi.bmiHeader.biXPelsPerMeter = 0 ;
bmi.bmiHeader.biYPelsPerMeter = 0 ;
bmi.bmiHeader.biClrUsed = 0 ;
bmi.bmiHeader.biClrImportant = 0 ;

BITMAPINFOHEADER* lpbi;
lpbi = (BITMAPINFOHEADER*)GlobalAlloc( GPTR,sizeof(BITMAPINFOHEADER) +16 * sizeof (RGBQUAD) +( ALIGNLONG( (width* 4)/8 )* height));
*lpbi = bmi;

SetLastError(0);
memBitmap = CreateDIBSection( memDC ,
(LPBITMAPINFO) lpbi,
DIB_RGB_COLORS , (void **)&pixelPtr , NULL,
0 ) ;
msg = GetLastError();

GetLastError me renvoi lerreur 8, soit un manque de memoire, pourtant tout est bien alloué et mon systeme a largement suffisement de RAM...

si quelqu'un sait dou vient le prob, merci de me lindiquer !

g modifié ta source mais je n lé pas exécuter j'espère que ca marchera ou tout du moins que ca te mettra sur la bonne voie.
ciao
Messages postés
2
Date d'inscription
lundi 24 juin 2002
Statut
Membre
Dernière intervention
16 juillet 2002

Il y avait juste un erreur de type
jai donc repris ton idee mais ca ne marche toujours pas...
si quelqu'un dautre a une idee, merci davance
Messages postés
9
Date d'inscription
vendredi 14 janvier 2005
Statut
Membre
Dernière intervention
6 juillet 2006

Le probleme est simple (!) : tu utilises l'option GPTR qui utilise L_MEMFIXE.

Ca ne peut donc pas marcher.
Remplace ca par GHND et ca devrait aller mieux......