Création
d'entreprise
Posez votre question Signaler

Probleme pour Effacer l'ecran - C++ [Résolu]

Zero-One 148Messages postés 30 novembre 2008Date d'inscription 24 mai 2012Dernière intervention - Dernière réponse le 7 août 2010 à 16:16
Bonjour,
Je programme en C++ avec CodeBlocks 8.02.
Je cherchais a effacer l'écran (console DOS) d'une façon portable, au début j'utilisais System("cls"); qui n'est pas très portable, alors en cherchant j'ai trouvé ceci :
--------------------Code--------------------------
#ifdef _Windows
#include <windows.h>
#elif defined(linux)
#include <ncurses.h>
#define UTILISE_NCURSES
#elif defined(__MSDOS__)
#include <dos.h>
#endif
void EffaceEcranTxt(void)
{
#if defined(UTILISE_NCURSES)
clear();
move (0,0);
#elif defined(_Windows)
CONSOLE_SCREEN_BUFFER_INFO Info;
COORD Debut;
DWORD NbrOctetEcrit;
Debut.X = 0;
Debut.Y = 0;
GetConsoleScreenBufferInfo (HdlConsole, &Info);
FillConsoleOutputCharacter (HdlConsole, ' ', Info.dwSize.X*Info.dwSize.Y, Debut, &NbrOctetEcrit);
SetConsoleCursorPosition (HdlConsole,Debut);
#elif defined(__MSDOS__)
union REGS inregs, outregs;
struct SREGS segregs;
inregs.h.ah = 0x00;
inregs.h.ah = 0x03;
int86x(0x10, &inregs, &outregs, &segregs);
#endif
}

------------------------------------------------------
Alors quand j'utilise cette fonction rien ne ce passe ni erreur ni effacement d'écran, rien.
quelqu'un peut me dire pourquoi ?
Merci d'avance.
Lire la suite 

Probleme pour Effacer l'ecran - C++ »

2 réponses
Réponse
+0
moins plus
C'est bon j'ai changer #ifdef _Windows par #ifdef WIN32 pour la première ligne.
Et même pour la 15emme #elif defined(WIN32).

en exécutant, une erreur est détecté, HdlConsole n'est pas déclaré.
comment y remédier?
Merci.
Ajouter un commentaire
Réponse
+0
moins plus
Voilà enfin, j'ai régler le probléme.
a la place de HdlConsole j'ai mis GetStdHandle(STD_OUTPUT_HANDLE) (je ne sais pas pour quoi mais j'ai juste trouver ça dans un bout de code).
J'espère que sa va aider de nombreuse personne.

bon voilà le code final pour effacer l'écran :

--------------CODE--------------
#ifdef WIN32
#include <windows.h>
#elif defined(linux)
#include <ncurses.h>
#define UTILISE_NCURSES
#elif defined(__MSDOS__)
#include <dos.h>
#endif

void EffaceEcranTxt(void)
{
#if defined(UTILISE_NCURSES)
clear();
move (0,0);
#elif defined(WIN32)

CONSOLE_SCREEN_BUFFER_INFO Info;
COORD Debut;
DWORD NbrOctetEcrit;
Debut.X = 0;
Debut.Y = 0;

GetConsoleScreenBufferInfo (GetStdHandle(STD_OUTPUT_HANDLE), &Info);

FillConsoleOutputCharacter (GetStdHandle(STD_OUTPUT_HANDLE), ' ', Info.dwSize.X*Info.dwSize.Y, Debut, &NbrOctetEcrit);

SetConsoleCursorPosition (GetStdHandle(STD_OUTPUT_HANDLE),Debut);

#elif defined(__MSDOS__)
union REGS inregs, outregs;
struct SREGS segregs;
inregs.h.ah = 0x00;
inregs.h.ah = 0x03;
int86x(0x10, &inregs, &outregs, &segregs);
#endif
}

//Ce qui suit c'est pour le test.

#include <iostream>
#include <conio.h>

int main()
{
int i=0;
for (i=0;i<=10;i++)
printf("text\n");
printf("Appuyez sur une touche pour effacer l'écran...\n\n");
getch();
EffaceEcranTxt();

return 0;
}

-----------------------------------------------------------------

Merci.
Bon Code a Tous.

Ajouter un commentaire
Ce document intitulé « probleme pour Effacer l'ecran - C++ » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?