!!! Position du curseur !!!

Résolu
yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 - 27 janv. 2007 à 20:47
yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 - 29 janv. 2007 à 09:26
Bonjour à toutes et à tous !

Je cherche un moyen (en mode console sous Linux) de pouvoir placer le curseur là où je le voudrais.
J'ai essayé avec ce code déchappement :

void PosCur(int x, int y)
{
    printf("\033[%d;%dH", x, y);
}

mais visiblement ça ne fonctionne pas tout à fait !
En Win32 j'avais fait ceci qui fonctionne parfaitement bien :

void PosCur(int x, int y)
{
    COORD dwCursorPosition = {x, y};
    SetConsoleCursorPosition(STDOUT, dwCursorPosition);
}

Voyez-vous une erreur ou avez-vous une autre méthode à me soumettre ?

D'avance merci beaucoup pour votre aide.

YOYO, @+.
"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"
____________________________________________
[Site officiel de YoyoCut, découpe fichiers open source]

15 réponses

SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
28 janv. 2007 à 22:30
#define setcsltitle(title) printf("\033]0;%s\007", title)

C++ (@++)
3
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
27 janv. 2007 à 22:46
Tu as inversé x et y
#define gotoxy(x, y) printf("\033[%d;%dH", y, x)
Cela fonctionne très bien.

C++ (@++)
1
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
28 janv. 2007 à 01:15
Ben, j'ai trouvé mais y'a un hic. C'est que la lib ncurses prend le controle du terminal donc les fonctions comme printf ne fonctionne plus. Elles sont remplacées par des fonctions similaires mais pour ncurses: printw. Menfin, si ça t'intéresse, voici mon code test complet:

#include <ncurses.h>

#define gotoxy(x,y) move(y-1,x-1)
#define wherexy(x,y) getyx(stdscr,y,x);y++;x++
#define printf printw

int main (int argc, char *argv[])
{
    int x, y;
   
    initscr();
   
    printf("Bonjour a tous");
    gotoxy(5,2);
    printf("Allo les amis\n");
   
    wherexy(x,y);
    printf("%d %d\n", x, y);
   
    refresh();
   
    return 0;
}

C++ (@++)
1
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
28 janv. 2007 à 23:49
Tien, je t'ai fais une floppé de macros pour t'aider sous Linux:

// Paramètre pour setattrib et setattribforbuf
#define BOLD 1
#define UNDERLINE 4
#define FLASH 5
#define SURLINE 7

// Paramètre pour les fonctions demandant des couleurs
#define BLACK 0
#define RED 1
#define GREEN 2
#define YELLOW 3
#define BLUE 4
#define MAGENTA 5
#define CYAN 6
#define WHITE 7

// Change le titre de la console
#define setcsltitle(title) printf("\033]0;%s\007", title)
// Déplace le curseur de la console
#define gotoxy(x, y) printf("\033[%d;%dH", y, x)
// Éfface la console
#define clrscr() printf("\033[%d;%dH", 1, 1); printf("\033[2J")
// Change la couleur pour le texte voulu (buffer)
#define setcolorforbuf(front,back,buffer) printf("\033[3%d;4%dm%s\033[m", front, back, buffer)
// Change la couleur d'avant-plan pour tout le texte suivant
#define setfrontcolor(color) printf("\033[3%dm", color)
// Change la couleur d'arrière-plan pour tout le texte suivant
#define setbackcolor(color) printf("\033[4%dm", color)
// Change la couleur d'avant-plan et d'arrière-plan pour tout le texte suivant
#define setcolor(front,back) printf("\033[3%d;4%dm", front, back)
// Change les attributs pour les textes voulu (buffer)
#define setattribforbuf(attrib,buffer) printf("\033[%dm%s\033[m", attrib, buffer)
// Change les attributs pour tout le texte suivant
#define setattrib(attrib) printf("\033[%dm", attrib);
// Restaure les paramètre par défaut de la console (couleurs, attributs etc.)
#define defaults() printf("\033[m")

C++ (@++)
1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 2
27 janv. 2007 à 23:34
LOL ! Effectivement maintenant c'est sublime ! :p
Pendant que j'y suis, est-ce que par hasard tu connaitrais un moyen de récupérer la position courante du curseur et comment le masquer (le curseur) ?

Merci SAKingdom pour ton aide !

YOYO, @+.
"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"
____________________________________________
[Site officiel de YoyoCut, découpe fichiers open source]
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
28 janv. 2007 à 00:02
Non, aucune idée. J'ai eu une piste, la librairie ncurses mais j'arrive pas à trouver comment faire. Je te tien au courant si je trouve.

C++ (@++)
0
yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 2
28 janv. 2007 à 00:13
Ok merci !
Mais te sens pas obligé surtout.

YOYO, @+.
"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"
____________________________________________
[Site officiel de YoyoCut, découpe fichiers open source]
0
yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 2
28 janv. 2007 à 15:02
Salut SAKingdom !

c'est vrai que c'est pas cool le coup des printf.
En tous cas merci pour l'info c'est toujours bon à savoir !
Pendant que je t'ai sous la main, et que visiblement tu t'y connais mieux que moi en linux, connaitrais-tu un équivalent de ShellExecute sous linux ?
En fait ça serait pour ouvrir un fichier quelqueconque (texte, mp3, vidéo, archive,...) avec son programme associé par défaut.

Merci pour le coup de main.

YOYO, @+.
"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"
____________________________________________
[Site officiel de YoyoCut, découpe fichiers open source]
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
28 janv. 2007 à 15:56
Non je sais pas. Je cherche mais je ne trouve rien. Je me demande d'ailleur si c'est fesable sous Linux.

C++ (@++)
0
yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 2
28 janv. 2007 à 16:13
Il m'avait semblé avoir vu un wxExecute avec la librairie wxWidgets qui serait équivalent à ShellExecute.
Mais là bien sûr il faut ajouter cette librairie.
Merci d'avoir cherché en tous cas c'est sympa.

YOYO, @+.
"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"
____________________________________________
[Site officiel de YoyoCut, découpe fichiers open source]
0
yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 2
28 janv. 2007 à 21:35
Encore une chose au cas où tu connaitrais. (si j'embête à force dis le, ya aucun souci)
Est-ce possible de changer le titre de la console ? Si oui comment ?
Je cherche l'équivalent de SetConsoleTitle en fait.

YOYO, @+.
"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"
____________________________________________
[Site officiel de YoyoCut, découpe fichiers open source]
0
yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 2
28 janv. 2007 à 22:33
Pas encore testé, mais merci beaucoup !!!
Mais où trouves-tu toutes ces infos ?
Tu as des liens ?
Moi j'arrive pas à mettre la main sur qq chose qui me convienne.

YOYO, @+.
"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"
____________________________________________
[Site officiel de YoyoCut, découpe fichiers open source]
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
28 janv. 2007 à 22:38
Je recherche sur google tout simplement. Suffis d'avoir les bons mots clées.
Exemple, pour ton problème précédent, j'ai tapé:
SetConsoleTitle Linux
et 4 ou 5 résultats plus bas, j'ai trouvé (c'était dans une source de cppfrance je crois)

C++ (@++)
0
yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 2
28 janv. 2007 à 22:41
LOL !
Là je dois dire que ça me met un froid.
Je dois probablement être manchot.
Ah non je sais, j'avais oublié le parachute ! lol

YOYO, @+.
"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"
____________________________________________
0
yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 2
29 janv. 2007 à 09:26
Ah super sympa ! Et très pratique en plus !
Merci de te donner autant de mal.

YOYO, @+.
"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"
____________________________________________
[Site officiel de YoyoCut, découpe fichiers open source]
0
Rejoignez-nous