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 :

Comment faire fonctionner une scroll bar ???


Sujet :

MFC

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2004
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 79
    Points : 38
    Points
    38
    Par défaut [Resolu]Comment faire fonctionner une scroll bar ???
    Bonjour, j'ai plusieurs questions a vous soumettre ...

    Tout d'abord, cela fait plusieurs jour que je cherche a faire une "simple" CDialog avec une scroll bar.

    Mais je voudrais savoir quel est le moyen le plus simple d'ariver a mes fins sachant que j'utilise les MFC ?

    Merci d'avance a ceux qui m'aideront,
    et bonne journee aux autres ...


  2. #2
    Membre éclairé Avatar de homeostasie
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 939
    Points : 862
    Points
    862
    Par défaut
    Salut,

    Tu peux créer un projet de type MFC, choisir comme type d'application Dialog Based qui génère automatiquement une BDD.
    Dans celle ci, tu insères un edit box, puis tu vas dans les propriétés, tu sélectionne multiline et la scroll bar que tu désires.

    Sinon, tu peux choisir single ou multi documents comme type d'application mais par contre tu dois créer une classe dérivant de CDialog pour pouvoir utiliser une BDD.
    Puis pour appeller ta BDD dans ton appli, t'instancie un objet de ta classe et utilise la fonction DoModal().
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CTaClasseDlg dlg;
    dlg.DoModal();
    ca devrait t'aider pour démarrer.

    ciaoo

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mars 2004
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 79
    Points : 38
    Points
    38
    Par défaut
    Une BDD ??? une base de donnees ??? pour faire defiler une fentre ??? on a pas trouver plus compliquer ?

    non excuses moi mais j'ai l'impression que je comprendrai JAMAIS comment marche ces p..... de Scroll bar...

    je viens d'eplucher tout ce ki est possible sur les scroll bar, mais j'ai l'impression que c tellement simple que personne n'en parle...

    enfin bon, merci pour ta reponse, mais une BDD je sais pas ce que c'est ???
    :

  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
    Points : 17 323
    Points
    17 323

  5. #5
    Nouveau membre du Club
    Inscrit en
    Mars 2004
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 79
    Points : 38
    Points
    38
    Par défaut
    J'ai pas encore lu mais la j'allais me jeter par la fenetre....(bon je suis au rez de chausse..)

    merci ...

  6. #6
    Membre éclairé Avatar de homeostasie
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 939
    Points : 862
    Points
    862
    Par défaut
    BDD pour Boite De Dialogue, désolé je n'ai pas été très explicite, ca pouvait porté à confusion.

  7. #7
    Nouveau membre du Club
    Inscrit en
    Mars 2004
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 79
    Points : 38
    Points
    38
    Par défaut
    Bon finalement je me suis jeter par la fenetre, mais comme il faisait un peu trop chaud dehors je suis rentrer...

    bref, je suis completement perdu la...

    Resume :
    - je veux faire une CDialog avec une CScrollBar
    - J'utilise l'interface graphique de VC++ pour faire apparaitre la scrolbar sur ma CDialog (dans VC++)
    - Quand je lance l'appli je la vois pas (1er probleme)
    - j'ai essayer de faire des tutoriels permettant de recupere les valeur de la position du curseur... c'est bien mais apres ? Pour faire bouger le contenu ?? Utilisation de ScrollWindowEx()...
    - Et la catastrophe rien ne marche...

    Consequence je me demande, en voyant la pauvretee d'information a ce sujet s'il ne serait pas interessant de faire un recapitulatif, explicite, clair et accessible a tous

    Si je trouve comment ca marche je veux bien m'en occuper mais pour le moment je deambule dans le vague a ce sujet...

    donc si klkun peux me donnner de plus ample information sur comment utiliser l'interface de vc++ par exemple ....

    ben je suis preneur a bon entendeur salut et merci d'avance


  8. #8
    Nouveau membre du Club
    Inscrit en
    Mars 2004
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 79
    Points : 38
    Points
    38
    Par défaut
    Voici un bout de code qui ne fonctionne pas, masi je ne comprend aps pourquoi...
    (enfin si je sais... parceque j'ai encroe du oublier quelques chose...)

    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
     
     
    void CScrollTestDlg::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 
    {
       int CurPos = m_ScrollBar.GetScrollPos();
     
       switch(nSBCode)
       {
    //...
           case SB_LINEUP:      // Scroll up
              if (CurPos > 0)
    	CurPos--;
              ::ScrollWindowEx( m_hWnd, 0, CurPos, NULL, NULL, NULL, NULL, 0); 
               CWnd::UpdateWindow();
               break;
     
          case SB_LINEDOWN:   // Scroll down.
             if (CurPos < 10)
    	CurPos++;
              ::ScrollWindowEx( m_hWnd, 0, (0 - CurPos), NULL, NULL, NULL, NULL, 0); 
              CWnd::UpdateWindow();
              break;
     
    //...
       }
       m_ScrollBar.SetScrollPos(CurPos);
       CDialog::OnVScroll(nSBCode, nPos, pScrollBar);
    }
    en gros je switch le message de ma Vertcale Scroll

    puis pour un clic sur la fleche du bas je deplace (avec ScrollWindowEx) le contenu de ma fentre...

    mais dans mon cas RIEN ne se passe...

    pkoi comment ???

    merki d'avance

  9. #9
    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
    Points : 17 323
    Points
    17 323
    Par défaut
    bon deja tu y passe dans ton switch ?
    apres tu te complique la vie pour le scroll utilise la fonction de la classe CWnd:
    scroll vers le haut:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    CRect rect;
    this->GetClientRect(&rect);
    rect.top+=cy;
    this->ScrollWindow(0,-cy,&rect);
    ou cy represente le pas de scroll en pixel..

  10. #10
    Nouveau membre du Club
    Inscrit en
    Mars 2004
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 79
    Points : 38
    Points
    38
    Par défaut
    merci pour ce conseil... mais j'avais deja essayer et.... ben rien rien rien toujours....

    par contre voici le code de ma methode onVScroll :

    il en resulte le deplacement de ma fenetre... masi de totue la fentere ! c'est a dire scrollBar inclut !!! En fait j'utilise l'option Vertical scroll bar de CDialog (case a cocher dans l'interface utilisateur)
    et du coup ca reagit mal...

    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
     
       CRect rect;
     
       SCROLLINFO si = {	sizeof(SCROLLINFO), 
    						SIF_PAGE|SIF_POS|SIF_RANGE|SIF_TRACKPOS, 
    	0, 0, 0, 0, 	0};
       GetScrollInfo(SB_VERT, &si);
     
     
       switch(nSBCode)
       {
    //...
    	case SB_LINEUP:
    		if(si.nPos > si.nMin)
    			si.nPos -= 8;
    		if(si.nPos < si.nMin)
    			si.nPos = si.nMin;
    		break;
     
    	case SB_LINEDOWN:
    		if(si.nPos < si.nMax)
    			si.nPos += 8;
    		si.nPos = min(si.nPos, si.nMax - (int)si.nPage);
     
    		break;
    //...
       }
     
       SetScrollInfo(SB_VERT, &si);
       //
       // Move the client page
       //
       if(this)
       {
           CRect	 rc;
           m_y = -si.nPos;
           this->GetWindowRect(&rc);
           this->SetWindowPos(NULL, m_x, m_y, rc.Width(), rc.Height(), 
    		SWP_NOZORDER);
           ::UpdateWindow(m_hWnd); //je c aps si ca me sert a grand chose !?
       }
    voila donc ce code provient d'un site internet sinon je me demande comment j'aurai pu le pondre, mais il marche enfin, non pas tout a fait, il me faut trouver une solution pour ne pas faire bouger TOUTE la fentetre mais uniquement le contenu....

    Bon je m'y remet et je fais un topo quand j'ai fini...

  11. #11
    Nouveau membre du Club
    Inscrit en
    Mars 2004
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 79
    Points : 38
    Points
    38
    Par défaut
    Bon ca y est ! grace a l'aide de quelques autres developpeur je suis parvenu a faire fonctionner cette maudite Scroll bar ...

    Bon je vais etre bref pour celles et ceux qui galere avec ca ...

    Pour les utilisateurs de Visual C++ vous pouvez essayer ce lien qui est tres bon qui m'a ete donner par farscape (merci )

    http://www.codeguru.com/Cpp/W-D/disl...cle.php/c1859/

    Pour les utilisateurs comme moi de eVC++ (pour pocket PC) le lien suivant est tres bon mais merite une petite reflexion :

    http://www.pocketpcdn.com/articles/scroll_dialog.html

    En effet il est necessaire de telecharger les source puis de reconstruire un nouveau projet vierge et de reecrire (copier coller) les classes...
    Le projet de base est assez complexe et necessite une configuration aprticulier de eVC++ que je n'ai pas trouver....

    Cette partie du post est certainement un peu hors sujet, masi pas mal de gens developpant sous eVC++ utilise les forums car la programmation sest assez proche... donc j'espere que mon post va pas se faire virer (merci messsieurs les moderateurs )

    sur ceux bon courage .... baissez pas les bras !!! tout est possible !!!


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

Discussions similaires

  1. [WD11] Comment faire fonctionner une Jauge
    Par GSOFT-DOUZ dans le forum WinDev
    Réponses: 1
    Dernier message: 24/01/2010, 09h46
  2. Comment faire fonctionner une macro à une heure precise
    Par dreloman dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 29/06/2008, 00h46
  3. Comment faire fonctionner une requête avec NOT EXISTS
    Par arnaudperfect dans le forum Requêtes
    Réponses: 2
    Dernier message: 13/11/2007, 10h39
  4. Comment faire fonctionner une GUI form?
    Par DragonLebna dans le forum Interfaces Graphiques en Java
    Réponses: 4
    Dernier message: 22/04/2007, 13h58
  5. Comment faire fonctionner une fenêtre Login
    Par Cazaux-Moutou-Philippe dans le forum WinDev
    Réponses: 3
    Dernier message: 29/10/2006, 12h00

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