begin process at 2012 02 11 06:02:44
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Windows

 > 

GUI

 > 

Déplacement d'image BMP avec Win APi


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

Déplacement d'image BMP avec Win APi

mercredi 14 mai 2008 à 22:33:57 | Déplacement d'image BMP avec Win APi

hiroko

En esperant etre dans la bonne catégorie...

Voilà mon problème,
je dois créer un Snake en C avec Win API
Et j'ai des gros problème d'affichage.

Je cherche déjà à afficher une image et a la faire déplacer mais pas moyen d'arriver a quelque chose de convaincant.
Je recherche ame charitable voulant bien sa pencher sur mon problème.


J'ai un menu qui me lance un Timer :

    case WM_COMMAND:
            {
            if(LOWORD(wParam) == IDM_QUIT) PostMessage(hwnd, WM_CLOSE,0,0);
            if(LOWORD(wParam) == IDM_START) SetTimer(hwnd,1,100,NULL);

            return 0;
            }

et ensuite je gère ma direction comme ceci :

        case WM_TIMER:
        {
       if (sens==1)  {postetex=postetex-5;}
       if (sens==2)  {postetey=postetey-5;}
       if (sens==3)  {postetex=postetex+5;}
       if (sens==4)  {postetey=postetey+5;}

       HDC hdc=GetDC(hwnd);
         AfficheImage(hdc,postetex,postetey,tete);
       ReleaseDC(hwnd,hdc);
       return 0;
      }

     case WM_CHAR :
        {
           if(wParam=='z'){sens=2;}
           if(wParam=='q'){sens=1;}
           if(wParam=='d'){sens=3;}
           if(wParam=='s'){sens=4;}
           return 0;
        }


le problème reste l'affichage de mon Bitmap à la bonne position avec l'effacement du reste.
Là je le fais dans le TIMER
mais je n'arrive pas à le passé dans la fonction WM_PAINT sinon tout plante.
et je ne peu pas effacer les positions précédentes...

Voici aussi ce que j'ai dans ma fonction afficheimage() :

    #include <windows.h>


void AfficheImage(HDC hdc, int ix, int iy, char *filename)
{
  HBITMAP hBmp;
  hBmp=(HBITMAP)LoadImage(NULL,filename,IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
  DrawState(hdc,NULL,NULL,(LPARAM)hBmp,NULL,ix,iy,0,0,DST_BITMAP);
  DeleteObject(hBmp);
}


jeudi 15 mai 2008 à 02:12:17 | Re : Déplacement d'image BMP avec Win APi

jfrancois

Réponse acceptée !
Bonsoir,

1) SetFocus(hWnd) sur la fenêtre après appui sur le bouton démarrer sinon c'est lui qui garde le focus et les saisies au clavier sont sans effet.

2) WM_CHAR change l'orientation, OK (mais tenir compte de la casse).

3) WM_TIMER change la position puis lance un InvalidateRect(hWnd,NULL,TRUE); pour forcer l'affichage.

4) L'affichage se fait dans WM_PAINT mais pas de chargement de l'image à chaque fois ! 1 fois suffit dans WM_CREATE.

5) Pour éviter l'effet de clignotement du contenu de la fenêtre, il faudra utiliser la technique du "off screen" en passant par un DC intermédiaire.

Jean-François

jeudi 15 mai 2008 à 16:31:00 | Re : Déplacement d'image BMP avec Win APi

hiroko

Merci déjà pour la réponse.
Mais j'ai besoin de quelque précision (désolé débutant...).

1) Pour le Setfocus OK! je suppose que une fois changé c'est bien là qu'il faut le mettre :

    case WM_COMMAND:
            {
            if(LOWORD(wParam) == IDM_QUIT) PostMessage(hwnd, WM_CLOSE,0,0);
            if(LOWORD(wParam) == IDM_START)  {SetTimer(hwnd,1,100,NULL);SetFocus(hwnd);}

            return 0;
            }

2) et par contre c'est après que ça se corse. J'avais essayer de faire un invalidaterect sur toute ma surface avant de réaffiché mes élément mais du coup c'était tout blanc tout le temps. Ou alors j'ai pas tout compris ce que tu me disais.

3) Peux-tu m'en dire en plus plus sur comment garder mon image pour ne pas la recharger à chaque fois?

Merci hiroko
jeudi 15 mai 2008 à 18:18:55 | Re : Déplacement d'image BMP avec Win APi

jeffy131

> je dois créer un Snake en C avec Win API

Des dizaines d 'exemples complets ont été postés sur Usenet depuis plus de 15 ans.
Donc voir sur les ngs des win api
vendredi 16 mai 2008 à 10:29:28 | Re : Déplacement d'image BMP avec Win APi

hiroko

Merci pour cette réponse...
par contre c'est peu etre du à mon incompétence
mais si jamais t'a un lien vers les sources d'un Snake en C avec Win API je suis preneur.



Cette discussion est classée dans : wm, wparam, hdc, sens, if


Répondre à ce message

Sujets en rapport avec ce message

Affichage bitmap [ par gregory6 ] GringoBonjour, je suis débutant ss visual C++ et j'aurai besoin d'un peu d'aide. Je crée un projet MFC ds lequel je crée une fenetre. Cette fenetre cr Screenmate defectueux [ par anthraxx ] Anthrax ignisque -- Le charbon et le feu J'essaye de faire un screenmate (une petite bestiole se promenant sur les fenetres), mais n'etant pas tres ex MOUSEWHEEL [ par lud2k ] Bonjour,J'ai un légé petit problème avec mousewheel..j'arrive a détecter le sens de rotation de la roulette de la souris (120 ou -120) mais je ne sais VC++6 - SDK - Static transparent ? [ par cadeau ] Je veux mettre un static sur une texture de fond et tout ceci dans une boîte de dialogue. Quelque soit la méthode employée je n'arrive pas à rendre tr win app et les variable [ par ultima666 ] Dsl de refaire un sujet dessus mais personne ne répond a l'autre.case WM_PAINT:{// Debut de WM_PAINTint i = 2;hDc = BeginPaint(hWnd, &ps);GetClientRec CreateWindowEx [ par Galmiza ] Salut,J'ai fait une application en plein ecran en utilisant la fonction CreateWindowEx et directX. (pour l'instant j'ai desactivé les textures)L'appui pb a la fermeture de win [ par stick ] bonjours,alors voilou, je fais une appli en utilisant l'api window, mais si je ferme windows sans quitter le programme auparavant, celui ci plante et Probleme de gestion de clavier win32 [ par fourne ] bonjour,Alors voila je m explique , je fait un logiciel de mix audio tyoe mixman studion pour ceux qui connaissent ... le principe de ce soft est d at Edit Control [ par cybermatthieu ] Bonjours,Je suis en Train d'apprendre comment progrmmer en Win32 avec la Class Windows.h. Ce petit programme ne fait q'afficher des caracter mais j'ai Idle - Hook - dll [ par Manson ] Bonjour,voila, j'ai trouve le code d'une dll permettant de savoirdepuis combien de temps le PC est inactif.Mais voila, elle a un probleme, quelque foi


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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 : 1,763 sec (3)

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