begin process at 2012 05 28 13:23:34
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Application


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

Application

jeudi 5 mai 2005 à 13:39:11 | Application

Arnauti

Membre Club
Bonjour, je suis nul et j'ai presque jamais fait de C/C++.
Enfin, si quelque truc sous dos.

Mais j'aimerais créé une aplication mais pas sous dos.
Alors j'ai Dev C++ qui m'a generer un 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 */
           "Windows App",       /* Title Text */
           WS_OVERLAPPEDWINDOW, /* default window */
           CW_USEDEFAULT,       /* Windows decides the position */
           CW_USEDEFAULT,       /* where the window ends up on the screen */
           544,                 /* The programs width */
           375,                 /* 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;
}

Eh voilà mais je ne sais pas du tout ou mettre le code par exemple "Bonjour" mais je ne sais pas ou il faut mettre le "printf" !

SVP aidez moi et merci a tous

A++
jeudi 5 mai 2005 à 14:04:38 | Re : Application

vecchio56

Administrateur CodeS-SourceS
Pas de printf dans ce type d'applications, que des fonction Windows! C'est dans WindowProcedure que tu pourras afficher un message, avec TextOut par exemple, mais je ne peux pas tout t'expliquer la c'est quand même assez long.
Pour commencer, tu peux lire ca:
http://brunews.free.fr/brunews/download/CP5.zip
http://brunews.free.fr/brunews/download/CP5Sources.zip

jeudi 5 mai 2005 à 14:21:46 | Re : Application

Arnauti

Membre Club
Salut, et merci a toi mais le prob, j'ai 13 ans et je ne comprend pas bien l'anglais donc ..
Mais bon, c'est pas grave je vais essayer de faire des truc sous dos encore un peu mais la, j'ai un prob !

Voici mon code (application DOS)
/********************************************************************/
// Auteur   : Kapp Arnaud
// Date     : Jeudi 21 Avril 2005 22:47
// Projet   : Jeu du pendu

/********************************************************************/
#define T_VAR 30
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>

main()
{

/* Initialisation du mot juste et de quelque variable */

    /* Les variables */
char mot [T_VAR+1] ;
int i ;
char choix [T_VAR+1];
char p_lettre ;
char d_lettre ;
int nb_lettre_c ;
char aff_nb_lettre_c [T_VAR+1] ;
   
    /* Definitions des variables */
mot = 'bonjour' ;
p_lettre = 'b' ;
d_lettre = 'r' ;
for (i = 0 ; i < strlen(mot) ; i = i + 1)
nb_lettre_c = i - 2 ;

/* Debut du programme */

printf("Bonjour, bienvenue sur le jeu du pendu \n") ;
printf("Si vous voulez jouer, taper \"play\" si vous desirez quitter l'application, taper \"quit\" :") ;
scanf("%s", choix) ;

/* Test du choix */
if(choix == 'quit')
    {    
system("PAUSE");
return EXIT_SUCCESS;
    }     
else
{
/* Le programme commence ici */

printf("Le mot a chercher contien %d lettre : %c",nb_lettre, p_lettre) ;

/* Test assez long sur le nombre de lettre cacher */
if(nb_lettre_c == 1) aff_nb_lettre_c = '*' ;   
if(nb_lettre_c == 2) aff_nb_lettre_c = '**' ;    
if(nb_lettre_c == 3) aff_nb_lettre_c = '***' ;
if(nb_lettre_c == 4) aff_nb_lettre_c = '****' ;
if(nb_lettre_c == 5) aff_nb_lettre_c = '*****' ;
if(nb_lettre_c == 6) aff_nb_lettre_c = '******' ;
if(nb_lettre_c == 7) aff_nb_lettre_c = '*******' ;
if(nb_lettre_c == 8) aff_nb_lettre_c = '********' ;
if(nb_lettre_c == 9) aff_nb_lettre_c = '*********' ;
if(nb_lettre_c == 10) aff_nb_lettre_c = '**********' ;
if(nb_lettre_c == 11) aff_nb_lettre_c = '***********' ;
if(nb_lettre_c == 12) aff_nb_lettre_c = '************' ;
if(nb_lettre_c == 13) aff_nb_lettre_c = '*************' ;
if(nb_lettre_c == 14) aff_nb_lettre_c = '**************' ;
if(nb_lettre_c == 15) aff_nb_lettre_c = '***************' ;

/* Affichage des lettres caches */
printf("%c%c", aff_nb_lettre_c, d_lettre) ;

}   


/* Quitter Le Programme */
system("PAUSE");
return EXIT_SUCCESS;
}

Voici le code et voici les erreurs :
1-imcompatible type in assignement of 'int' to 'char[31]  

2-Warning character constant too logn for its type

3- Warning, multi-charactere charaecte constant.


Voilà, j'y conprend rien donc votre aide serait très gentille.

Merci a tous A++
Sans maitrise la puissance n'est rien


jeudi 5 mai 2005 à 14:22:26 | Re : Application

Arnauti

Membre Club
Oups , je me suis tromper !!

le mail() qui est rouge doit être bleu dsl !

Sans maitrise la puissance n'est rien
jeudi 5 mai 2005 à 16:19:11 | Re : Application

vecchio56

Administrateur CodeS-SourceS
mot = 'bonjour';
Les chaines sont en double quotes, et ta copie ne fait comme ca:
strcpy(mon, "bonjour");

idem pour les aff_nb_lettre_c = '***';...
Il faut que tu revoies le fonctionnemet des chaines (une chaine est une adresse mémoire)


for (i = 0 ; i < strlen(mot) ; i = i + 1)
nb_lettre_c = i - 2 ;
Je ne vois pas ce qu'est cencée faire cette boucle, ca donnera toujours nb_lettre_c = strlen(mot) - 3
jeudi 5 mai 2005 à 19:40:21 | Re : Application

Arnauti

Membre Club
Ok, merci maintenant, plus d'erreur de compile mais, des que je lance le prog et que je rentre la première donnée : pendu_dos.exe doit fermer machin truc de windows.

Voici mon code peut être que  ca pourra être utile:

/********************************************************************/
// Auteur   : Kapp Arnaud
// Date     : Jeudi 21 Avril 2005 22:47
// Projet   : Jeu du pendu

/********************************************************************/
#define T_VAR 30
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>

main()
{

/* Initialisation du mot juste et de quelque variable */

    /* Les variables */
char mot [T_VAR+1] ;
int i ;
char choix [T_VAR+1];
char p_lettre ;
char d_lettre ;
int nb_lettre_c ;
char aff_nb_lettre_c [T_VAR+1] ;
   
    /* Definitions des variables */
strcpy(mot, "bonjour") ;
p_lettre = 'b' ;
d_lettre = 'r' ;
for (i = 0 ; i < strlen(mot) ; i = i + 1)
nb_lettre_c = i - 1 ;

/* Debut du programme */

printf("Bonjour, bienvenue sur le jeu du pendu \n") ;
printf("Si vous voulez jouer, taper \"play\" si vous desirez quitter l'application, taper \"quit\" :") ;
scanf("%s", choix) ;

/* Test du choix */
if(choix == "quit")
    {    
return EXIT_SUCCESS;
    }     
else
{
/* Le programme commence ici */

printf("%d",nb_lettre_c ) ;


/* Test assez long sur le nombre de lettre cacher */
if(nb_lettre_c == 1) strcpy(aff_nb_lettre_c, "*") ;   
if(nb_lettre_c == 2) strcpy(aff_nb_lettre_c, "**") ;   
if(nb_lettre_c == 3) strcpy(aff_nb_lettre_c, "***") ;
if(nb_lettre_c == 4) strcpy(aff_nb_lettre_c, "*****") ;
if(nb_lettre_c == 5) strcpy(aff_nb_lettre_c, "******") ;
if(nb_lettre_c == 6) strcpy(aff_nb_lettre_c, "******") ;
if(nb_lettre_c == 7) strcpy(aff_nb_lettre_c, "*******") ;
if(nb_lettre_c == 8) strcpy(aff_nb_lettre_c, "********") ;
if(nb_lettre_c == 9) strcpy(aff_nb_lettre_c, "*********") ;
if(nb_lettre_c == 10) strcpy(aff_nb_lettre_c, "**********") ;

/* Affichage des lettres caches */
printf("Le mot a chercher contient %d lettre : %s%s%s ",i, p_lettre, aff_nb_lettre_c, d_lettre) ;
}
/* Quitter Le Programme */
system("PAUSE");
return EXIT_SUCCESS;

}

Sinon, pour la boucle

for (i = 0 ; i < strlen(mot) ; i = i + 1)
nb_lettre_c = i - 1 ;


ca marche très bien et ca sort le resultat corect !

Sans maitrise la puissance n'est rien
jeudi 5 mai 2005 à 19:49:33 | Re : Application

vecchio56

Administrateur CodeS-SourceS
Ta boucle donne peut être un bon résultat, mais elle ne sert à rien, tu peux avoir directement le résultat

p_lettre est un char, utilise donc %c et non %s, idem pour d_lettre

if(nb_lettre_c == 1) strcpy(aff_nb_lettre_c, "*") ;  
if(nb_lettre_c == 2) strcpy(aff_nb_lettre_c, "**") ;  
if(nb_lettre_c == 3) strcpy(aff_nb_lettre_c, "***") ;
if(nb_lettre_c == 4) strcpy(aff_nb_lettre_c, "*****") ;
if(nb_lettre_c == 5) strcpy(aff_nb_lettre_c, "******") ;
if(nb_lettre_c == 6) strcpy(aff_nb_lettre_c, "******") ;
if(nb_lettre_c == 7) strcpy(aff_nb_lettre_c, "*******") ;
if(nb_lettre_c == 8) strcpy(aff_nb_lettre_c, "********") ;
if(nb_lettre_c == 9) strcpy(aff_nb_lettre_c, "*********") ;
if(nb_lettre_c == 10) strcpy(aff_nb_lettre_c, "**********") ;
Ce n'est pas très propre, surtout si tu peux passer de 10 à 20 par exemple. Il faut que tu fasses:

char* p = aff_nb_lettre_c;
for(int i = 0; i < nb_lettre_c; i++) *p++ = '*';
*p = 0;


jeudi 5 mai 2005 à 20:14:15 | Re : Application

Arnauti

Membre Club
Cool, c'est bon, je n'ai plus de prob enfin ....

J'amerais savoir comment on fait pour changer la coleur de text et de fond ?
(je suis sous devC++)

Merci de ton aide

A++


Sans maitrise la puissance n'est rien
jeudi 5 mai 2005 à 20:44:15 | Re : Application

vecchio56

Administrateur CodeS-SourceS
Avec Dev-C++ tu as des fonctions pour faire ca dans le fichier conio.c (ces fonctions utilisent des API de Windows).
jeudi 5 mai 2005 à 21:41:50 | Re : Application

Arnauti

Membre Club
Et sinon, y a t'il moyen de verifier si un lettre est contenu dans un mot ?

A++

1 2

Cette discussion est classée dans : windows, messages, wincl, hwnd, window


Répondre à ce message

Sujets en rapport avec ce message

Je debute: [ par phpman ] Bonjour,je debute avec devc++, quand je creer un nouveau projet il me génère le code d'une form windows:#include /* Declare Windows procedure */LRESUL tjr aide applications windows [ par chinois57 ] je suis desoler de denouveau vous enbeteer avec sa mais je ne comprend pas comment afficher un message dans une fenetre windows applicatios j'utilise C++ windows [ par notour ] bonjourj'ai réalyser un programme de cryptage de texte sous page DOS mais pour des raison pratique je souh probleme de compilation (débutant) [ par cddvdcopy ] je suis débutant, merci de m'éclairer !! ce code marche : #include #define ID_SFC 100 #define ID_RECHERCHE 200 #define ID_EXIT 300 insertion d'une phrase [ par chinois57 ] ou doige mettre une phrase du style sa va#include /*  Declare Windows procedure  */LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM); /*  couleur fond appli win32 [ par fredsor ] Salu a vous,Je créé une appli win32 sous devc++ en C.Je créé la fenetre avec CreateWindow, et j'aimerais que le fond soit blanc. Or l'appli se met dés siouplait la charite pour un pov newbie [ par seichettmorru ] je compile, ca marcheje lance ca me dit "impossible de communiquer avec la carte"j'ai une geforce ti+directx 8.vous etes mon dernier recours:#include Problème d'initailisation objet IDirect3DDevice9 [ par olivierpot2 ] Bonjour à tous,je débutes en c++ directx et j'avoue que j'ai un peu (beaucoup) de mal...Dans le code suivant je n'arrives pas à initilalisé la variabl Windows.h faire disparaitre la console [ par wxccxw ] Mon code est : #include #include #include #include #ifdef __BORLANDC__ #pragma argsused#endifLRESULT CALLBACK WindowProcedure (HWND, UIN probleme pour mon petit carré [ par mortaurat ] bonjour alors je debute en C et je veux faire mon petit carré .donc j'ai commancé par initialiser une fenetre opengl ce qui donne :#include LRESULT C


Nos sponsors


Sondage...

Comparez les prix

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 : 0,655 sec (4)

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