Ca y est je suis vraiment au boerd du suicide

oRTEEZ Messages postés 81 Date d'inscription vendredi 18 juillet 2003 Statut Membre Dernière intervention 10 septembre 2003 - 13 août 2003 à 17:43
MAJCPP Messages postés 1 Date d'inscription jeudi 14 août 2003 Statut Membre Dernière intervention 14 août 2003 - 14 août 2003 à 17:43
Voila j'ai une fonction cense afficher un bitmp dans une List box en la resizant a la taille, j'ai passe la journee dessus et je craque, voila ma fonction:

void PrintBmp(HWND hWnd, char *filename)
{
HBITMAP hBmp;
BITMAP bm;
HDC hDC, prehDC;
RECT list;
int ximage, yimage; int xpos 0 , ypos 0;
int xlist, ylist;
float rapport;
//Charge mon image
hBmp=(HBITMAP)LoadImage(NULL,filename,IMAGE_BITMAP,0,0,LR_LOADFROMFILE);

//transforme en bitmap pour recuperer la taille
GetObject (hBmp, sizeof(BITMAP), &bm);
ximage = bm.bmWidth;
yimage = bm.bmHeight;

//recupere les dimension de ma listbox
GetClientRect(hWnd, &list);
xlist = list.right;
ylist = list.bottom;

//Algo de resize
/* if (yimage > ylist)
{
rapport = abs(yimage/ximage);
yimage = ylist;
ximage = (ximage/rapport)-10;
}
*/
//Attribution de mon DC
hDC = GetDC(hWnd);
SelectObject(prehDC, hBmp);

//dessin de mon bitmap
StretchBlt(hDC, 10,10,xlist,ylist, prehDC, 0,0, ximage, yimage, SRCCOPY);
}

La c'est la panique alors si une ame charitable pouvait se fendre d'une solution cela rejouirais mon petit coeur tout triste...

MERkI

11 réponses

cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
13 août 2003 à 17:54
Salut,
Tu le sors d'ou ton prehDC ?
Tu selectionne ton hBmp a l'interieur de ce prehDC mais je ne vois pas la ligne ou tu le crée de DC.
0
oRTEEZ Messages postés 81 Date d'inscription vendredi 18 juillet 2003 Statut Membre Dernière intervention 10 septembre 2003
13 août 2003 à 17:57
Je crois bien que c'est cela mon probleme je ne sais pas comment mettre mon bitmap dans ce prehDC pour pourvoir ensuite le passer dans hDC grace a la fonction StretchBlt.
0
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
13 août 2003 à 18:00
Salut,
CreateDC(...)
Je pense que si tu crée un DC ayant les meme carateristiques que hDC mais avec les dimentions de ton image ca serait mieux. Tu crée ton prehDC, tu y selectionne le bmp, et ensuite tu pourra copier prehDC dans hDC.
0
oRTEEZ Messages postés 81 Date d'inscription vendredi 18 juillet 2003 Statut Membre Dernière intervention 10 septembre 2003
13 août 2003 à 18:00
-------------------------------
Réponse au message :
-------------------------------

> Je crois bien que c'est cela mon probleme je ne sais pas comment mettre mon bitmap dans ce prehDC pour pourvoir ensuite le passer dans hDC grace a la fonction StretchBlt.

en fait j'ai mon SelectObject je pensais que cela marcherais mais apparement non...
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > Salut,
> > Tu le sors d'ou ton prehDC ?
> > Tu selectionne ton hBmp a l'interieur de ce prehDC mais je ne vois pas la ligne ou tu le crée de DC.
> >
> >
> >
> > -------------------------------
> > Réponse au message :
> > -------------------------------
> >
> > > Voila j'ai une fonction cense afficher un bitmp dans une List box en la resizant a la taille, j'ai passe la journee dessus et je craque, voila ma fonction:
> > >
> > > void PrintBmp(HWND hWnd, char *filename)
> > > {
> > > HBITMAP hBmp;
> > > BITMAP bm;
> > > HDC hDC, prehDC;
> > > RECT list;
> > > int ximage, yimage;> > > int xpos 0 , ypos 0;
> > > int xlist, ylist;
> > > float rapport;
> > > //Charge mon image
> > > hBmp=(HBITMAP)LoadImage(NULL,filename,IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
> > >
> > > //transforme en bitmap pour recuperer la taille
> > > GetObject (hBmp, sizeof(BITMAP), &bm);
> > > ximage = bm.bmWidth;
> > > yimage = bm.bmHeight;
> > >
> > > //recupere les dimension de ma listbox
> > > GetClientRect(hWnd, &list);
> > > xlist = list.right;
> > > ylist = list.bottom;
> > >
> > > //Algo de resize
> > > /* if (yimage > ylist)
> > > {
> > > rapport = abs(yimage/ximage);
> > > yimage = ylist;
> > > ximage = (ximage/rapport)-10;
> > > }
> > > */
> > > //Attribution de mon DC
> > > hDC = GetDC(hWnd);
> > > SelectObject(prehDC, hBmp);
> > >
> > > //dessin de mon bitmap
> > > StretchBlt(hDC, 10,10,xlist,ylist, prehDC, 0,0, ximage, yimage, SRCCOPY);
> > > }
> > >
> > >
> > > La c'est la panique alors si une ame charitable pouvait se fendre d'une solution cela rejouirais mon petit coeur tout triste...
> > >
> > > MERkI
> >
>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
oRTEEZ Messages postés 81 Date d'inscription vendredi 18 juillet 2003 Statut Membre Dernière intervention 10 septembre 2003
13 août 2003 à 18:01
> > Je crois bien que c'est cela mon probleme je ne sais pas comment mettre mon bitmap dans ce prehDC pour pourvoir ensuite le passer dans hDC grace a la fonction StretchBlt.
>
> en fait j'ai mon SelectObject je pensais que cela marcherais mais apparement non...
> >
> > -------------------------------
> > Réponse au message :
> > -------------------------------
> >
> > > Salut,
> > > Tu le sors d'ou ton prehDC ?
> > > Tu selectionne ton hBmp a l'interieur de ce prehDC mais je ne vois pas la ligne ou tu le crée de DC.
> > >
> > >
> > >
> > > -------------------------------
> > > Réponse au message :
> > > -------------------------------
> > >
> > > > Voila j'ai une fonction cense afficher un bitmp dans une List box en la resizant a la taille, j'ai passe la journee dessus et je craque, voila ma fonction:
> > > >
> > > > void PrintBmp(HWND hWnd, char *filename)
> > > > {
> > > > HBITMAP hBmp;
> > > > BITMAP bm;
> > > > HDC hDC, prehDC;
> > > > RECT list;
> > > > int ximage, yimage;> > > > int xpos 0 , ypos 0;
> > > > int xlist, ylist;
> > > > float rapport;
> > > > //Charge mon image
> > > > hBmp=(HBITMAP)LoadImage(NULL,filename,IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
> > > >
> > > > //transforme en bitmap pour recuperer la taille
> > > > GetObject (hBmp, sizeof(BITMAP), &bm);
> > > > ximage = bm.bmWidth;
> > > > yimage = bm.bmHeight;
> > > >
> > > > //recupere les dimension de ma listbox
> > > > GetClientRect(hWnd, &list);
> > > > xlist = list.right;
> > > > ylist = list.bottom;
> > > >
> > > > //Algo de resize
> > > > /* if (yimage > ylist)
> > > > {
> > > > rapport = abs(yimage/ximage);
> > > > yimage = ylist;
> > > > ximage = (ximage/rapport)-10;
> > > > }
> > > > */
> > > > //Attribution de mon DC
> > > > hDC = GetDC(hWnd);
> > > > SelectObject(prehDC, hBmp);
> > > >
> > > > //dessin de mon bitmap
> > > > StretchBlt(hDC, 10,10,xlist,ylist, prehDC, 0,0, ximage, yimage, SRCCOPY);
> > > > }
> > > >
> > > >
> > > > La c'est la panique alors si une ame charitable pouvait se fendre d'une solution cela rejouirais mon petit coeur tout triste...
> > > >
> > > > MERkI
> > >
> >
>
0
oRTEEZ Messages postés 81 Date d'inscription vendredi 18 juillet 2003 Statut Membre Dernière intervention 10 septembre 2003
13 août 2003 à 18:04
je comprend pas les argument qu'il faut placer dans CreateDC.
HDC CreateDC(
LPCTSTR lpszDriver, // pointer to string specifying driver name
LPCTSTR lpszDevice, // pointer to string specifying device name
LPCTSTR lpszOutput, // do not use; set to NULL
CONST DEVMODE *lpInitData
// pointer to optional printer data
);
0
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
13 août 2003 à 18:04
SelectObject selectionne juste un objet dans un DC.
Il faut crée le DC et l'objet avant.
0
oRTEEZ Messages postés 81 Date d'inscription vendredi 18 juillet 2003 Statut Membre Dernière intervention 10 septembre 2003
13 août 2003 à 18:23
J'ai tout mis NULL,
mais je pense que c'est la fonction Stretch qui ne fonctionne pas en affichage, ni en redimensionnement d'ailleurs

HELP ME!!!
0
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
13 août 2003 à 18:30
Salut,
En fait il faut créer un DC en mémoire de la taille de ton bmp.
je pensais qu'on pouvais le faire avec CreateDC, mais c'est peut etre pas la bonne fonction.
0
oRTEEZ Messages postés 81 Date d'inscription vendredi 18 juillet 2003 Statut Membre Dernière intervention 10 septembre 2003
13 août 2003 à 19:29
Je pense que SlectObject le fais mais j'ai un probleme d'argument, pourtant je suis MSDN.
La je craque....
0
MAJCPP Messages postés 1 Date d'inscription jeudi 14 août 2003 Statut Membre Dernière intervention 14 août 2003
14 août 2003 à 17:43
Salut,
tu devrais essayer ceci :
prehDC = CreateCompatibleDC(hDC);
avant de faire ton SelectObject(prehDC, hBmp);

a+
0
Rejoignez-nous