Partage
  • Partager sur Facebook
  • Partager sur Twitter

Comment faire sa?

a lire quans meme ^^

21 décembre 2005 à 21:12:45

Image utilisateur


Vous pouver ecrite directement le C++ pour fair sa svp :p
  • Partager sur Facebook
  • Partager sur Twitter
21 décembre 2005 à 21:15:47

Il faut utilisé la SDL pour le fenètrage, je suppose que m@theo ne veut pas vous le dire avant que vous en soyez arrivé...Alors je peut juste te conseiller d'attendre...

Mazappe
  • Partager sur Facebook
  • Partager sur Twitter
21 décembre 2005 à 21:41:42

Tu commence un projet"windows aplication" avec dev-c++ et t'aura un morceau de code faisant à peu près la même chose ^^
  • Partager sur Facebook
  • Partager sur Twitter
21 décembre 2005 à 21:56:40

et voici le beau code
#include <windows.h>

/*  Declare Windows procedure  */
LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);

/*  Make the class name into a global variable  */
char szClassName[ ] = "WindowsApp";

int WINAPI WinMain (HINSTANCE hThisInstance,
                    HINSTANCE hPrevInstance,
                    LPSTR lpszArgument,
                    int nFunsterStil)

{
    HWND hwnd;               /* This is the handle for our window */
    MSG messages;            /* Here messages to the application are saved */
    WNDCLASSEX wincl;        /* Data structure for the windowclass */

    /* The Window structure */
    wincl.hInstance = hThisInstance;
    wincl.lpszClassName = szClassName;
    wincl.lpfnWndProc = WindowProcedure;      /* This function is called by windows */
    wincl.style = CS_DBLCLKS;                 /* Catch double-clicks */
    wincl.cbSize = sizeof (WNDCLASSEX);

    /* Use default icon and mouse-pointer */
    wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
    wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
    wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
    wincl.lpszMenuName = NULL;                 /* No menu */
    wincl.cbClsExtra = 0;                      /* No extra bytes after the window class */
    wincl.cbWndExtra = 0;                      /* structure or the window instance */
    /* Use Windows's default color as the background of the window */
    wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;

    /* Register the window class, and if it fails quit the program */
    if (!RegisterClassEx (&wincl))
        return 0;

    /* The class is registered, let's create the program*/
    hwnd = CreateWindowEx (
           0,                   /* Extended possibilites for variation */
           szClassName,         /* Classname */
           "Ma fenetre bien a moi...",       /* Title Text */
           WS_OVERLAPPEDWINDOW, /* default window */
           CW_USEDEFAULT,       /* Windows decides the position */
           CW_USEDEFAULT,       /* where the window ends up on the screen */
           1024,                 /* The programs width */
           789,                 /* and height in pixels */
           HWND_DESKTOP,        /* The window is a child-window to desktop */
           NULL,                /* No menu */
           hThisInstance,       /* Program Instance handler */
           NULL                 /* No Window Creation data */
           );

    /* Make the window visible on the screen */
    ShowWindow (hwnd, nFunsterStil);

    /* Run the message loop. It will run until GetMessage() returns 0 */
    while (GetMessage (&messages, NULL, 0, 0))
    {
        /* Translate virtual-key messages into character messages */
        TranslateMessage(&messages);
        /* Send message to WindowProcedure */
        DispatchMessage(&messages);
    }

    /* The program return-value is 0 - The value that PostQuitMessage() gave */
    return messages.wParam;
}


/*  This function is called by the Windows function DispatchMessage()  */

LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)                  /* handle the messages */
    {
        case WM_DESTROY:
            PostQuitMessage (0);       /* send a WM_QUIT to the message queue */
            break;
        default:                      /* for messages that we don't deal with */
            return DefWindowProc (hwnd, message, wParam, lParam);
    }

    return 0;
}

je l'ai priut direct de DEV C++ en language C
c'est pour cela que les commentaires sont en angalis
  • Partager sur Facebook
  • Partager sur Twitter
Engineer in Training please wait fr social life ---- Vist www.charybde.be
21 décembre 2005 à 22:21:34

Si tu es sous Windows :
- Il faut inclure les fonctions de Windows :
#include <windows.h>


- Il faut crée la "forme" de la fenêtre :
    WNDCLASSEX forme;

    forme.hInstance = hThisInstance;          /* Pas obligatoire, remplaçable par 0.        */
    forme.lpszClassName = "MaFormeDeFenetre"; /* L'identifiant de la "forme" de la fenêtre. */
    forme.lpfnWndProc = ProcedureWindow;      /* Nom de la fonction qui gère la fenêtre.    */
    forme.style = CS_DBLCLKS;           
    forme.cbSize = sizeof (WNDCLASSEX);
    forme.hIcon = LoadIcon (NULL, IDI_APPLICATION);
    forme.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
    forme.hCursor = LoadCursor (NULL, IDC_ARROW);
    forme.lpszMenuName = NULL;   
    forme.cbClsExtra = 0;                   
    forme.cbWndExtra = 0;         
    forme.hbrBackground = (HBRUSH) COLOR_BACKGROUND;


- Il faut enregistrer cette "forme" de fenêtre pour pouvoir créer une fenêtre avec cette "forme" :
    if (!RegisterClassEx (&forme))
    {
        return 0;                  // Si la "forme" n'a pas été enregistré, on quitte.
    }


- Il faut créer la fenêtre en elle-même, une des parties les plus importantes :
    HWND hwnd;                  /* Identifiant de la fenêtre                    */

    hwnd = CreateWindowEx (
           0,                   /* Modifier pour varier le style de la fenêtre  */
           "MaFormeDeFenetre"/* L'identifiant de la "forme" de la fenêtre    */
           "Ma fenetre",        /* Le titre de la fenêtre                       */
           WS_OVERLAPPEDWINDOW, /* Modifier pour varier le style de la fenêtre  */
           CW_USEDEFAULT,       /* Position de la fenêtre                       */
           CW_USEDEFAULT,       /* Position de la fenêtre                       */
           CW_USEDEFAULT,       /* Largeur de la fenêtre                        */
           CW_USEDEFAULT,       /* Hauteur de la fenêtre                        */
           0,                   /* La fenêtre est posé sur le bureau (hWnd = 0) */
           NULL,                /* Indique l'existance de menu                  */
           hThisInstance,       /* Pas obligatoire, remplaçable par 0.          */
           NULL                 /* Je sais pas, il faut que je me renseigne...  */
           );


- Affichons notre jolie fenêtre... :
ShowWindow (hwnd, 1);


- Et maintenant faisons une boucle pour réceptionner les messages pour la fenêtre...
    MSG messages;

    while (GetMessage (&messages, NULL, 0, 0))
    {
        TranslateMessage(&messages);
        DispatchMessage(&messages);
    }
    return messages.wParam;


- Une fonction pour gérer les messages pour la fenêtre.
LRESULT CALLBACK ProcedureWindow (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)                 /* Si le message indique...                                     */
    {
        case WM_DESTROY:             /* ...que la fenêtre doit être fermé...                         */
            PostQuitMessage (0);     /* ...alors on ferme le programme !                             */
            break;
        default:                     /* Si c'est un autre message, alors...                          */
            return DefWindowProc (hwnd, message, wParam, lParam); /* on dit à Windows de s'en chargé */
    }

    return 0;
}

- Et il ne faut pas oublier le prototype :
LRESULT CALLBACK ProcedureWindow (HWND, UINT, WPARAM, LPARAM);


Voila comment faire un truc comme ça... :p

Et en bonus, le code en complet :
#include <cstdlib>
#include <iostream>
#include <windows.h>

LRESULT CALLBACK ProcedureWindow (HWND, UINT, WPARAM, LPARAM);

using namespace std;

int main(int argc, char *argv[])
{
    WNDCLASSEX forme;

    forme.hInstance = hThisInstance;          /* Pas obligatoire, remplaçable par 0.        */
    forme.lpszClassName = "MaFormeDeFenetre"; /* L'identifiant de la "forme" de la fenêtre. */
    forme.lpfnWndProc = ProcedureWindow;      /* Nom de la fonction qui gère la fenêtre.    */
    forme.style = CS_DBLCLKS;           
    forme.cbSize = sizeof (WNDCLASSEX);
    forme.hIcon = LoadIcon (NULL, IDI_APPLICATION);
    forme.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
    forme.hCursor = LoadCursor (NULL, IDC_ARROW);
    forme.lpszMenuName = NULL;   
    forme.cbClsExtra = 0;                   
    forme.cbWndExtra = 0;         
    forme.hbrBackground = (HBRUSH) COLOR_BACKGROUND;
   
    if (!RegisterClassEx (&forme))
    {
        return 0;                  // Si la "forme" n'a pas été enregistré, on quitte.
    }
   
    HWND hwnd;                  /* Identifiant de la fenêtre                    */

    hwnd = CreateWindowEx (
           0,                   /* Modifier pour varier le style de la fenêtre  */
           "MaFormeDeFenetre"/* L'identifiant de la "forme" de la fenêtre    */
           "Ma fenetre",        /* Le titre de la fenêtre                       */
           WS_OVERLAPPEDWINDOW, /* Modifier pour varier le style de la fenêtre  */
           CW_USEDEFAULT,       /* Position de la fenêtre                       */
           CW_USEDEFAULT,       /* Position de la fenêtre                       */
           CW_USEDEFAULT,       /* Largeur de la fenêtre                        */
           CW_USEDEFAULT,       /* Hauteur de la fenêtre                        */
           0,                   /* La fenêtre est posé sur le bureau (hWnd = 0) */
           NULL,                /* Indique l'existance de menu                  */
           hThisInstance,       /* Pas obligatoire, remplaçable par 0.          */
           NULL                 /* Je sais pas, il faut que je me renseigne...  */
           );
           
    ShowWindow (hwnd, 1);
   
    MSG messages;

    while (GetMessage (&messages, NULL, 0, 0))
    {
        TranslateMessage(&messages);
        DispatchMessage(&messages);
    }
    return messages.wParam;
}

LRESULT CALLBACK ProcedureWindow (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)                 /* Si le message indique...                                     */
    {
        case WM_DESTROY:             /* ...que la fenêtre doit être fermé...                         */
            PostQuitMessage (0);     /* ...alors on ferme le programme !                             */
            break;
        default:                     /* Si c'est un autre message, alors...                          */
            return DefWindowProc (hwnd, message, wParam, lParam); /* on dit à Windows de s'en chargé */
    }

    return 0;
}
  • Partager sur Facebook
  • Partager sur Twitter
21 décembre 2005 à 23:40:46

Je vais attendre que mettre m@théo21 nous trentenaite son savoir
  • Partager sur Facebook
  • Partager sur Twitter
22 décembre 2005 à 7:56:25

Titre non explicite, je ferme.
  • Partager sur Facebook
  • Partager sur Twitter