begin process at 2010 09 03 03:14:49
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

API

 > PACMAN_DESKTOP

PACMAN_DESKTOP


 Information sur la source

Note :
Aucune note
Catégorie :API Classé sous :icon, animation, Pacman Niveau :Débutant Date de création :12/02/2009 Date de mise à jour :24/02/2009 19:45:52 Vu / téléchargé :1 920 / 182

Auteur : snpier wolf

Ecrire un message privé
Commentaire sur cette source (4)
Ajouter un commentaire et/ou une note

 Description

Voici un petit programme qui crée une icone sur le bureau en forme de pacman et qui cherche à manger ça pièce
je me suis inspiré de la source : http://www.cppfrance.com/codes/ANIMEZ-VOTRE-BUREAU -WIN32_16843.aspx

Source

  • #include <windows.h>
  • #define DTime 10
  • #define DTimeMouve 100
  • #define TaileIcon 32
  • HINSTANCE hInst;
  • HWND hWndDesktop;
  • HICON hIcon[5][4];
  • HICON hPiece;
  • POINT ptIcon= { 0, 0};
  • POINT ptPiece={200,200};
  • int* iTableau;
  • HDC hDC;
  • int iPoseIcon=0;
  • bool bMouve=0;
  • int iMouve=0;
  • bool bClikG=0,bTour=0;
  • HWND FindDesktopWindow(void)
  • {
  • HWND hWnd = FindWindow("Progman", "Program Manager");
  • if(GetParent(hWnd) == NULL)
  • {
  • HWND hWndEnfant = GetWindow(hWnd, GW_CHILD);
  • char szBuf[32];
  • while(hWndEnfant != NULL)
  • {
  • GetClassName(hWndEnfant, szBuf, sizeof(szBuf));
  • if(lstrcmp(szBuf, "SHELLDLL_DefView") == 0) break;
  • hWndEnfant = GetWindow(hWndEnfant, GW_HWNDNEXT);
  • }
  • if(hWndEnfant != NULL)
  • {
  • hWndEnfant = GetWindow(hWndEnfant, GW_CHILD);
  • while(hWndEnfant != NULL)
  • {
  • GetClassName(hWndEnfant, szBuf, sizeof(szBuf));
  • if(lstrcmp(szBuf, "SysListView32") == 0) break;
  • hWndEnfant = GetWindow(hWndEnfant, GW_HWNDNEXT);
  • }
  • if(hWndEnfant != NULL) return hWndEnfant;
  • }
  • }
  • return GetDesktopWindow();
  • }
  • void EffaceIcon(HWND hWnd,POINT &p)
  • {
  • RECT r;
  • r.right = (r.left = p.x) + TaileIcon;
  • r.bottom = (r.top = p.y) + TaileIcon;
  • InvalidateRect(hWnd, &r, true);
  • UpdateWindow(hWnd);
  • }
  • void DessineIcon(HDC hDC,POINT p,HICON hIcone)
  • {
  • DrawIcon(hDC, p.x, p.y, hIcone);
  • DestroyIcon(hIcone);
  • }
  • void DeplaceIcon()
  • {
  • if(ptIcon.x!=ptPiece.x)
  • {
  • if(ptIcon.x<ptPiece.x)
  • {
  • iPoseIcon=0;
  • ptIcon.x++;
  • }
  • else
  • {
  • iPoseIcon=1;
  • ptIcon.x--;
  • }
  • }
  • else
  • {
  • if(ptIcon.y!=ptPiece.y)
  • {
  • if(ptIcon.y<ptPiece.y)
  • {
  • iPoseIcon=3;
  • ptIcon.y++;
  • }
  • else
  • {
  • iPoseIcon=2;
  • ptIcon.y--;
  • }
  • }
  • }
  • if(ptIcon.y==ptPiece.y&&ptIcon.x==ptPiece.x)
  • {
  • EffaceIcon(hWndDesktop,ptPiece);
  • ptPiece.x=rand()%(GetSystemMetrics(SM_CXSCREEN) - 32);
  • ptPiece.y=rand()%(GetSystemMetrics(SM_CYSCREEN) - 64);
  • }
  • }
  • void CALLBACK TimerProc(HWND hWnd, UINT uMsg, UINT uTimerId, DWORD dwTime)
  • {
  • DeplaceIcon();
  • EffaceIcon(hWndDesktop,ptIcon);
  • if(HIBYTE(GetAsyncKeyState(VK_ESCAPE)))
  • {
  • if(hWndDesktop == GetFocus())
  • {
  • PostQuitMessage (0);
  • }
  • }
  • if(HIBYTE(GetAsyncKeyState(VK_LBUTTON)))
  • {
  • if(hWndDesktop == GetFocus())
  • {
  • bClikG=1;
  • bTour=1;
  • EffaceIcon(hWndDesktop,ptPiece);
  • GetCursorPos(&ptPiece);
  • ptPiece.x -= 16;
  • ptPiece.y -= 32;
  • }
  • }
  • if(bClikG&&!bTour)
  • {
  • bClikG=0;
  • InvalidateRect(hWndDesktop,0,TRUE);
  • }
  • bTour=0;
  • EffaceIcon(hWndDesktop,ptIcon);
  • if(hDC = GetDC(hWndDesktop))
  • {
  • DessineIcon(hDC,ptIcon ,hIcon[iPoseIcon][iMouve]);
  • DessineIcon(hDC,ptPiece,hPiece);
  • ReleaseDC(hWndDesktop, hDC);
  • }
  • }
  • void CALLBACK TimerMove(HWND hWnd, UINT uMsg, UINT uTimerId, DWORD dwTime)
  • {
  • if(!bMouve)
  • {
  • if(iMouve++==2)
  • bMouve=true;
  • }
  • else
  • {
  • if(iMouve--==0)
  • bMouve=false;
  • }
  • }
  • int WINAPI WinMain (HINSTANCE hThisInstance,
  • HINSTANCE hPrevInstance,
  • LPSTR lpszArgument,
  • int nFunsterStil)
  • {
  • MSG messages;
  • DWORD dwPid;
  • char cBuffer[7];
  • hInst = hThisInstance;
  • hWndDesktop=FindDesktopWindow();
  • dwPid = GetWindowThreadProcessId(hWndDesktop, NULL);
  • if(!AttachThreadInput(dwPid, GetCurrentThreadId(), TRUE))
  • return 0;
  • if(!(hPiece = LoadIcon(hInst, "Icon12")))
  • return 0;
  • for(int j=0;j<=3;j++)
  • {
  • for(int i = 0; i <= 2; i++)
  • {
  • wsprintf(cBuffer, "Icon%d",i+(j*3));
  • if(!(hIcon[j][i] = LoadIcon(hInst, cBuffer)))
  • return 0;
  • }
  • }
  • srand((UINT)GetTickCount());
  • if(hDC = GetDC(hWndDesktop))
  • {
  • DessineIcon(hDC,ptPiece,hPiece);
  • ReleaseDC(hWndDesktop, hDC);
  • }
  • SetTimer(NULL, 1, DTime, TimerProc);
  • SetTimer(NULL, 2, DTimeMouve, TimerMove);
  • while (GetMessage (&messages, NULL, 0, 0))
  • {
  • TranslateMessage(&messages);
  • DispatchMessage(&messages);
  • }
  • AttachThreadInput(dwPid, GetCurrentThreadId(), FALSE);
  • KillTimer(NULL, 1);
  • KillTimer(NULL, 2);
  • InvalidateRect(hWndDesktop, 0, TRUE);
  • return messages.wParam;
  • }
#include <windows.h>

#define DTime 10
#define DTimeMouve 100
#define TaileIcon 32
HINSTANCE hInst;
HWND hWndDesktop;

HICON     hIcon[5][4];
HICON     hPiece;
POINT     ptIcon= { 0,  0};
POINT     ptPiece={200,200};
int*      iTableau;
HDC       hDC;
int       iPoseIcon=0;
bool      bMouve=0;
int       iMouve=0;
bool      bClikG=0,bTour=0;
HWND FindDesktopWindow(void)
{
    HWND hWnd = FindWindow("Progman", "Program Manager");

    if(GetParent(hWnd) == NULL)
    { 
        HWND hWndEnfant = GetWindow(hWnd, GW_CHILD);
        char szBuf[32];

        while(hWndEnfant != NULL)
        {
            GetClassName(hWndEnfant, szBuf, sizeof(szBuf));
            if(lstrcmp(szBuf, "SHELLDLL_DefView") == 0) break;
            hWndEnfant = GetWindow(hWndEnfant, GW_HWNDNEXT);
        }
        if(hWndEnfant != NULL)
        {
            hWndEnfant = GetWindow(hWndEnfant, GW_CHILD);
            while(hWndEnfant != NULL)
            {
                GetClassName(hWndEnfant, szBuf, sizeof(szBuf));
                if(lstrcmp(szBuf, "SysListView32") == 0) break;
                hWndEnfant = GetWindow(hWndEnfant, GW_HWNDNEXT);
            }
            if(hWndEnfant != NULL) return hWndEnfant; 
        }
    }
    return GetDesktopWindow(); 
}
void EffaceIcon(HWND hWnd,POINT &p)
{
    RECT r;

    r.right  = (r.left = p.x) + TaileIcon;
    r.bottom = (r.top  = p.y) + TaileIcon;
    InvalidateRect(hWnd, &r, true);
    UpdateWindow(hWnd);
}
void DessineIcon(HDC hDC,POINT p,HICON hIcone)
{
    
    DrawIcon(hDC,  p.x,  p.y, hIcone);
    DestroyIcon(hIcone);
}

void DeplaceIcon()
{
    if(ptIcon.x!=ptPiece.x)
    {
        if(ptIcon.x<ptPiece.x)
        {
            iPoseIcon=0;
            ptIcon.x++;
        }
        else
        {
            iPoseIcon=1;
            ptIcon.x--;
        }
    }
    else
    {
        if(ptIcon.y!=ptPiece.y)
        {
            if(ptIcon.y<ptPiece.y)
            {
                iPoseIcon=3;
                ptIcon.y++;
            }
            else
            {
                iPoseIcon=2;
                ptIcon.y--;
            }
        }
    }
    if(ptIcon.y==ptPiece.y&&ptIcon.x==ptPiece.x)
    {
        EffaceIcon(hWndDesktop,ptPiece);
        ptPiece.x=rand()%(GetSystemMetrics(SM_CXSCREEN) - 32);
        ptPiece.y=rand()%(GetSystemMetrics(SM_CYSCREEN) - 64);
        
    }
}

void CALLBACK TimerProc(HWND hWnd, UINT uMsg, UINT uTimerId, DWORD dwTime)
{
   
   DeplaceIcon();
   EffaceIcon(hWndDesktop,ptIcon);
   if(HIBYTE(GetAsyncKeyState(VK_ESCAPE)))
    {
      if(hWndDesktop == GetFocus())
        {
             PostQuitMessage (0);
        }
    }
     
     if(HIBYTE(GetAsyncKeyState(VK_LBUTTON)))
    {
      if(hWndDesktop == GetFocus())
      {
        bClikG=1;
        bTour=1;
        EffaceIcon(hWndDesktop,ptPiece);
        GetCursorPos(&ptPiece);
        ptPiece.x -= 16;
        ptPiece.y -= 32;
        
      }
    }  
    if(bClikG&&!bTour)
    {
        bClikG=0;
        InvalidateRect(hWndDesktop,0,TRUE);
    }
    bTour=0;
     EffaceIcon(hWndDesktop,ptIcon);
    if(hDC = GetDC(hWndDesktop))
    {
      DessineIcon(hDC,ptIcon ,hIcon[iPoseIcon][iMouve]);
      DessineIcon(hDC,ptPiece,hPiece);
      ReleaseDC(hWndDesktop, hDC);
    }   
       
}
void CALLBACK TimerMove(HWND hWnd, UINT uMsg, UINT uTimerId, DWORD dwTime)
{
    if(!bMouve)
    {
        if(iMouve++==2)
        bMouve=true;
    }
    else
    {
        if(iMouve--==0)
        bMouve=false;
    }
}
    
int WINAPI WinMain (HINSTANCE hThisInstance,
                    HINSTANCE hPrevInstance,
                    LPSTR lpszArgument,
                    int nFunsterStil)

{
    MSG messages;
    DWORD dwPid;
    
    char cBuffer[7];
    hInst = hThisInstance;
    hWndDesktop=FindDesktopWindow(); 
    
    dwPid = GetWindowThreadProcessId(hWndDesktop, NULL);    
    if(!AttachThreadInput(dwPid, GetCurrentThreadId(), TRUE))
    return 0; 
    
   if(!(hPiece = LoadIcon(hInst, "Icon12")))
           return 0;
    
    for(int j=0;j<=3;j++)
    {
        for(int i = 0; i <= 2; i++)
        {
            wsprintf(cBuffer, "Icon%d",i+(j*3));
            if(!(hIcon[j][i] = LoadIcon(hInst, cBuffer)))
            return 0;
        }
    }
        
    
    srand((UINT)GetTickCount());     
    if(hDC = GetDC(hWndDesktop))
        {
            DessineIcon(hDC,ptPiece,hPiece);
            ReleaseDC(hWndDesktop, hDC);
        } 
    SetTimer(NULL, 1, DTime, TimerProc);
    SetTimer(NULL, 2, DTimeMouve, TimerMove);
    while (GetMessage (&messages, NULL, 0, 0))
    {
        TranslateMessage(&messages);
        DispatchMessage(&messages);
    }
    
    AttachThreadInput(dwPid, GetCurrentThreadId(), FALSE);    
    KillTimer(NULL, 1);
    KillTimer(NULL, 2);
    InvalidateRect(hWndDesktop, 0, TRUE);
    return messages.wParam;
}


 Conclusion

Voila j'espère qu'il vous aura plus :)

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

16 février 2009 16:55:22 :
débugage des icons
24 février 2009 19:42:10 :
Correction des Répétitions de fonction, correction du bug durectangle de sélection
24 février 2009 19:45:52 :
Correction du bugs du rectangle de selection

 Sources du même auteur

POINTEUR INTELLIGENT
Source avec Zip CHAINE RADIO/TV
Source avec Zip Source avec une capture BOOK MON CORRECTEUR EN WIN32
CORRECTEUR DE PONCTUATION
Source avec Zip RANGESOURIS

 Sources de la même categorie

Source avec Zip Source avec une capture SOUS-CLASSEMENT DE FENÊTRE D'UN AUTRE PROCESS PAR INJECTION ... par racpp
Source avec Zip Source avec une capture FENÊTRE FLOTTANTE SANS FOCUS (WIN32 API) par racpp
Source avec Zip TEMPLATES C/C++ POUR VS 2010 par BruNews
Source avec Zip Source avec une capture SERVICE WINDOWS DANS UNE DLL LANCÉ PAR SVCHOST.EXE par racpp
Source avec Zip Source avec une capture CALENDRIER (WIN64) par BruNews

 Sources en rapport avec celle ci

Source avec Zip PUCKMAN PROJET C GEII par aurelbo
Source avec Zip Source avec une capture ENCODAGE D'ANIMATIONS QT AU FORMAT GIF par opossum_farceur
Source avec Zip Source avec une capture ANIMATION MD2 AVEC DIRECTX par JeanMilost
Source avec Zip CHARGER LES DIFFERENTS FICHIER DE CALLY3D par fatehmtd
Source avec Zip Source avec une capture ANIMER L'OUVERTURE ET LA FERMETURE D'UNE FENETRE (WIN32 - DE... par gagah1

Commentaires et avis

Commentaire de uaip le 16/02/2009 00:44:07

Salut,
Remplace "touts est dans le zip" par le code-source du main.cpp, c'est le but de cette rubrique.
Sinon, le résultat est rigolo mais le rafraichissement du bureau n'est pas top (je ne sais pas si tu peux le maîtriser ou si c'est indépendant, par contre).

Commentaire de snpier wolf le 16/02/2009 16:50:36

pour quoi tous le bureau cliniotte ou juste l'ecran cher toi ?

Commentaire de uaip le 16/02/2009 16:53:43

Non, seul pacman clignote.
Mais le problème est quand on clique puis laisse glisser la souris (pour faire apparaitre le rectangle de sélection) : il ne disparait pas au relâchement de la souris, et très rapidement ça devient imposant sur le bureau ^^.

Commentaire de snpier wolf le 16/02/2009 16:58:00

ha sa oui sa me le fais aussi je vais essayer de coriger sa ^^

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Changer d'icon [ par Blade ] Bonjour,je suis un debutant et je voudrais savoir comment changer l'icone en haut de la fenetre que je cree en C++.ca fait maintenant 2h que je cherch Pb pour recuper le callback [ par Lombric ] Je comprend pas bien comment faire pour recuperer un callback (de mon icon placer en barre des taches)pour faire apparaitre un menu par exemple en VC+ [Allegro] Animation d'objets [ par GoldenEye ] La situation est simpleOn est en true color (Allegro)J'ai un décor de fond statique (BITMAP *decor)J'ai un petit objet mobile (BITMAP *objet)Le petit PACMAN [ par firesnake ] Bonjour tout le monde! Je viens de terminer mon premier jeu DOS en Borland C++ : PACMAN 1.0. C'est plutot une version de test qu'un jeu à part entière opengl et animation [ par spirit ] ben voilà, j'aimerai savoir où est-ce que je pourrais trouver un bon tutorial sur l'animation des personnages dans un programme utilisant OpenGL! icon extract code source [ par telmouni ] bs de code source pour l'extraction de l'icon des *.exe pacman en langage c ? [ par abdehue ] size=3]Je voulais savoir si qqn savait ou je pourrais trouver la source d'un pacman réalisé en langage c uniquement...Merci de répondre. :)[/size=3] animation 3ds en directx [ par heidi79 ] Je cherche à lancer une animation inclue dans un fichier .x (converti à partir d'un fichier .3ds) grâce à directx.J'ai cru voir sur différents sites q animation sur directx [ par heidi79 ] quelqu'un saurait-il comment lancer une animation contenue dans un fichier .3ds?Je sais convertir en .xJe sais afficher l'objet 3d.Apres plusieurs rec animation .x [ par heidi79 ] Je souhaite lancer une animation contenue dans un fichier .x.Je sais l'afficher.Je utiliser D3DXLoadMeshFromX()puis setMaterial() et setTexture().J'ai


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Septembre 2010
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
27282930   

Consulter la suite du CalendriCode

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

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