Utilisation de messageBox

Signaler
Messages postés
35
Date d'inscription
samedi 17 novembre 2007
Statut
Membre
Dernière intervention
2 novembre 2009
-
Messages postés
35
Date d'inscription
samedi 17 novembre 2007
Statut
Membre
Dernière intervention
2 novembre 2009
-
Bonjour

Mon binome à ajouter des messages box dans notre programme de jeu puissance 4 (sousvisual c++)
quand je fait debug tout ce passe bien
mais si je change la moindre ligne de code je me retrouve avec cette erreur:

1>Édition des liens en cours...
1>LINK : warning LNK4076: fichier d'état incrémentiel non valide '.\Debug/proj.ilk' ; édition de liens non incrémentielle
1>debut.obj : error LNK2019: symbole externe non résolu __imp__MessageBoxA@16 référencé dans la fonction "void __cdecl rejouer(char *,char *)" (?rejouer@@YAXPAD0@Z)
1>.\Debug/proj.exe : fatal error LNK1120: 1 externes non résolus

j'ai essayé d'intégrer la fonction qui gère la messagebox dans un des vieux programme et ça me fait la même chose
est-ce que quelqu'un peu m'aider à résoudre ce problème ?
merci

11 réponses

Messages postés
2671
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
6 février 2013
2
Et si tu nous montrais le code de la  fonction en question avec un peu plus d'explication sur la modification que tu as fait pour que programme te généres ces erreurs...

Shell
Messages postés
35
Date d'inscription
samedi 17 novembre 2007
Statut
Membre
Dernière intervention
2 novembre 2009

là c'est pour la message box
void rejouer(char* nom_box, char* phrase)
{
    int clic=MessageBox(NULL, phrase, nom_box, MB_YESNO | MB_ICONQUESTION);
    if(clic==IDYES)
    {    
        etat=0;
        g.InitJeu();
        choix=3;
        glutPostRedisplay();
    }
    else
        exit(0);
}

et là c'est la fonction où je l'appelle
void affichage()
{   
   
    /* effacement de l'image avec la couleur de fond */
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glLoadIdentity();
    glOrtho(-1.0,8.0,-1.0,8.0, -10.0, 10.0);
    menu_clic_droit();
    if(etat==0) //choix du type de partie
    {
        menu1();
    }
    else if(etat==1) //début partie joueur contre joueur
    {   
        g.AfficherJeu();
        g.AfficherChoix();
    }
    else if(etat==2) //le plateau est plein et personne n'a gagné
    {   
        glColor3f(0.0,0.0,0.0);  //noir
        bitmap_output(2.0, 6.5, "Aucun gagnant !");
        g.AfficherJeu();
    }
    else if(etat==3)   //un joueur a gagné
    {   
       g.AfficherJeu();
        if(g.Joueur==1)
        {   
            glColor3f(1.0,0.0,0.0);
            bitmap_output(2.0, 6.5, "Le joueur 1 a gagne !");
            glutSwapBuffers();
            rejouer("Gagné!", "Le joueur 1 a gagné! \nVoulez-vous rejouer?");
        }
        else
        {   
            glColor3f(1.0,0.8,0.0);
            bitmap_output(2.0, 6.5, "Le joueur 2 a gagne !");
            glutSwapBuffers();
            rejouer("Gagné!", "Le joueur 2 a gagné! \nVoulez-vous rejouer?");
        }
       // g.AfficherJeu();
    }
    else if(etat==4) //choix de rejouer ou non
    {
        glColor3f(0.0,0.0,0.0);
        bitmap_output(1.5, 3.5, "Voulez-vous rejouer? (o/n)");
    }
    else if(etat==5) //début partie joueur contre machine
    {
        g.AfficherJeu();
        g.AfficherChoix();
    }
    else if(etat==6) //début partie machine contre machine
    {
        g.AfficherJeu();
        Sleep(700);
        //on commence la boucle
        g.SetPosition(ET.MeilleurBis(g,g.Joueur));    
        if(g.EstVide(g.GetPosition())==true)
        {
                g.PlacerJeton(g.GetPosition(),g.Joueur);

                //vérifications :
                if(g.Gagner(g.Joueur)==false)
                    if(g.VerifEstPlein()==false)
                    {
                        if(g.Joueur==2)
                            g.Joueur=1;
                        else g.Joueur=2;
                    }
                    else
                    {
                        cout<<"Le plateau de jeu est plein et personne n'a gagné! ! !"<<endl;
                        etat=2;
                    }
                else
                {   
                    cout<<"Le joueur "<<g.Joueur<<" a gagné! ! !"<<endl;
                    etat=3;
                }
             }//if true
             glutPostRedisplay();
       
    }//else etat6

    //on force l'affichage
    glFlush();
    // On echange les buffers
    glutSwapBuffers();
}

en couleur tu as les changements mais est-ce que ça serait pas parce que comme un imbécile j'ai laissé un glutSwapBuffers();
à la fin ?!
merci
Messages postés
35
Date d'inscription
samedi 17 novembre 2007
Statut
Membre
Dernière intervention
2 novembre 2009

mais je comprends toujours pas pourquoi ça ne tourne pas dans un autre programme (si ma remarque est la bonne!)
Messages postés
35
Date d'inscription
samedi 17 novembre 2007
Statut
Membre
Dernière intervention
2 novembre 2009

j'ai essayé par acquis de conscience mais non c'est pas ça
si je bouge la moindre chose ou même si j'ajoute un cout<<"hello"<<endl;
au début de la fonction ça plante!!
Messages postés
1054
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
9 juillet 2013
6
Salut,

Je pense que lorsque tu compiles ton programme sans avoir fait la moindre modif, il ne le compile pas mais il se charge uniquement de l'executer.
Ben oui, pas de modif donc pas besoin de le recompiler...

Il faut que tu inclues une lib a ton projet: Demande a ton binome qu'elle lib il a ajouté

A+

Messages postés
35
Date d'inscription
samedi 17 novembre 2007
Statut
Membre
Dernière intervention
2 novembre 2009

j'ai déjà inclus la biblio windows.h
merci au moins je comprends pourquoi ça fonctionne sans mofif !

pas grave il devrait m'envoyé une nouvelle version je verrai bien si ça recommence
merci pour vos réposes
Messages postés
35
Date d'inscription
samedi 17 novembre 2007
Statut
Membre
Dernière intervention
2 novembre 2009

je n'arrive pas à trouver d'où ça vient
même avec la nouvelle version de mon binome j'ai toujours l'erreur et les biblio sont ok a priori

#include
#include<time.h>
//#include<cstdlib>
#include<windows.h>
using namespace std;

est-ce qu'il manque qq chose dans visual ?
Messages postés
1054
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
9 juillet 2013
6
Re

Il faut que tu link avec la lib USER32.LIB.
Ajoute la ligne suivante en debut de programme;
#pragma comment (lib, "user32.lib")

A+
Messages postés
35
Date d'inscription
samedi 17 novembre 2007
Statut
Membre
Dernière intervention
2 novembre 2009

ben maintenant j'ai une nouvelle erreur !
pourtant il est au bon endroit mon glut.h
1>d:\mes documents\mes fichiers reçus\debut.cpp(10) : fatal error C1083: Impossible d'ouvrir le fichier include : 'glut.h' : No such file or directory
Messages postés
1054
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
9 juillet 2013
6
Regarde dans les propriétées du programme, ton binome a peux etre changé le Path des includes.

Messages postés
35
Date d'inscription
samedi 17 novembre 2007
Statut
Membre
Dernière intervention
2 novembre 2009

merci je crois que ça y est