Cours-Gratuit
  • Accueil
  • Blog
  • Cours informatique
home icon Cours gratuits » Cours informatique » Cours programmation » Cours langage C » Applications langage c

Gestionnaire de fenêtres avec menu code source en langage C

Gestionnaire de fenêtres avec menu code source en langage C
Participez au vote ☆☆☆☆☆★★★★★
Page suivante pour Télécharger

Gestionnaire de fenêtres avec menu code source en langage C

Cet article propose en détaille un programme en langage C de gestionnaire de fenêtres. Il permet de créer des fenêtres, les déplacer, les dimensionner, les réduire ...

Vous pourrez télécharger le fichier au format zip il contient le code source complet.

Extrait du code source :

//Unit‚s utilis‚es

#include <Types2.h>

#include <Time.h>

TMsg Msg;

char c,T;

Bool test,Quit=false;

Entier X,Y,A,M;

int i;

Entier Fois=0; Bool Compter=false,Relache=true;

unsigned long Compteur=0;

clock_t start, end;

TMsg IDLE();

/* PROGRAMME PRINCIPAL */

int main()

{     Init();

       Appuye=false;

       Fois=0;

       Compteur=0;

       do           /* Boucle infinie */

       {

            Msg=IDLE();

            if (Msg.Type==E_EXIT) break;

            TMenu &PMenu=*Menu;

            if ( Msg.Y>=20 && Selection==false &&

                                   PMenu.GestionMessage(Msg)==true   )   ;

            else

            if (NAct>0)   //il y a au moins une fenetre active

            for(i=NAct-1;i!=-1;i--)

            { TFenetre   &Fen=*Fenetres[ File[i] ];

            if ( Fen.GestionMessage(Msg)==true ) break;

            }

            }

       while ( Msg.Type!= E_EXIT && QUIT!=true );

       delete(Menu);

       asm {mov ax,02;int 0x33};//masquer le curseur de la souris

       return(0);

}

TMsg IDLE()

{

   TMsg Msg;

   Msg.Type=E_RIEN;

   signed int Dx,Dy;

   TEVENT T;

   Bool D,F;

   while (Msg.Type==E_RIEN)

   {

   /*if (Compter==false) Compteur=0;else

   if (Compteur>100000) Compter=false;*/

   /*if (Compter) start=clock();

   else start=0;*/

   if ( OnClicGauche(X,Y)==true ) { Msg.Type=E_CLIC;

                                                  if (Msg.Type==E_DOUBLECLIC) Msg.Type=E_RIEN;

                                                  Msg.X=X;

                                                  Msg.Y=Y;

                                                  if (Fois==1) {Compter=true;Compteur=0;

                                                  start=clock();}

                                                  //D=true;Compter=true;

                                                  Relache=true;

                                                  }   else

   if (Appuye==true) //if (Relache)

                                               {

                                                  Msg.Type=E_APP;

                                                  Msg.X=X; Msg.Y=Y;

                                                  if ( OnMouseMove(X,Y,Dx,Dy)==true ) {

                                                           Msg.DepX=Dx;

                                                           Msg.DepY=Dy;

                                                           Msg.Deplaced=true;

                                                           }

                                                  else   Msg.Deplaced=false;

                                                    if (Relache) { Fois++;

                                                    if (Fois==2) {end=clock(); F=true;

                                                    float Attente= (end - start)/CLK_TCK;

                                                    if (Attente< 0.2 ) Msg.Type=E_DOUBLECLIC;

                                                    Compter=false;

                                                    Fois=0;

                                                    }

                                                    }else if (Fois!=1) Fois=0;

                                                    /*if ( Relache ) {

                                                    Fois++;

                                                    //cprintf("appuye");

                                                    if (Fois==2)   {

                                                      if ( Compteur<30000) {

                                                      if (Compter)

                                                           Msg.Type=E_DOUBLECLIC; /*else

                                                           Erreur("Plus de comptage");

                                                           Compter=false;

                                                                            }

                                                    else Erreur("Compteur>30000");

                                                           Fois=0;   }

                                                  else if (Fois!=1) Fois=0;

                                               } }*/

                                               Relache=false;

                                   }   else

       //Doit ˆtre apr‚s ClicGauche et Appuye

   if ( OnMouseMove(X,Y,Dx,Dy)==true ) { Msg.Type=E_MOVE;

                                                           Msg.X=X; Msg.DepX=Dx;

                                                           Msg.Y=Y; Msg.DepY=Dy;

                                                           //ShowMessage(Msg);

                                                    }else

   if ( kbhit() ) { Msg.Type=E_TOUCHE;

                             Msg.Touche=getch();

                             if (Msg.Touche==27) Msg.Type=E_EXIT;

                             }

     Compteur++;

     }

   return Msg;

}

void CreerFenetre()

{

   Entier i=0;

   Bool Trouve=false;

            //chercher une place vide dans la liste de pointeurs

   while ( i<MAX && Trouve==false )

            if (Fenetres[i]==nil) Trouve=true; else i++;

   if (Trouve) { TFenetre* Fenetre=new TFenetre;

                        Fenetres[i]=Fenetre;

                        (*Fenetre).index=i;

                        (*Menu).ChangeMenu(indexAct+1,WHITE);

                        Entier num =i+1;

                        (*Menu).AddMenu(num);

                        MessageInterface(i,M_Act);

                   }

}

void MessageInterface(Entier i,TMessage DMessage)

{

TFenetre &Fenetre=*Fenetres[i];

if (Fenetres[i]!=nil)

switch(DMessage)

{

   case M_Act:   {Fenetre.Activer();     break;}

   case M_Hide: {Fenetre.Cacher();

                        if (NAct==0) _setcursortype(_NOCURSOR);

                        break;};

   case M_NotAct:{if (NAct>0) Fenetre.Desactiver();   break;}

   case M_Paint: {Fenetre.Dessiner();     break;};

   case M_Close:{   delete Fenetres[i]; Fenetres[i]=nil; break;};

   }

   else Erreur("Erreur de fenetre");

}

void ToutDessiner()

{

//dessiner toutes les fenetres visibles sauf celle Active

for (Entier i=0;i<NAct-1;i++) MessageInterface(File[i],M_Paint);

};

Decouvrir ces documents

  • Code source mini projet de compilateur basic en langage C

    Code source mini projet de compilateur basic en langage C

  • Email application JAVA code source

    Email application JAVA code source

  • Code source en Java sur la gestion étudiant

    Code source en Java sur la gestion étudiant

  • Mini projet en langage C pour calculateur de points de championnat en tennis

    Mini projet en langage C pour calculateur de points de championnat en tennis

  • Cours ActionScript : Programmer un menu déroulant

    Cours ActionScript : Programmer un menu déroulant

  • Débuter avec la programmation web formation

    Débuter avec la programmation web formation

  • Cours Production de code Assembleur

    Cours Production de code Assembleur

  • Modèle de menu pour anniversaire sur Word

    Modèle de menu pour anniversaire sur Word

Articles connexes

  • Tutoriel Python : Notions de base
  • Gestionnaire de paie débutant : formation et  lettre de motivation
  • Gestionnaire immobilier : Ce qu’il faut savoir…
  • Exercice PHP : Gestionnaire d'annuaire téléphonique.
  • Comment rédiger une lettre de motivation pour une formation de gestionnaire de paie ?
  • Tutoriel publipostage avec Word et Excel
  • Exercice création des requêtes SQL
  • Peut-on habiter une maison avec un compteur de chantier ?
  • Contactez-nous
  • A propos de nous
  • On recrute
  • Rechercher dans le site
  • Politique de confidentialité
  • Droit d'auteur/Copyright
  • Conditions générales d'utilisation
  • Plan du site
  • Accueil
  • Blog
  • Finance et compta.
  • Formations Pro.
  • Logiciels & Apps
  • Organisation
  • Cours informatique
  • Aide à la rédaction
  • Etudes et Metiers
  • Science et Tech
  • Titans de la Tech
id 11354 02