Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Déplacement d'image BMP avec Win APi [ Windows / GUI ] (hiroko)

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é 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...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, 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
Temps d'éxécution de la page : 0,187 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.