[api]Plusieurs images dans un dcMem, ou plusieurs dcMem

Résolu
cs_hoGan Messages postés 20 Date d'inscription samedi 22 mai 2004 Statut Membre Dernière intervention 7 décembre 2005 - 6 déc. 2005 à 20:27
cs_hoGan Messages postés 20 Date d'inscription samedi 22 mai 2004 Statut Membre Dernière intervention 7 décembre 2005 - 7 déc. 2005 à 14:06
Bonjour à tous,
j'aimerais pouvoir afficher plusieurs images l'une à la suite de l'autre en cliquant plusieurs fois sur un bouton. Voici la façon dont je procède:

[Note : les variables sont bien sûr toutes déclarées avant]

//--- Dans la fonction principale --- :
hBitmap = LoadBitmap(wincl.hInstance, "IMAGE1");
GetObject(hBitmap, sizeof(BITMAP), &bm);
hdc = GetDC(hwnd);
hdcMem = CreateCompatibleDC(hdc);
hBitmap = (HBITMAP) SelectObject(hdcMem, hBitmap);
//-----------------------------------------------

//--- Dans la fonction de retour ---- :
case WM_PAINT:
{
PAINTSTRUCT ps;
HDC hDC = BeginPaint(hwnd, &ps);
if(bButton == TRUE)
{
BitBlt(hDC, abscisse_image, 0,
bm.bmWidth,
bm.bmHeight,
hdcMem, 0, 0, SRCCOPY);
}
EndPaint(hwnd, &ps);
}
break;

case WM_COMMAND:
{
if(!bButton)bButton = TRUE;
abscisse_image = abscisse_image + 150;
InvalidateRect(hwnd, NULL, FALSE);
}
//-------------------------
Ce code fonctionne en ce qui concerne l'affichage successif d'images. Le problème, c'est que si j'abaisse puis remonte la fenêtre(perte de focus), seule la dernière image reste affichée.
Comment régler ce problème? Je veux que toutes les images soient présentes !
Je me suis dit qu'il fallait faire plusieurs dcMem; enfin je ne vois pas trop comment procéder :(

Merci

2 réponses

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
6 déc. 2005 à 20:59
Il faut garder en mémoire l'indice i ou tu est rendu. Dans WM_COMMAND, tu fais i++ et dans WM_PAINT:

abscisse_image = 0;
for(int j = 0; j < i; j++)
{
BitBlt(hDC, abscisse_image, 0,
bm.bmWidth,
bm.bmHeight,
hdcMem, 0, 0, SRCCOPY);
abscisse_image += 150;
}
3
cs_hoGan Messages postés 20 Date d'inscription samedi 22 mai 2004 Statut Membre Dernière intervention 7 décembre 2005
7 déc. 2005 à 14:06
Ca marche très bien merci beaucoup :D
0
Rejoignez-nous