Probleme pour Effacer l'ecran - C++
Résolu
Zero-One
Messages postés
303
Date d'inscription
Statut
Membre
Dernière intervention
-
Zero-One Messages postés 303 Date d'inscription Statut Membre Dernière intervention -
Zero-One Messages postés 303 Date d'inscription Statut Membre Dernière intervention -
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.
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:
- Probleme pour Effacer l'ecran - C++
- Double ecran - Guide
- Capture d'écran whatsapp - Accueil - Messagerie instantanée
- Retourner ecran pc - Guide
- Capture d'écran samsung - Guide
- Effacer les données de navigation sur android - Guide
2 réponses
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.
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.
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.
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.