begin process at 2012 05 29 02:44:31
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Diaporama d'images bitmaps... le plus simple possible...


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Diaporama d'images bitmaps... le plus simple possible...

jeudi 22 avril 2004 à 10:10:01 | Diaporama d'images bitmaps... le plus simple possible...

Druith2

Bonjour, je galère depuis le début de la semaine (je suis un neophyte veritable). Je cherche un moyen simple pour créer un diaporama de 12 images bitmaps.

Alors, j'arrive à afficher un bitmap tt seul. Mais je ne sais pas comment modifier mon code pour que disons toutes les 0.5 secondes, un autre prenne sa place et ce en boucle...

J'ai pensé à creer un timer... mais je ne sais pas où le placer dans mon code ni comment l'utiliser... Je peux toujours vous proposer mon code de départ, meme i je sais qu'il me faut le modifier pas mal...


Je remercie ceux qui accepteront de me guider... J'ai vraiment besoin de ce programme et je désespère....


LRESULT CALLBACK WinProc(HWND fenetre2, UINT message2, WPARAM wParam, LPARAM lParam)
{

static HBITMAP hbitmap; // pour le bitmap

switch (message2)
{
case WM_KEYDOWN:
switch(wParam)
{
case VK_UP:
// creation d'un rectangle
RECT rect;
rect.top=0;
rect.left=0;
rect.bottom=0;
rect.right=0;
// maintenant k change la valeur des couleurs des pixels
k+=50;
if(k>250) k=0;
// on demande à redessiner la zone de rect avec un message WM_PAINT
InvalidateRect(fenetre2,&rect,FALSE);
break;
case VK_ESCAPE:
DestroyWindow(fenetre2);
break;
default:
break;

}
break;

case WM_PAINT:
HDC hdc;HDC hdcMemory;
PAINTSTRUCT ps;
hdc=BeginPaint(fenetre2,&ps);

// un bitmap

BITMAP bm;
hbitmap=(HBITMAP) LoadImage(NULL,"menu.bmp",IMAGE_BITMAP,nHori,nVert,LR_LOADFROMFILE);


hdcMemory=CreateCompatibleDC(NULL);
SelectObject(hdcMemory,hbitmap);
GetObject(hbitmap,sizeof(bm),&bm);
BitBlt(hdc,0,0,bm.bmWidth,bm.bmHeight,hdcMemory,0,0,SRCCOPY);

DeleteDC(hdcMemory);

EndPaint(fenetre2,&ps);
break;



// Fermeture du programme
case WM_DESTROY:
DeleteObject(hbitmap); //--> supprime le bmp
// Ferme le programme
PostQuitMessage(0);
break;


(j'ai piqué ce code sur TEXEL et je l'ai remis à ma sauce, donc y'a des chances pour qu'il ne soit po tres bo... :/ )

jeudi 22 avril 2004 à 10:11:45 | Re : Diaporama d'images bitmaps... le plus simple possible...

Druith2

oups, j'avais pas fait gaffe que ca faisait un mini troll...

"Les fous sont aux échecs les plus proches des rois"
jeudi 22 avril 2004 à 11:59:16 | Re : Diaporama d'images bitmaps... le plus simple possible...

ymca2003

création du Timer (dans WM_CREATE par ex):
SetTimer(hWnd, 0x100, 500, NULL);
0x100 : Id du timer créé
500 : cadence en ms.

en suite, toute les 500ms le message WM_TIMER est envoyé, il te suffit de le gérer, de modifier le bitmap à afficher et de redemander l'affichage de la fenêtre :
InvalidateRect(hWnd, NULL, FALSE);
UpdateWindow(hWnd);
le dernier paramètre de InvalidateRect indique de ne pas redessiner le fond (pour éviter un clignotement et utilie si ton bitrmap à dessiner prend toute la fenêtre).
jeudi 22 avril 2004 à 14:00:14 | Re : Diaporama d'images bitmaps... le plus simple possible...

Druith2

Merci, j'y vois un peu plus clair. Je vais voir ce que je vais reussir à en faire.

"Les fous sont aux échecs les plus proches des rois"
jeudi 22 avril 2004 à 18:05:01 | Re : Diaporama d'images bitmaps... le plus simple possible...

Druith2

Voilà ce que j'ai fait :

case WM_TIMER: // timer : changement des bitmaps

bool time;
char* bmp;
int i = 0;

time = SetTimer(fenetre2, 0x100, 500, NULL); // 0x100 = id timer | 500 : durée timer

if(int time = true) { // quand le message du timer est envoyé
i++ ;
}

switch(i) {
case 1 : bmp = "./bmp/image.bmp"; // change la date de bmp (titre du bmp à changer)
break;
case 2 : bmp = "./bmp/image2.bmp";
break;
case 3 : bmp = "./bmp/image3.bmp";
break;
default : i = 0 ; //réinitialisation du compteur
}

}


plus loin, j'ai mis :

hbitmap=(HBITMAP) LoadImage(NULL,bmp,IMAGE_BITMAP,nHori,nVert,LR_LOADFROMFILE);


Ceci dit, mon compilateur (dev-C++) refuse de compiler en me disant pour la ligne d'apres qui est :

case WM_KEYDOWN: (voir script complet précédent post)

--> jump to case label

Quelqu'un comprend mon problème ?? Merci d'avance




"Les fous sont aux échecs les plus proches des rois"
vendredi 23 avril 2004 à 00:48:34 | Re : Diaporama d'images bitmaps... le plus simple possible...

ymca2003

le SetTimer est à mettre dans WM_CREATE, ce qui crée un timer qui va envoyer le message WM_TIMER, ta variable de compteur (i, mais à rennomer en qqchose de plus "parlant") doit être globale, ainsi que bmp.

case WM_TIMER: // timer : changement des bitmaps
i++ ;

switch(i) {
case 1 : bmp = "./bmp/image.bmp"; // change la date de bmp (titre du bmp à changer)
break;
case 2 : bmp = "./bmp/image2.bmp";
break;
case 3 : bmp = "./bmp/image3.bmp";
break;
default : i = 0 ; //réinitialisation du compteur
}


pour l'erreur, surrement un pb de paire {} mal équlibére entre les switch et les case (fait des sous-fct pour les case de la WndProc, ce sera plus clair).
vendredi 23 avril 2004 à 10:53:25 | Re : Diaporama d'images bitmaps... le plus simple possible...

Druith2

Merci encore une fois.

Maintenant, j'ai ca :


LRESULT CALLBACK WinProc(HWND fenetre2, UINT message2, WPARAM wParam, LPARAM lParam)
{
//variables globales
static HBITMAP hbitmap; // pour le bitmap
int diapo = 0; //variable de compteur
char* filename; // variable de nom de fichier

switch (message2)
{
case WM_CREATE:

SetTimer(fenetre2, 101, 500, NULL);


case WM_TIMER: // timer : changement des bitmaps

diapo++;

switch(diapo) {
case 1 : filename = "./bmp/1984.bmp"; // chnage la date de bmp (titre du bmp à changer)
break;
case 2 : filename = "./bmp/1987.bmp";
break;
case 3 : filename = "./bmp/1989.bmp";
break;
[...]
case 11 : filename = "./bmp/2004.bmp";
break;
default : diapo = 0 ;
}



Et au niveau de l'affichage du bitmap :

hbitmap=(HBITMAP) loadImage(NULL,filename,IMAGE_BITMAP,nHori,nVert,LR_LOADFROMFILE);


Je détruit le setTimer ds le WM_DESTROY, tout se compile à merveille, mais lorsque je lance l'execution, aucune image ne s'affiche à l'écran...



"Les fous sont aux échecs les plus proches des rois"
vendredi 23 avril 2004 à 23:26:59 | Re : Diaporama d'images bitmaps... le plus simple possible...

ymca2003

tes variables diapo et filename ne sont toujours pas globales.
met les ststic aussi ou met les en dhors du copr de WndProc.


Cette discussion est classée dans : code, break, rect, bitmap, hbitmap


Répondre à ce message

Sujets en rapport avec ce message

Creation d'une Bitmap en niveaux de gris (256 ou 65536) [ par carolivier ] Bonjour,Je cherche un bout de code me permettant de creer (pour l'affichage, pasbesoin) une Bitmap en 256 (ou 65536) niveaux de gris. a chaque fois, j Creation d'une Bitmap en niveaux de gris (256 ou 65536) [ par carolivier ] Bonjour,Je cherche un boutb de code me permettant de creer (pour l'affichage, pasbesoin) une Bitmap en 256 (ou 65536) niveaux de gris. a chaque fois, Bitmap [ par zainal ] Salut a vousbon voila, je voudrai afficher une bitmap dans une zone de static et j ai creer ce bout de code qui ne marche pas vous vous en douter !voi Problème de parent [ par chamomagik ] Je désire créer une combo box dans le code avec visual cpp mais je ne comprends pas ce qu'est un "pParentWnd".voici l'aide de MSDN que je ne comprends Loader une image [ par DjGonk ] Slt je voudrais loader une image de mes resouces dans un controle static: mon code c'est:CStatic *set=(CStatic*) (GetDlgItem(IDC_STATIC_COUVL));CRect Problème incompréhensible [ par CyberP ] Dans un callback d'une fenêtre, j'ai inséré ce code :case WM_PAINT:{ PAINTSTRUCT peindre; HDC rect; rect = BeginPaint(hWnd, &peindre); Engine.dr Problème de GROS débutant : DeviceContext et dessin... [ par tempirate ] Je débute en visual c++ (amateurisme total) et j'ai commencé par faire un tout ptit logiciel de dessin..mais je n'arrive pas à trouver une fonction qu Dimensions fenetre [ par coockiesch ] Hello et re-hello!!!Je cherche à adapter la taille d'un controle à la taille d'une fenetre lors de la création de celui-ci.Voici mon code (dans WM_CRE SetClipboardData + CF_BITMAP [ par vecchio56 ] J'essaye de mettre un bitmap dans la clipboard, mais vu que je ne sais pas trop comment ca marche les bitmap, je galère un peu. Voila ou j'en suis:HBI Accelération affichage image bitmap [ par corben dallas ] Bonjour à tous,Mon problème est le suivant: je cherche à afficher un flux vidéo constitué d'images bitmap dans une fenêtre. Mon code est le suivant:dc


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 4,181 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales