Fonction cadre[dev c++]

Contenu du snippet

Tout simplement une fonction a mettre dans un fichier .h qui fait un cadre en DOS où vous voulez, la grandeur que vous voulez, la couleur que vous voulez.

Source / Exemple :


#include <iostream.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.c>
#include <time.h>

int sim_menu(int posx, int posy, int longx, int longy, int couleur_cadre, int couleur_fond, int couleur_texte, int couleur_texte2, int couleur_surligne, int couleur_surligne2)
{
//posx, posy : positionx et positiony du cadre a partir du nord-ouest
//longx, longy : longueurx et longueury du cadre
  int a, b;                //a : boucle barre nord  b : indicateur pour savoir s'il s'agit de la barre du haut ou du bas
  char caractere[9] = {0, 187, 188, 201, 200, 205, 186, 24, 25};
  gotoxy(posx, posy);   //en haut à gauche du cadre
  int x = posx;
  int y = posy;
  textcolor(couleur_texte);
  for (b = 1; b < 3; b++)
  {
    if (b == 1)
      cout << caractere[3]; //caractere ASCII du coin nord-ouest du cadre
    else
      cout << caractere[4]; //caractere ASCII du coin sud-ouest du cadre

    for (a = 0; a < longx - 1; a++)  //a < longx - 1, car il faut compter les coins nord-ouest et sud-ouest
    {
      cout << caractere[5];     //caractere ASCII de la barre horizontale du cadre
    }
    if (b == 1)
    {
      cout << caractere[1];       //caractere ASCII du coin nord-est du cadre
      y += longy;        //si la barre nord a déjà ete faite, il faut passer a la barre sud
      gotoxy(x, y);
    }
    else
      cout << caractere[2];       //caractere ASCII du coin sud-est du cadre
  }
  y = posy + 1;  //Il faut revenir au nord-ouest du cadre avec un cran d'écart
  x = posx;
  for (b = 1; b < 3; b++)
  {
    for (a = 0; a < longy - 1; a++)
    {
      gotoxy (x, y);
      cout << caractere[6];     //carcatere ASCII de la barre verticale
      y++;                   //Aller une ligne en dessous
    }
    if (b == 1)
    {
      x += longx;             //Aller au debut de la 2eme barre
      y = posy + 1;           //avec un cran d'écart
    }
  }
}

Conclusion :


Merci de préciser les éventuelles optimisations a cette fonction.

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.