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

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre confirm�
    Inscrit en
    Mars 2004
    Messages
    79
    D�tails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 79
    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 �m�rite Avatar de homeostasie
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    939
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 939
    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
    Membre confirm�
    Inscrit en
    Mars 2004
    Messages
    79
    D�tails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 79
    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

  5. #5
    Membre confirm�
    Inscrit en
    Mars 2004
    Messages
    79
    D�tails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 79
    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 �m�rite Avatar de homeostasie
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    939
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 44
    Localisation : France

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

  7. #7
    Membre confirm�
    Inscrit en
    Mars 2004
    Messages
    79
    D�tails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 79
    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
    Membre confirm�
    Inscrit en
    Mars 2004
    Messages
    79
    D�tails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 79
    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
    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
    Membre confirm�
    Inscrit en
    Mars 2004
    Messages
    79
    D�tails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 79
    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
    Membre confirm�
    Inscrit en
    Mars 2004
    Messages
    79
    D�tails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 79
    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