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 :

CSliderCtrl vertical - bornes inversées


Sujet :

MFC

  1. #1
    Membre averti
    Inscrit en
    Janvier 2006
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 27
    Par défaut CSliderCtrl vertical - bornes inversées
    Bonjour,

    J'ai, à l'utilisation d'un slider vertical (CSliderCtrl), une inversion de mes bornes.

    Typiquement, à l'initialisation je fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pSlideSH->SetRange(-100,100)
    Dans l'exécution, j'affiche mes valeurs et surprise:
    ma borne haute est -100 et ma borne basse est 100

    J'ai déjà vu des discussions mais pas de solutions claires. Si vous auriez une solution ou une idée...

    Merci d'avance!

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 398
    Par défaut
    Essaie en lui ajoutant le style TBS_DOWNISLEFT
    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
    Membre averti
    Inscrit en
    Janvier 2006
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 27
    Par défaut
    Oui, ça pourrait être ça !

    comment modifier le style sachant que j'ai créé le control via le wizard de VS C++ 2003 ?

  4. #4
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    salut,
    ça ne fonctionne pas ,j'ai déjà essayé ...
    le mieux c'est de te faire un fonction Setpos qui inverse le déplacement.
    MaxRange - Position.

  5. #5
    Membre averti
    Inscrit en
    Janvier 2006
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 27
    Par défaut
    OK, donc le truc ça serait soit de dériver la classe CSliderCtrl et de développer la méthode setPos soit, sur réception du message OnVScroll, utiliser le setPos du slider considéré mais de modifier la position ?

    Ou mieux ?


    (Désolé de répondre aussi tard...)

  6. #6
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    si tu veux, mais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    MySlider.SetPos(MySlider.GetRangeMax( )-x);
    
    peut aussi bien faire l'affaire , x étant la valeur souhaitée.

  7. #7
    Membre averti
    Inscrit en
    Janvier 2006
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 27
    Par défaut
    Voilà grossièrement ce que j'ai fait sur deux SliderCtrl respectivement
    IDC_SLD2_SEUILHAUT et IDC_SLD2_SEUILBAS tout deux initialisés sur une plage de [0;100]:

    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
    void CDlgParametres::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
    {
    	CDialog::OnVScroll(nSBCode, nPos, pScrollBar);
    
    	CSliderCtrl* pSlide = (CSliderCtrl*) pScrollBar;
    	CString strText("");	    
    	switch(pScrollBar->GetDlgCtrlID()) 
    	{
        case IDC_SLD2_SEUILHAUT:
    		pSlide->SetPos(pSlide->GetRangeMax( )-nPos);
    		strText.Format("%d",pSlide->GetPos());
    		SetDlgItemText(IDC_LBL2_VALSH,strText);
    		break;
        case IDC_SLD2_SEUILBAS:
    		strText.Format("%d",pSlide->GetPos());
    		SetDlgItemText(IDC_LBL2_VALSB,strText);
    		break;
        }
    }


    Dans le cas de IDC_SLD2_SEUILBAS, je n'ai rien changé et donc ça me fait comme avant (normal lol).

    Dans le cas de IDC_SLD2_SEUILHAUT, j'ai rajouté l'instruction mais ça ne fonctionne pas. Ca inverse meme le déplacement de ma ScrollBar (lorsque je "tire" vers le bas, mon curseur monte et inversement...).

    Soit il faut configuré encore un attribut (??), soit une autre erreur ?

  8. #8
    Membre averti
    Inscrit en
    Janvier 2006
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 27
    Par défaut
    Bon, j'ai une solution de remplacement, c'est pas propre mais bon:

    Mon fameux CSliderCtrl avait une variable de contrôle qui récupère donc la position actuelle du curseur du slider et je travaillais donc avec cette donnée.

    En vis à vis, j'avais un label qui informait simplement l'utilisateur de la position du curseur sur réception du fameux message "OnVScroll"


    Maintenant, la solution serait en fait de travailler sur ce label. Concrètement, ma donnée membre est toujours inversée mais je rétablis la valeur attendue au sein de mon label via le calcul présenté dans les précédents posts.

    Pour la suite de mon traitement, je récupère donc la valeur contenue dans ce label.

    C'est pas la top mais ça marche...

    Si autre solution, je suis prenneur

Discussions similaires

  1. SGPLOT / VBOX : inversion de l'ordre des valeurs sur l'axe vertical
    Par yann1981 dans le forum ODS et reporting
    Réponses: 0
    Dernier message: 27/08/2013, 13h08
  2. Graphics : Inverser le dessin selon l'axe vertical
    Par Psycho_Kwak dans le forum 2D
    Réponses: 1
    Dernier message: 26/04/2006, 11h31
  3. scrolling vertical et horizontal
    Par myriam dans le forum MFC
    Réponses: 2
    Dernier message: 24/01/2003, 17h06
  4. vertex vertices
    Par gRRosminet dans le forum OpenGL
    Réponses: 2
    Dernier message: 05/11/2002, 03h04
  5. [VB6]fonction inverse de Hex (nombres hexadécimaux)
    Par Guigui_ dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 08/10/2002, 19h31

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