Probleme pour Effacer l'ecran - C++

Résolu
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. 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
    1. 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