Mode console et non CRT !!!

Résolu
yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 - 21 janv. 2007 à 13:53
yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 - 22 janv. 2007 à 11:58
Bonjour !

Je souhaiterais savoir si vous connaitriez un équivalent de cout (ou printf) et un équivalent de _getch(), mais qui soient non CRT (si cela existe) ?
Merci d'avance pour votre aide.

YOYO, @+.
"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"

3 réponses

yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 2
22 janv. 2007 à 09:49
Voilà où j'en suis.
J'ai réussi à remplacer le cout par WriteFile et ça marche exactement comme je le veux.
Par contre, j'ai encore des soucis pour remplacer _getch().
Pour l'instant, j'utilise ReadConsoleInput. Cela marche comme je le veux pour remplacer le premier _getch.
Mais pour les suivants, il semblerait que la touche tapée par l'utilisateur soit conservée en mémoire.
J'ai alors utilisé la fonction FlushConsoleInputBuffer (sans qu'elle neprovoque d'erreur) qui est sensée effacer ce qui a été tapé par l'utilisateur.
Sauf que là ça ne m'a absolument rien changé.
Voilà un bout du code en question :

while(IR.EventType != KEY_EVENT || (IR.Event.KeyEvent.wVirtualKeyCode != 0x4E && IR.Event.KeyEvent.wVirtualKeyCode != 0x4F)) ReadConsoleInput(STDIN, &IR, 1, &Lu);
if(IR.Event.KeyEvent.wVirtualKeyCode == 0x4F) ShellExecute(NULL, NULL, NomFichier, 0, 0, SW_SHOWNORMAL);

Auriez-vous une idée ?

Merci d'avance pour votre aide.

YOYO, @+.
"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"
3
yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 2
22 janv. 2007 à 11:58
Ca y est j'ai résolu mon problème !

Pour remplacer le _getch(), j'ai fait ceci :

INPUT_RECORD IR;

// Tant qu'on a pas appuyé sur la touche 'o' ou 'n', on lit...
while(IR.EventType != KEY_EVENT || !IR.Event.KeyEvent.bKeyDown || (IR.Event.KeyEvent.wVirtualKeyCode != 0x4E && IR.Event.KeyEvent.wVirtualKeyCode != 0x4F)) ReadConsoleInput(STDIN, &IR, 1, &Lu);
ZeroMemory(&IR, sizeof(IR)); // On efface tout ce que contient la structure

J'espère que ça servira à quelques uns.

YOYO, @+.
"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"
3
yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 2
21 janv. 2007 à 16:45
J'ai trouvé 2 fonctions qui semblent convenir :
WriteConsole et ReadConsole.

J'explore cette piste et j'en dirai plus.

YOYO, @+.
"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"
0
Rejoignez-nous