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 :

une histoire de switch imbriqués


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut une histoire de switch imbriqués
    bonjour à tous

    petit souci avec mes switchs imbriqués :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    UINT iId=LOWORD(wParam);
    (...)
    switch(iId)
        {	
            case ID_PUSHBUTTON_1:
    		    {
    		    bitrate=GetDlgItemInt(fenetrePrincipale, (HMENU)ID_EDITBOX_1, NULL, FALSE);
    			if (bitrate==' ')
    			   bitrate=0;
    			MessageBox(fenetrePrincipale,lpMessage,"gou",MB_OK);
    			}
    		    break;		
     
            case ID_PUSHBUTTON_3:
                DestroyWindow(fenetrePrincipale);
                break;		
    		case ID_RADIOBUTTON_11:
    		    fps=25;			
    		    break;
    		case ID_RADIOBUTTON_12:
    		    fps=29.976;			
    		    break;
    		case ID_RADIOBUTTON_13:
    		    {
    		    switch(iId)
                {
    		    case ID_PUSHBUTTON_2:
    		    {
    			MessageBox(fenetrePrincipale,lpMessage,"gou",MB_OK);
                freefps=GetDlgItemText(fenetrePrincipale, (HMENU)ID_EDITBOX_2, NULL, 6);
    			fps=freefps;
    			}
                break;			
    			}
    			}
    		    break;
            case ID_CHECKBOX_1:        
                AfficheActionCheckBox(iId-ID_CHECKBOX_1,hCtl,fenetrePrincipale);			
                break;		
        }	
    }
    ici je zoom sur le case ID_RADIOBUTTON_13 : quand je clique sur le PUSHBUTTON_2 : aucun message affiché

    dans ma logique : il n'affiche la messagebox que si je clique sur RADIOBUTTON_13 et pas dans les autres cas

  2. #2
    Invité(e)
    Invité(e)
    Par défaut
    Bonjour,

    Les deux switch imbriqué portent sur la même variable iId.

    Comme ID_RADIOBUTTON_13 et ID_PUSHBUTTON_2 sont différents, on ne peut jamais entrer dans la case ID_PUSHBUTTON_2.

    EDIT :

    tu peux ajouter un booléen statique pour résoudre ton problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     static int mon_booleen = 0;
        UINT iId = LOWORD(wParam);
        switch (iId) {
        case ID_PUSHBUTTON_1:
            {
                bitrate =
                    GetDlgItemInt(fenetrePrincipale, (HMENU) ID_EDITBOX_1,
                                  NULL, FALSE);
                if (bitrate == ' ')
                    bitrate = 0;
                MessageBox(fenetrePrincipale, lpMessage, "gou", MB_OK);
            }
            break;
        case ID_PUSHBUTTON_2:
            if (mon_booleen == 1) {
                MessageBox(fenetrePrincipale, lpMessage, "gou", MB_OK);
                freefps =
                    GetDlgItemText(fenetrePrincipale, (HMENU) ID_EDITBOX_2,
                                   NULL, 6);
                fps = freefps;
            }
            break;
        case ID_PUSHBUTTON_3:
            DestroyWindow(fenetrePrincipale);
            break;
        case ID_RADIOBUTTON_11:
            mon_booleen = 0;
            fps = 25;
            break;
        case ID_RADIOBUTTON_12:
            mon_booleen = 0;
            fps = 29.976;
            break;
        case ID_RADIOBUTTON_13:
            mon_booleen = 1;
            break;
        case ID_CHECKBOX_1:
            AfficheActionCheckBox(iId - ID_CHECKBOX_1, hCtl,
                                  fenetrePrincipale);
            break;
        }

  3. #3
    Invité
    Invité(e)
    Par défaut
    ok merci à vous pour le tuyau

    bonne journée

  4. #4
    Invité
    Invité(e)
    Par défaut
    bonjour

    je n'ai jamais utilisé static int

    pouvez-vous m'expliquer à quoi cela sert ?

    et j'ai essayé le code que vous avez proposé : il compile bien sans souci

    le souci vient après : quand j'exécute l'appli il affiche : l'exe a rencontré un problème et doit fermer

  5. #5
    Membre chevronné
    Inscrit en
    Août 2004
    Messages
    556
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 556
    Par défaut
    C'est juste pour répondre à ton interrogation quand au mot clé static:

    Ce mot clé permet de déclarer une variable qui se comportera comme une variable globale (qui sera donc initialisée qu'une seule fois) mais dont la portée est limitée au scope courant.

    Exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    #include <stdlib.h>
    #include <stdio.h>
     
    int foo()
    {
    	static int i = 0;
    	return i++;
    }
     
    int main()
    {
    	unsigned int i;
    	for( i = 0; i < 10; ++i )
    	{
    		printf("%i\n", foo() );
    	}
    	return 0;
    }

  6. #6
    Invité
    Invité(e)
    Par défaut
    pardon mais je n'ai pas bien compris votre explication

    de plus, qu'est-ce le "scope courant" ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. encore une histoire de select imbriqués
    Par Dendrite dans le forum Langage SQL
    Réponses: 4
    Dernier message: 19/05/2010, 16h09
  2. Une histoire de compte à rebours (avec formulaire)
    Par Olivier14 dans le forum Général JavaScript
    Réponses: 18
    Dernier message: 04/03/2009, 13h43
  3. créer une fonction avec "si" imbriqués
    Par JUMJJUMJ dans le forum Access
    Réponses: 5
    Dernier message: 12/05/2006, 22h03
  4. Une histoire de lien...
    Par sloshy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 25/08/2005, 23h13
  5. [JAR][debutant] encore une histoire de classpath
    Par blaz dans le forum Général Java
    Réponses: 6
    Dernier message: 27/07/2005, 12h28

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