Probleme pour Effacer l'ecran - C++

Résolu/Fermé
Zero-One Messages postés 303 Date d'inscription dimanche 30 novembre 2008 Statut Membre Dernière intervention 31 octobre 2023 - 7 août 2010 à 13:16
Zero-One Messages postés 303 Date d'inscription dimanche 30 novembre 2008 Statut Membre Dernière intervention 31 octobre 2023 - 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.
A voir également:

2 réponses

Zero-One Messages postés 303 Date d'inscription dimanche 30 novembre 2008 Statut Membre Dernière intervention 31 octobre 2023 9
7 août 2010 à 15:13
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.
0
Zero-One Messages postés 303 Date d'inscription dimanche 30 novembre 2008 Statut Membre Dernière intervention 31 octobre 2023 9
7 août 2010 à 16:16
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.

0