IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Gérer le curseur


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 24
    Par défaut Gérer le curseur
    Salut à tous

    Alors voilà, j'aimerais réaliser un programme assez simple, mais qui m'aiderais à comprendre beaucoup de choses...

    Alors voilà, j'aimerais en faite pouvoir entrer autant de texte que je veux...
    C'est à dire, que lorsque le programme s'exécute rien ne se passe, il attend que l'utilisateur rentre du texte...

    Rien que ça se n'est pas si facile que ça, car je veux que ma variable ('chaine' par exemple), s'agrandisse en fur et à mesure....
    Es possible en C?

    De plus j'aimerais géré le touche entrer, c'est à dire que lorsque l'utilisateur appuit sur cette touche, le curseur revient à la ligne...


    J'ai déjà fait queques recherche, et j'ai trouvé comment déplacer le curseur grace à des coordonnée...

    Comment puis-je faire?avec quelle librairie?

    Merci d'avance de votre aide

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Tu demandes deux choses en fait:
    1. Pouvoir saisir des chaînes arbitrairement longues (il faut utiliser l'allocation dynamique, typiquement avec une boucle).
    2. Utiliser la console non plus comme un flux, mais comme une TUI (lecture de caractères avant l'appui sur Entrée, déplacement du curseur...).
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    104
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 104
    Par défaut
    Pour la longueur de la chaine, allocation dynamique.

    Pour pouvoir déclacer le curseur :

    Code Windows : projet Win32 Console Application
    Ne pas oublier d'inclure le header : <windows.h>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    void *hconsole; // il s'agit de notre handle, le pointeur vers la console.
    int fsuccess; // entier qui nous permettra de récupérer le résultat d'une fontion.
    COORD coord; // dans <windows.h>, structure de données
     
    hconsole=GetStdHandle(STD_OUTPUT_HANDLE); // on affecte l'adresse de la console à hconsole.
    coord.X=1; // abscisse de la console
    coord.Y=2; // ordonnée de la console.
    fsuccess=SetConsoleCursorPosition(hconsole, coord);// permet de placer le curseur dans hconsole, aux coordonnées coord.
    Pour plus d'infos, n'hésites pas

  4. #4
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Cemos: Quand tu postes un code non-portable, aies au moins l'amabilité de dire sur quelles plate-formes il marche et quelles bibliothèques il utilise.

    Ce code est pour Win32, et il utilise l'API de gestion de console de Windows. Ces fonctions sont déclarées en incluant <windows.h>.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 24
    Par défaut
    Ok, donc pour la longeur de ma chaine je vais utiliser l'allocation dynamique, typiquement avec une boucle...

    Mais pour ce qui est de la gestion du curseur je n'est pas trés bien compris...
    Mon but et de pouvoir diriger le curseur dans le texte (gauche, droite...)
    Et de pouvoir apuiyer sur la touche entrer sans que ça envoye la chaine...mais juste que le cursuer ce place au début sur ligne juste en dessous...



    Merci d'avance

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    104
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 104
    Par défaut
    Je vais essayer d'être clair.

    Tout d'abord, crée une fonction qui te retournera le code ascii des touches multidirectionnelles.

    Attention, les touches multidirectionnelles ont des codes ascii composés : 224 et 80 pour la touche UP par exemple.

    En ce qui concerne la touche enter, ta fonction devra te renvoyer 13.
    tu n'auras plus qu'à implémenter ce que je t'ai mis ci-dessus. La fonction SetConsoleCursorPosition de <windows.h> permet de placer le curseur n'importe où sur la console, en fonction de deux paramètres (l'addresse de la console et une variable COORD comprenant l'abscisse et l'odonnée du curseur sur la console)

  7. #7
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Cemos Voir le message
    Code Windows : projet Win32 Console Application
    Ne pas oublier d'inclure la bibliothèque : <windows.h>
    Inutile de sortir la peinture pour ça. Par contre, il serait plus utile d'utiliser une terminologie correcte. Un header n'est en aucun cas une bibliothèque. C'est un fichier d'interface, c'est tout (Medinoc a d'ailleurs été parfaitement clair là-dessus).

    Tu as l'air d'être pourtant un codeur C expérimenté, donc je m'étonne que tu fasses encore cette erreur basique...

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 24
    Par défaut
    Ok merci beaucoup!

    Je pense avoir compris...

    Euh un dernier truc, quel fonction serait la mieux adaptée pour ce que je veux faire (rentrer une grande quantitée de texte), je veux dire un truc comme par exemple scanf() (Je sais que cette fonction n'est pas trés recommmandée mais c'est juste à titre d'explemple...)


    Merci d'avance

  9. #9
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    104
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 104
    Par défaut
    Comme m'a déjà dit un utilisateur expérimenté : fgets() suivie d'un fclean().

    Je plaisante bien sur. En tout cas, ces deux fonctions-ci seront nécessaires.

    PS : Pourrais-tu m'indiquer quel est ton projet ? Un éditeur de texte ?

  10. #10
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par aurelien36 Voir le message
    Euh un dernier truc, quel fonction serait la mieux adaptée pour ce que je veux faire (rentrer une grande quantitée de texte)
    Pour faire une saisie de taille quelconque en standard, tu peux utiliser fgetc() ou fgets() avec malloc()/realloc()...

Discussions similaires

  1. Réponses: 0
    Dernier message: 15/02/2012, 12h25
  2. comment gérer la position du curseur de la souris
    Par colorid dans le forum Langage
    Réponses: 3
    Dernier message: 16/05/2011, 08h54
  3. Blibliothèque pour gérer deux souris et deux curseurs ?
    Par hatespam dans le forum Bibliothèques
    Réponses: 0
    Dernier message: 13/06/2010, 16h56
  4. Gérer le curseur dans un fichier XML
    Par oeilvert dans le forum Qt
    Réponses: 4
    Dernier message: 09/06/2010, 09h37
  5. [FLASH MX2004] Gérer le curseur d'un champs de saisie
    Par personne64 dans le forum Flash
    Réponses: 3
    Dernier message: 22/02/2006, 17h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo