begin process at 2010 02 10 10:28:16
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

API

 > LIBGRAPHC - DESSIN D'UI EN MODE CONSOLE

LIBGRAPHC - DESSIN D'UI EN MODE CONSOLE


 Information sur la source

Note :
Aucune note
Catégorie :API Classé sous :Console, Couleur, UI, Interface, printf Niveau :Débutant Date de création :12/05/2009 Date de mise à jour :12/05/2009 13:59:15 Vu / téléchargé :1 401 / 95

Auteur : Nenyan

Ecrire un message privé
Commentaire sur cette source (4)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Voila, je poste ma librairie de fonction de dessin d'interface utilisateur en mode console parce que je n'ai pas encore vu de code comme celui la sur cppfrance, qu'elle est relativement aboutie, et qu'elle peut permettre à certains de coder des applications console avec une belle interface, en utilisant un API relativement léger =).

Bon, les fonctions, c'est du vu et du déjà vu, mais je poste quand même parce que le code à quelques intérêts notables, en plus de son utilité pratique.
Pour les détails sur l'utilisation des fonctions, je vous invite a regarder le code source, ou bien le fichier d'aide au format html fourni dans le ZIP (aide vraiment détaillé).

Parmi ces intérets, citons notamment un exemple d'utilisation des fonction à nombre d'arguments variables, via les va_list. Je me suis servi du code de printf, trouvé dans un stdio.c sur le net, pour pouvoir écrire ma fonction (il s'agit de xprintf, et de xrprintf).

Voila c'est tout ce que j'avais à dire sur ce code. A+ et bonne lecture.

PS : Le ZIP contient la solution Visual Studio 2008, qui contient elle même 2 solutions :
- LibGraphC : la librairie à proprement parler, il s'agit d'un projet de type Win32 Static Library générant un fichier libgraphc.lib.

- LibGraphCTest : un projet console de test de la librairie, il est linké avec la librairie, et comporte une copie du header graphc.h

Pour recompiler ce code via un autre compilateur, il faudra créer un projet static library (je pense notamment à dev-cpp, code::blocks ...) comportant les fichiers graphc.h, graphc.c, et drawc.c, compiler, et linker le binaire résultant avec un projet de test.
voila =)

Source

  • // je poste ici uniquement le code source de xprintf
  • // qui reprend le code de printf, parce que le concept
  • // est intéréssant et parce que j'ai eu du mal à le trouver
  • // sur le net.
  • int xprintf(USHORT x, USHORT y, const char* format, ...)
  • {
  • // déclaration des variables
  • va_list args;
  • int n;
  • // on positionne le curseur en x,y
  • setxy(x, y);
  • // on initialise la liste d'argument
  • va_start (args, format);
  • // on imprime la chaine
  • n = vprintf (format, args);
  • // on ferme la liste d'arguments
  • va_end (args);
  • // et on retourne n
  • return n;
  • }
  • // Et ici, je poste le code que j'ai tapé dans ma fonction main
  • // qui m'a permis d'obtenir l'interface vue sur le screen shot
  • void draw_ui()
  • {
  • // on remplit tout en bleu et on écrit en jaune
  • fill(DBLUE, YELLOW);
  • // on dessine un premier rectangle FAT
  • rect(0, 0, 40, 25, FAT, false);
  • // on crée une "banniere"
  • hline(0,4,40, FAT);
  • // on rajoute les caracteres d'angles
  • xprint(0 , 4, (char)CROSS_LEFT_FAT);
  • xprint(39, 4, (char)CROSS_RIGHT_FAT);
  • // on écrit le titre
  • setcolor(GREEN, DBLUE);
  • xprintf(15, 2, "Titre FAT");
  • // on écrit cette fois en cyan sur noir
  • setcolor(CYAN, DBLUE);
  • /// on dessine un deuxieme rectangle slim
  • rect(40, 0, 39, 25, SLIM, false);
  • // on crée un banniere
  • hline(40, 4, 39, SLIM);
  • // on rajoute les caracteres d'angles
  • xprint(40, 4, (char)CROSS_LEFT_SLIM);
  • xprint(78, 4, (char)CROSS_RIGHT_SLIM);
  • // on écrit le titre
  • setcolor(GREEN, DBLUE);
  • xprintf(55, 2, "Titre SLIM %d", 2);
  • }
// je poste ici uniquement le code source de xprintf
// qui reprend le code de printf, parce que le concept
// est intéréssant et parce que j'ai eu du mal à le trouver
// sur le net.

int xprintf(USHORT x, USHORT y, const char* format, ...)
{
    // déclaration des variables
    va_list args;
    int n;

    // on positionne le curseur en x,y
    setxy(x, y);
    // on initialise la liste d'argument
    va_start (args, format);
    // on imprime la chaine
    n = vprintf (format, args);
    // on ferme la liste d'arguments
    va_end (args);
    // et on retourne n
    return n;
}

// Et ici, je poste le code que j'ai tapé dans ma fonction main
// qui m'a permis d'obtenir l'interface vue sur le screen shot

void draw_ui()
{
    // on remplit tout en bleu et on écrit en jaune
    fill(DBLUE, YELLOW);
    // on dessine un premier rectangle FAT
    rect(0, 0, 40, 25, FAT, false);
    // on crée une "banniere"
    hline(0,4,40, FAT);
    // on rajoute les caracteres d'angles
    xprint(0 , 4, (char)CROSS_LEFT_FAT);
    xprint(39, 4, (char)CROSS_RIGHT_FAT);
    // on écrit le titre
    setcolor(GREEN, DBLUE);
    xprintf(15, 2, "Titre FAT");
    // on écrit cette fois en cyan sur noir
    setcolor(CYAN, DBLUE);
    /// on dessine un deuxieme rectangle slim
    rect(40, 0, 39, 25, SLIM, false);
    // on crée un banniere
    hline(40, 4, 39, SLIM);
    // on rajoute les caracteres d'angles
    xprint(40, 4, (char)CROSS_LEFT_SLIM);
    xprint(78, 4, (char)CROSS_RIGHT_SLIM);
    // on écrit le titre
    setcolor(GREEN, DBLUE);
    xprintf(55, 2, "Titre SLIM %d", 2);
}

 Conclusion

Une librairie que je trouve utile, qui donne des beau résultats, facile à utiliser.
Je suis ouvert à toutes critiques qui pourrait me permettre d'améliorer/optimiser ce code.

N'hésitez pas à regarder le fichier d'aide html, il est tout beau :D et il est très détaillé.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

12 mai 2009 03:28:56 :
Correction mineure
12 mai 2009 13:59:16 :
Autre correction mineure =p

 Sources de la même categorie

Source avec Zip Source avec une capture CALENDRIER (WIN64) par BruNews
Source avec Zip Source avec une capture IMPRESSION EN WIN32 API AVEC OPTIONS par racpp
Source avec Zip Source avec une capture INFOTIP SHELL EXTENSION (BULLE DE L'EXPLORATEUR WINDOWS) (WI... par racpp
Source avec Zip Source avec une capture BROUILLAGE DES FICHIERS JAVASCRIPT ET CSS(WIN32) par gagah1
Source avec Zip Source avec une capture CHANGE CURSEUR par ganjarasta

 Sources en rapport avec celle ci

ALIGNER TEXTE CONSOLE par CptPingu
ALGO RÉSOLUTION DE SUDOKU. par mamsk00
Source avec Zip MORPION EN CONSOLE par Altaris
Source avec Zip JEU D'ECHEC EN MODE CONSOLE par fratom
Source avec Zip [C] COULEUR CONSOLE par julienbj

Commentaires et avis

Commentaire de juju12 le 12/05/2009 17:57:03

Juste pour info, puisque tu dis avoir eu du mal à trouver, une petite variante pour l'utilisation d'arguments variables sans varlist :
il suffit de récupérer l'adresse mémoire du dernier argument fixe, de cette manière on peut accéder aux suivants par un pointeur.

par exemple, une fonction Sum(unsigned n,...) qui additionne n entiers :

unsigned Sum(unsigned n,...)
{
   unsigned *data=1+&n;
   unsigned i,result=0;
   for(i=0;i<n;i++) result+=data[i];
   return result;
}

et on peut appeler Sum(2,1,1) ou Sum(3,1,4,178) ou ...


c'est sans doute ce que fait varlist implicitement.

Commentaire de Nenyan le 12/05/2009 18:07:17

Effectivement, ton petit bout de code m'éclaire bien =).

Donc si j'ai tout suivi, le ... est l'équivalent d'un tableau, dont le premier élément est stocké a l'adresse suivant directement celle ou est stockée n.

Commentaire de juju12 le 12/05/2009 21:42:36

euh si on veut...
considère simplement que les arguments sont stockés l'un après l'autre dans une zone de mémoire spéciale (la pile, qui sert à contenir variables locales, arguments et adresses de retour).
Le compilateur ne fait pas de différence entre arguments fixes et arguments optionnels, lors de l'appel de la fonction il se contente de tout empiler.

petit exemple, pour appeler Sum(2,1,3) :
__asm
{
   ...
   push 3L;
   push 1L;
   push 2L;
   call dword ptr[Sum];  
   ...
}

Commentaire de le_papy le 06/07/2009 09:43:48

Merci pour ton code, très intéressant, je m'apprête à le décortiquer!

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

couleur console unix sans printf [ par FearBlue ] Bonsoir a tous !Je cherche a mettre en couleur des caracteres dans une application mode console sous systeme unix.J'utlise une fonction de bas niveau Couleur console unix sans printf [ par FearBlue ] Bonsoir a tous !Je cherche a mettre en couleur des caracteres dans une application mode console sous systeme unix.J'utlise une fonction de bas niveau Aide pour la console Win32 [ par Adeon ] Adeon Salut! je vous ecris parce que j'ai un probleme, pour faire un "jeu d'action" en win32, j'utilise un programme qui marche créer une application sans interface [ par ebooserge ] salut a tous, je souhaite cr&#233;er une appli sans interface (pas de fen&#234;tre ni de console), juste un execution en arriere plan. comment dois je couleur console [ par sy3ns ] commen fait ton pour changer par exemple tte la couleur de la console pour changer un caractere une chaine ds la console changer couleur des ecritures dans la console [ par jimmypage64 ] Bonjour !!Je suis débutant en C++ et je voudrais savoir comment faire pour changer la couleur du texte dans mon programme w32 console application svp. Visual C++ et tableau [ par stifu ] Salut tout le monde,Pour faire court, j'ai déjà touché au C++, mais jusque là je n'ai fait que des applications "console", et maintenant je voudrais f insérer un fond [ par lafolle24320 ] Bonjour, débutante en api win 32 je voudrais personnaliser mon interface. Par exemple mettre un fond d'écran à mon appli (tout bêtement une couleur) o couleur console linux [gcc] [ par badboy38 ] bonjour, je voudrais savoir s'il existe une fonction ou une classe (et si elle existe laquelle est-ce et comment l'utilise-t-on) pour changer la coul Couleur console C [ par didygwatinik ] Bonjour,Je suis sur un programme en C qui au début affiche un menu, je sais comment me déplacer avec les touches du haut et du bas mais le problème c'


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,983 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales