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 :

[MFC][CScrollBar] utilisation d'un CScrollBar


Sujet :

MFC

  1. #1
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 288
    Billets dans le blog
    2
    Par défaut [MFC][CScrollBar] utilisation d'un CScrollBar
    Etrange contrôle que ce CScrollBar n'est-il pas?

    Tout d'abord, il ne comporte qu'un seul événement de contrôle... alors que les autres en ont beaucoup plus (un simple bouton en comporte 6).
    Ensuite, son comportement est ... comment dire ... mystérieux. Le seul événement de contrôle s'appelle NM_CHANGETHEME, qui va être récupéré par la méthode OnNMThemeChangedScrollbar(). Il n'y a aucun signe de cet événement dans la msdn.
    Enfin, quand je crée la méthode (citée ci-dessus) automatiquement en double-cliquant sur mon contrôle, j'obtiens:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    void CTestGrid1Dlg::OnNMThemeChangedScrollbar1(NMHDR *pNMHDR, LRESULT *pResult)
    {
    }
    déclarée automatiquement dans DoDataExchange() par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DDX_Control(pDX, IDC_SCROLLBAR1, m_vMainScrollBall);
    et par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ON_NOTIFY(NM_THEMECHANGED, IDC_SCROLLBAR1, OnNMThemeChangedScrollbar1)
    dans BEGIN_MESSAGE_MAP

    maintenant, je compile pour jeter un coup d'oeil sur les arguments qui me sont envoyés à l'appel de cette méthode, et, Ô surprise, je me fais jeter par:
    error C2065: 'NM_THEMECHANGED'*: identificateur non déclaré

    J'ai pourtant vérifié, ce satané 'NM_THEMECHANGED' est pourtant bien déclaré dans le fichier commctrl.h.

    Bonbonbon, ok d'accord, alors j'ajoute
    je compile... et là!!! La même erreur!!

    Je me suis mis à la MFC depuis peu, et je commence à me demander si je vais pas laisser tomber la msdn pour me payer un exorciste

    Plus sérieusement, si quelqu'un connait un peu le contrôle CScrollBar, je veux bien un peu d'aide parce que je ne trouve rien sur la toile là-dessus.

    Merci.

  2. #2
    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 ,
    les notifications des scrollbars s’interceptes sur la fenêtre avec les messages :
    WM_VSCROLL (vertical ) et WM_HSCROLL (horizontal)
    Le message génère une fonction qui contient le pointeur sur la scrollbar le type d’événement dans nSBCode ,et la position dans nPos.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    void CMyForm::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 
    {
    	switch(	nSBCode)
    	{
    	case SB_THUMBPOSITION:   break;
    	case SB_THUMBTRACK   : break;
    	case SB_PAGEDOWN     :break;
    	case SB_PAGEUP	     :break;						
    	case SB_LINEDOWN:   break;
    	case SB_LINEUP  	 : break;
    	}
    }

  3. #3
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 288
    Billets dans le blog
    2
    Par défaut
    euh, désolé, je comprends pas

    Citation Envoyé par farscape
    les notifications des scrollbars s’interceptes sur la fenêtre avec les messages :
    WM_VSCROLL (vertical ) et WM_HSCROLL (horizontal)
    Comment je fais pour récupérer la notification? C'est dans BEGIN_MESSAGE_MAP qu'il faut faire quelque chose?

    Citation Envoyé par farscape
    Le message génère une fonction
    Je ne comprends pas. Le message génère l'appel d'une fonction? La fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void CMyForm::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
    dont tu parles existe-t-elle ou dois-je la créer? Qu'est-ce que CMyForm?

    Pfff, je suis désolé, je rame là... mais j'avance quand même... tout doucement

  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
    sur la fenetre ou est la scrollbar dans classwizard (sous vc6 ) tu interceptes le message horizontal ou vertical suivant le type de scrollbar ou les deux..


  5. #5
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 288
    Billets dans le blog
    2
    Par défaut
    salut,
    ok c'est bon, j'ai capté. J'ai repris ça tranquillement ce matin... et c'est allé tout seul.

    Merci une fois de plus fasrcape.

    L'ennemi est bête, il croit que l'ennemi c'est nous, alors que c'est lui. (Desproges)

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 07/09/2007, 14h14
  2. Réponses: 6
    Dernier message: 22/05/2006, 13h54
  3. [MFC] Faible utilisation des sockets via les MFC ?
    Par Yellowmat dans le forum MFC
    Réponses: 1
    Dernier message: 25/08/2005, 17h15
  4. utiliser les tag [MFC] [Win32] [.NET] [C++/CLI]
    Par hiko-seijuro dans le forum Visual C++
    Réponses: 8
    Dernier message: 08/06/2005, 15h57
  5. [MFC] Utilisation Drivers
    Par LAPLACE dans le forum MFC
    Réponses: 4
    Dernier message: 21/12/2002, 10h29

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