CACHER LA FENÊTRE DOS

yun93330 Messages postés 7 Date d'inscription lundi 15 octobre 2007 Statut Membre Dernière intervention 16 mars 2008 - 15 mars 2008 à 16:42
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 - 18 mars 2008 à 00:57
Bonjour, voila je commence a programme, mais je suis face a un problème, il y a une source sur le site mais cela ne m'a pas aide, en faite quand je lance le programme, j'ai la fenêtre avec l'image et il m'ouvre aussi la console, et j'aimerais que la console ne se lance pas, si quelqu'un peut m'aider. Merci

16 réponses

SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
15 mars 2008 à 17:29
Normalement, quand on veut faire une application GUI, on crée un projet windows. L'application générée ne créera pas de console.

Sinon, sous windows, il existe FreeConsole.

C++ (@++)<!--
0
yun93330 Messages postés 7 Date d'inscription lundi 15 octobre 2007 Statut Membre Dernière intervention 16 mars 2008
15 mars 2008 à 17:34
C'est ce que j'ai fait, et c'est ce que je comprend pas, je suis sous xp avec dev c++.
J'ai crée un projet windows applications.
J'ai essaye FreeConsole mais sa ne change rien, vous voulez mon code ?
0
gamemonde Messages postés 336 Date d'inscription samedi 9 août 2003 Statut Membre Dernière intervention 9 juillet 2011 2
15 mars 2008 à 23:13
oui montre nous ton winmain
0
yun93330 Messages postés 7 Date d'inscription lundi 15 octobre 2007 Statut Membre Dernière intervention 16 mars 2008
15 mars 2008 à 23:29
c tout ce qu'il y a de plus simple je débute

#include <stdlib.h>
#include <stdio.h>
#include <SDL/SDL.h>

int main(int argc, char *argv[])
{
SDL_Surface *ecran NULL, *imageDeFond NULL;
SDL_Rect positionFond;

positionFond.x = 0;
positionFond.y = 0;

SDL_Init(SDL_INIT_VIDEO);

/* Chargement de l'icône AVANT SDL_SetVideoMode */
SDL_WM_SetIcon(SDL_LoadBMP("sdl_icone.bmp"), NULL);

ecran = SDL_SetVideoMode(800, 600, 32, SDL_HWSURFACE);
SDL_WM_SetCaption("Chargement d'images en SDL", NULL);

imageDeFond = SDL_LoadBMP("lac_en_montagne.bmp");
SDL_BlitSurface(imageDeFond, NULL, ecran, &positionFond);

SDL_Flip(ecran);
system("pause");

SDL_FreeSurface(imageDeFond);
SDL_Quit();

return EXIT_SUCCESS;
}
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
15 mars 2008 à 23:41
C'est system("pause") qui crée la console. system("pause") attend une saisie de l'utilisateur dans une console.

Dans une application GUI, on doit traiter les messages envoyer par le système. Pour intercepter les messages, on utilise une "pompe à messages". Normalement, en Win32, il s'agit d'une boucle testant la valeur de retour de GetMessage avec, à l'interieur de la boucle, DispatchMessage et, si il y a du texte à traiter, TranslateMessage (placé avant DispatchMessage).

J'ignore cependant comment ça fonctionne en SDL. Il s'agit sans doute du même principe.
Jette un coup d'oeil ici:
http://c.developpez.com/cours/#tutoriels-sdl

C++ (@++)<!--
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
16 mars 2008 à 13:30
int main(int argc, char *argv[])
Les arguments de main() n'existent pas dans une appli GUI, le CRT ne fournit que les arguments d'un WinMain().

ciao...
BruNews, MVP VC++
0
yun93330 Messages postés 7 Date d'inscription lundi 15 octobre 2007 Statut Membre Dernière intervention 16 mars 2008
16 mars 2008 à 13:32
j'enlève les parenthèse ?
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
16 mars 2008 à 14:48
Sera pas suffisant.
Faut créer un projet windows et ne plus utiliser system("pause") (ne pourra de toute façon plus être utilisable dans un vrai projet GUI c.a.d. sans CRT).

C++ (@++)<!--
0
yun93330 Messages postés 7 Date d'inscription lundi 15 octobre 2007 Statut Membre Dernière intervention 16 mars 2008
16 mars 2008 à 16:06
j'ai déja essaye mais quand je l'enlève la fenêtre s'ouvre et se ferme tout de suite
0
gamemonde Messages postés 336 Date d'inscription samedi 9 août 2003 Statut Membre Dernière intervention 9 juillet 2011 2
16 mars 2008 à 16:30
regarde sur le lien donnée la fonction attendretouche

void attendreTouche(void)
{
SDL_Event event;

do
SDL_WaitEvent(&event);
while (event.type != SDL_QUIT && event.type != SDL_KEYDOWN);

tu l'a met à la fin de ton main pour que l'application ne ferme pas toute suite

en SDL il faut utilisé main et non winmain meme l'ors de la creation d'une fenetre gui
0
yun93330 Messages postés 7 Date d'inscription lundi 15 octobre 2007 Statut Membre Dernière intervention 16 mars 2008
16 mars 2008 à 19:25
#include <stdlib.h>
#include <stdio.h>
#include <SDL/SDL.h>

int Wmain(int argc, char *argv[])
{
SDL_Surface *ecran NULL, *imageDeFond NULL;
SDL_Rect positionFond;

positionFond.x = 0;
positionFond.y = 0;

SDL_Init(SDL_INIT_VIDEO);

/* Chargement de l'icône AVANT SDL_SetVideoMode */
SDL_WM_SetIcon(SDL_LoadBMP("sdl_icone.bmp"), NULL);

ecran = SDL_SetVideoMode(800, 600, 32, SDL_HWSURFACE);
SDL_WM_SetCaption("Chargement d'images en SDL", NULL);

imageDeFond = SDL_LoadBMP("lac_en_montagne.bmp");
SDL_BlitSurface(imageDeFond, NULL, ecran, &positionFond);

SDL_Flip(ecran);
void attendreTouche(void)
{
SDL_Event event;

do
SDL_WaitEvent(&event);
while (event.type != SDL_QUIT && event.type != SDL_KEYDOWN);
SDL_FreeSurface(imageDeFond);
SDL_Quit();

return EXIT_SUCCESS;
}


Comme cela ?
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
16 mars 2008 à 19:52
void attendreTouche(void)

{


    SDL_Event event;


    do


        SDL_WaitEvent(&event);


    while (event.type != SDL_QUIT && event.type != SDL_KEYDOWN);

}

int main(int argc, char *argv[])

{
    SDL_Surface *ecran NULL, *imageDeFond NULL;

    SDL_Rect positionFond;

    positionFond.x = 0;

    positionFond.y = 0;

    SDL_Init(SDL_INIT_VIDEO);

    /* Chargement de l'icône AVANT SDL_SetVideoMode */

    SDL_WM_SetIcon(SDL_LoadBMP("sdl_icone.bmp"), NULL);

    ecran = SDL_SetVideoMode(800, 600, 32, SDL_HWSURFACE);

    SDL_WM_SetCaption("Chargement d'images en SDL", NULL);

    imageDeFond = SDL_LoadBMP("lac_en_montagne.bmp");

    SDL_BlitSurface(imageDeFond, NULL, ecran, &positionFond);

    SDL_Flip(ecran);

   
    attendreTouche();

    SDL_FreeSurface(imageDeFond);

    SDL_Quit();

    return EXIT_SUCCESS;

}

C++ (@++)<!--
0
yun93330 Messages postés 7 Date d'inscription lundi 15 octobre 2007 Statut Membre Dernière intervention 16 mars 2008
16 mars 2008 à 20:56
Merci, j'aimerais savoir comment faire un menu, et des opération aléatoire, par exemple, je clique sur le menu et ensuite il me met des opérations ( exemple 2 x 2 ) et j'ai dix seconde pour répondre
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
16 mars 2008 à 21:07
T'es sur de ne pas sauter d'étapes là ?
À ta place, je commencerais par aller jeter un coup d'oeil aux tutoriels sur le site que je t'ai donné plus haut.

C++ (@++)<!--
0
cs_jfrancois Messages postés 482 Date d'inscription vendredi 26 août 2005 Statut Membre Dernière intervention 5 décembre 2009 2
17 mars 2008 à 15:25
Et en remplaçant le
   system("pause");
par un bon vieux
   int touche = getch();
(+ include nécessaires) ?

Jean-François
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
18 mars 2008 à 00:57
Pourquoi utiliser des fonctions réservées à la console en GUI ?
Et puis d'ailleurs, getch ou getchar demande absolument une console sinon elles ne fonctionnent tout simplement pas.

C++ (@++)<!--
0
Rejoignez-nous