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   -
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.
--
546F7574206E2765737420717565205A65726F20657420556E2E

2 réponses

  1. Zero-One Messages postés 303 Date d'inscription   Statut Membre Dernière intervention   9
     
    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
  2. Zero-One Messages postés 303 Date d'inscription   Statut Membre Dernière intervention   9
     
    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