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

Windows Discussion :

Plusieurs ScrollsBar dans une dialog


Sujet :

Windows

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 8
    Points : 2
    Points
    2
    Par défaut Plusieurs ScrollsBar dans une dialog
    Bonjour a tous,
    Je ne suis pas un expert en C mais jaimerai faire une DialogBox avec plusieurs ScrollBars.. Jai recuperer un bout de code, qui me permet de gerere lun dentre eux. Jai essayer de copier-coller les morceaux pour obtenir la gestion du deuxieme mais rien a faire : pas moyen de differencier les evenements de lun ou de lautre.. En gros, voila mes bouts de codes :

    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
    case WM_HSCROLL:
    			GetScrollInfo((HWND)lParam, SB_CTL, &sizeInf);
    			switch (LOWORD(wParam))
    			{
    				case SB_PAGEUP:
    					sizeInf.nPos -= 2;
    					if(sizeInf.nPos < sizeInf.nMin) sizeInf.nPos = sizeInf.nMin ;
    				break;
    
    				// etc... avec les autres case..			
    }
    			sizeInf.fMask  = SIF_POS;
    			SetScrollInfo((HWND)lParam, SB_CTL, &sizeInf, TRUE);
    			temp = sizeInf.nPos * 0.1;
    			char val[50];
    			sprintf(val,"%f",temp);
    			SetDlgItemText(hDlg, IDC_Size,(LPCTSTR)val);
    			
    		
                //2nd Scroll :
    		
    			GetScrollInfo((HWND)lParam, SB_CTL, &heightInf);
    			switch (LOWORD(wParam))
    			{
    				case SB_PAGEUP:
    				heightInf.nPos -= 2;
    				if(heightInf.nPos < heightInf.nMin) heightInf.nPos = heightInf.nMin ;
    				break;
    
    				//etc avec les autres cases			
    }
    			heightInf.fMask  = SIF_POS;
    			SetScrollInfo((HWND)lParam, SB_CTL, &heightInf, TRUE);
    			temp2 = heightInf.nPos * 0.1;
    			char val2[50];
    			sprintf(val2,"%f",temp2);
    			SetDlgItemText(hDlg, IDC_HEIGHT,(LPCTSTR)val2);
    			return TRUE;
    				
    		break;
    voila, merci dessayer de dechiffrer tout ca pour moi.. Perso, je pensais que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GetScrollInfo((HWND)lParam, SB_CTL, &sizeInf);
    faisait la difference entre les deux scrolls mais apprement.. (heightInf et sizeInf sont les SCROLLINFOS de mes deux scrolls)

    Merci davance !

    Stef

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Là, tu travailles deux fois sur la même scrollbar : Celle qui vient d'être actionnée.
    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
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Ouai cest ce que jimagine, en fait, est ce quil y a un moyen pour justement separer les deux (et ensuite 3, 4 etc...) ? est ce que le 'case WM_HSCROLL:' peut etre coupe en deux ?? en fait, jai essaye pas mal de choses mais..

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Tu dois regarder le HWND fourni en paramètre: Tes deux contrôles ScrollBar ont un HWND différent.
    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
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Oui je vois bien :

    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
    static HWND hsbSize,hsbHeight;
    
    hsbSize = GetDlgItem(hDlg, IDC_SCROLL_TAILLE);
    hsbHeight = GetDlgItem(hDlg , IDC_SCROLL_HEIGHT);
    
    jessaie ensuite :
    
    case WM_HSCROLL:
           GetScrollInfo((HWND)hsbSize, SB_CTL, &sizeInf);
    switch (LOWORD(wParam))
    {
    // traitement scroll 1
    
    }
    SetScrollInfo(hsbSize, SB_CTL, &sizeInf, TRUE);
    
    GetScrollInfo((HWND)hsbHeight, SB_CTL, &heightInf);
    switch (LOWORD(wParam))
    {
    
    //Traitement SCroll 2
    
    }
    
    SetScrollInfo(hsbHeight, SB_CTL, &heightInf, TRUE);
    
    return TRUE;
    				
    break;
    Ca ne fonctionne pas : comportement bizarre et aleatoire..

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Jai essaye :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    case WM_HSCROLL:
    if (GetScrollInfo((HWND)hsbSize, SB_CTL, &sizeInf))
    {
    
    
    // ....
    
    }
    Mais il semble que une action sur lun ou sur lautre de mes deux scrolls ninflue pas sur le resultat de GetScrollINfo.. Je vois plus trop comment faire en fait la..

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Qu'esse-tu fabriques avec ton switch!
    Le paramètre lParam, aurais-tu oublié à quoi il sert?

    Quand tu reçois un message WM_HSCROLL, une seule scrollbar a été changée!

    PS: Si tes scrollbars servent à autre chose qu'un scrolling (genre: régler une quantité), il peut être avantageux de les remplacer par des sliders...
    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.

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Qu'esse-tu fabriques avec ton switch!
    Le paramètre lParam, aurais-tu oublié à quoi il sert?
    Je nai malheureusement jamais eu de cours de C, japprends tout seul,donc, non je nai pas oublie : Je nai tout simplement jamais appris..

    Quand tu reçois un message WM_HSCROLL, une seule scrollbar a été changée!
    Ok, y a til dans ce cas un moyen pour savoir lequel ??

    Si tes scrollbars servent à autre chose qu'un scrolling (genre: régler une quantité), il peut être avantageux de les remplacer par des sliders...
    Oui en effet, cela me sert a modifier plusieurs valeurs (une par Scroll.. oups pardon.. slider ) Je vais essayer comme ca..

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Ok, y a til dans ce cas un moyen pour savoir lequel ??
    lParam
    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.

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    OK !! merci de ta patience.. Desole mais il faut reconnaitre parfois que le C a ses mysteres que seuls les habitues peuvent percer rapidement..

    Anyway, Thanks Dude !

Discussions similaires

  1. donée de plusieur vecteur dans une structure ??
    Par lipczynski dans le forum C++
    Réponses: 5
    Dernier message: 13/08/2004, 08h17
  2. Eviter plusieurs OR dans une requete SELECT
    Par zoubidaman dans le forum Requêtes
    Réponses: 2
    Dernier message: 13/06/2004, 05h56
  3. [Applet]Utiliser plusieurs Applet dans une même classe
    Par BRAUKRIS dans le forum Applets
    Réponses: 5
    Dernier message: 11/06/2004, 15h27
  4. Réponses: 8
    Dernier message: 17/03/2004, 14h40
  5. Réponses: 23
    Dernier message: 16/11/2002, 19h41

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