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

MFC Discussion :

affichage valeur d'un Slider


Sujet :

MFC

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 25
    Points : 7
    Points
    7
    Par défaut affichage valeur d'un Slider
    Bonjour a tous
    Je vous contacte car je souhaite afficher la valeur d'un slider dans une edit box, et pas seulement lorsque l'utilisateur relache la souris, en temps reel quoi.
    J'avais trouve un site qui expliquait comment mais pas moyen de le retrouver, jespere que ce n'est pas celui la
    quelqu'un peut il m'aider ?

  2. #2
    Membre habitué
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    189
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2004
    Messages : 189
    Points : 126
    Points
    126
    Par défaut
    il faut que tu captes le message NM_CUSTOMDRAW de ta Slider, qui permet d'avoir chaque valeur de ta slider en temps reel.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    void CTaDialog::OnNMCustomdrawSlider(NMHDR *pNMHDR, LRESULT *pResult)
    {
    	LPNMCUSTOMDRAW pNMCD = reinterpret_cast<LPNMCUSTOMDRAW>(pNMHDR);
    	// TODO : ajoutez ici le code de votre gestionnaire de notification de contrôle
    	*pResult = 0;
     
       m_TonEdit=m_TaSlider.GetPos(); l'edit box
    	UpdateData(false);	
    }
    Voila j'espere que ca peut t'aider :-)

  3. #3
    Membre éprouvé
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    Points : 1 128
    Points
    1 128
    Par défaut
    Salut

    Pour les Slider tu mappes un gestionnaire sur le message WM_HSCROLL si ton slider est horizontal et WM_VSCROLL si ton Slider est verticale

    Tu convertit le pointeur pScrollBar en CSliderCtrl en verifiant d'abord que pScrollBar->GetDlgCtrlID() retourne l'ID du slider.

    Gabrielly

  4. #4
    Membre éprouvé
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    Points : 1 128
    Points
    1 128
    Par défaut
    Salut

    Voici un exemple code pour utiliser un slider.
    Dans OnInitDialog de ta boite de dialogue ou dans OnInitialUpdate de ton formulaire tu écris ce code d'initialiation de ton slider à 5 positions dont une position représente une valeur d'angle que tu affiche sur un controle static.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    CSliderCtrl* pSliderAngle = (CSliderCtrl*) GetDlgItem(IDC_ANGLE_SLIDER1);
    	pSliderAngle->SetRange(0, 4);
    	pSliderAngle->SetPos(2);  // par défaut sur la position 2
     
    	CString strAngle;
    	double Angle = g_TabAngle[2];  // g_TabAngle est un tableau globale déclaré comme double g_TabAngle[5] = { 10.2, 23.4, 34.89, 45.7, 90.0};
    	strAngle.Format("%.1lf degrés", Angle);
    	SetDlgItemText(IDC_DEGRE_STATIC, strAngle);
    Dans le gestionnaire mappé sur WM_HSCROLL ou WM_VSCROLL ( slider horizontal ou verticale) on écrit ce code 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
    void CMyDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 
    {
    if(pScrollBar->GetDlgCtrlID() == IDC_ANGLE_SLIDER1)
    	{
    		CSliderCtrl* pSliderAngle = (CSliderCtrl*) pScrollBar;
     
    		int  Pos = pSliderAngle->GetPos();
    		double Angle = g_TabAngle[Pos];
     
    		CString strAngle;
    		strAngle.Format("%.1lf degrés", Angle);
    		SetDlgItemText(IDC_DEGRE_STATIC, strAngle);
    	}
        CDialog::OnHScroll(nSBCode, nPos, pScrollBar);
    }
    Dans l'éditeur de resource tu fixes dans la boite de propriété du slider la propriété Tick marks, Auto Ticks et dans la combobox Point tu choisis Bottom/Right et dans celle d'ORientation tu choisis horizontal.

    Comme remarque: le gestionnaire OnHScroll fonctionne pour tout controle à bar de défilement horizontal ie pour les slider, les scrollbars, les spins etc, c'est pourquoi je fais un teste sur l'ID du contrôle.
    Idem pour OnVScroll

    Gabrielly

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 25
    Points : 7
    Points
    7
    Par défaut
    merci gabrielly ca marche impeccable
    le probleme que j'avais avant est que j'utilisait updatedata pour raffraicher la valeur de l'edit box et ca me remettait le slider a zero
    mais bon avec ton code c nikel
    merci encore

Discussions similaires

  1. [Débutant] affichage valeur slider et fonction callback
    Par Guillaumelepremier dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 06/03/2015, 14h08
  2. [Tableaux] Affichage valeur d'un tableau trié
    Par kcizth dans le forum Langage
    Réponses: 1
    Dernier message: 05/01/2006, 15h47
  3. Affichage valeur de la variable lors du debug
    Par thanae dans le forum Access
    Réponses: 1
    Dernier message: 03/12/2005, 16h05
  4. Requete affichage valeurs diferentes d'un champs
    Par joxbl dans le forum Requêtes
    Réponses: 4
    Dernier message: 10/11/2005, 15h27
  5. []probleme affichage valeur dans combobox
    Par gup dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 23/09/2005, 09h22

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