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 :

Capture d'évènement OnVScroll


Sujet :

MFC

  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 214
    Par défaut Capture d'évènement OnVScroll
    Bonjour,

    Je n'arrive pas à capturer d'évènement OnVScroll ou OnHScroll. Je travaille dans une classe CMDIChildWnd, où je n'ai pas d'ascenseur, mais des sliders verticaux. Il parait que OnVScroll ne fait de différence.

    Mes sliders sont définis dans un dialogue crée via le gestionnaire de ressource, et je les implémente dans ma fenêtre via la commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    m_OutilContraste.m_wndOutilContraste.Create(this, IDD_DLG_CONTRASTE, WS_CHILD | CBRS_LEFT | CBRS_SIZE_DYNAMIC |CBRS_TOOLTIPS,AFX_IDW_TOOLBAR))
    Mes boites à outils ont toujours très bien fonctionné. Je travaille avec via les messages :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ON_NOTIFY(NM_CUSTOMDRAW, IDC_SLIDER_VITESSE, OnCustomdrawSliderVitesse)
    ON_NOTIFY(NM_RELEASEDCAPTURE, IDC_SLIDER_MIN, OnReleasedcaptureSliderContrasteMin)
    Or j'ai envie de passer sur un changement dynamique, pas seulement sur l'évènement NM_RELEASEDCAPTURE. Donc je cherche à capturer OnVScroll. Mais pas moyen. J'ai bien ma fonction CChildFrm::OnVScroll qui est construite automatiquement grâce au gestionnaire de classe. Mais j'ai beau manipuler mes slider, la fonction n'est jamais exécutée.

    Je n'ai pas vu d'indication particulière dans les différents sujets du forum. Il doit bien y avoir quelque chose à faire, n'est-ce pas ?

  2. #2
    Membre très actif
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 214
    Par défaut
    Re-Bonjour !

    J'ai fait un essai très simple où j'ai crée une nouvelle application MFC, j'ai rajouté un slider et j'ai essayé de capturer l'évènement sus-nommé (OnVScroll). Je n'ai eu évidemment aucun soucis.

    Il y a donc un truc qui coince dans mon application en développement. Dans la même classe, j'arrive à récupérer plein d'évènements, je viens d'en rajouter un hier. Mais concernant ce VScroll, aucun signe de vie !

    Personne n'a d'idée ?

    Bon je peux très bien vivre sans pour l'instant, l'interface est seulement un peu moins dynamique, mais ça lui donne aussi bien moins de finesse. Donc même si pour l'instant je suis passé à autre chose, j'espère toujours trouver une solution.

    Merci d'avance.

  3. #3
    Membre chevronné Avatar de stephdim
    Profil pro
    Inscrit en
    Août 2007
    Messages
    462
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 462
    Par défaut
    salut,

    quelle est ta hierarchie de classes/fenetres ?

    le SLIDER envoit le WM_HSCROLL ou WM_VSCROLL à la fenetre parente, donc apparement la boite de dialogue (dans un CFormView?)

    pourquoi essayes-tu de l'intercepter dans la CChildFrame ? tu sautes une étape là ...

    si j'ai bien compris, tu as un CChildFrame qui contient une CFormView qui contient ton Slider.

    donc c'est dans la CFormView qu'il faut intercepter l'évènement.

    @+

  4. #4
    Membre très actif
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 214
    Par défaut
    'lu,

    Hé non, mon slider est une boite à outils et mon ChildFrame et la première classe où je peux intercepter des messages. La commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    m_OutilContraste.m_wndOutilContraste.Create(this, IDD_DLG_CONTRASTE,...)
    est exécutée dans mon ChildFrame, je n'ai pas de FormView. La seule chose qui définit ma boite à outils, c'est ma ressource IDD_DLG_CONTRASTE. m_OutilContraste est une simple classe maison.

    J'espère qu'on comprend mieux pourquoi je donne l'impression de sauter une étape.

    ++

    Edit : J'ai essayé de définir ma classe COutilContraste comme une CDialogBar (le type de classe de m_wndOutilContraste) et j'ai essayé alors de récupérer l'évènement tant désiré à partir cette classe qui me semble être LA classe parente de mon CSlider. Et pourtant je n'y suis pas arrivé. Il se peut que j'y suis allé trop vite, mais s'il faut insister de ce côté, j'aimerais quelques pistes qui pourrait m'aider à faire plus que ce que je n'ai déjà fait, merci

  5. #5
    Membre chevronné Avatar de stephdim
    Profil pro
    Inscrit en
    Août 2007
    Messages
    462
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 462
    Par défaut
    J'ai essayé de définir ma classe COutilContraste comme une CDialogBar (le type de classe de m_wndOutilContraste) et j'ai essayé alors de récupérer l'évènement tant désiré à partir cette classe qui me semble être LA classe parente de mon CSlider. Et pourtant je n'y suis pas arrivé. Il se peut que j'y suis allé trop vite, mais s'il faut insister de ce côté, j'aimerais quelques pistes qui pourrait m'aider à faire plus que ce que je n'ai déjà fait, merci
    c'est bien dans une classe dérivée de CDialogBar qu'il faut que tu interceptes l'évènement.
    c'est la fenetre parente directe qui reçoit l'évènement.

    utilises Spy++ pour regarder les messages qui transitent

    sinon montre nous comment tu t'y prend pour intercepter l'évènement, des fois que ...

    @+

  6. #6
    Membre très actif
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 214
    Par défaut
    C'est bon !

    J'ai tout déclaré comme il faut, et j'arrive à avoir le message exactement comme il faut ! C'est super chouette maintenant

    La dernière fois, j'avais du oublié une déclaration du message map, ou quelque chose dans le genre.


    Donc il y aurait des messages qui ne vont pas taper à la porte de toute la famille. Et évidemment, tous les messages utilisés jusqu'à présent le faisait. En faisant des choses de ce genre, je vais pouvoir me permettre d'avoir des choses un peu plus propres. Pour l'instant, j'ai la plupart de mes messages interceptés dans le MainFrame ou le ChildFrame, puis redistribué ensuite aux classes adéquates. Des petites navettes un peu bizarre.

    Merci de m'avoir guidé.

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

Discussions similaires

  1. capturer un événement souris
    Par doc_nounours dans le forum Windows
    Réponses: 8
    Dernier message: 22/11/2006, 10h56
  2. Réponses: 6
    Dernier message: 20/04/2006, 15h44
  3. Pb de capture d'évènement dans un JTextArea!
    Par scooby09 dans le forum AWT/Swing
    Réponses: 8
    Dernier message: 18/03/2006, 21h24
  4. Réponses: 5
    Dernier message: 21/12/2004, 12h00
  5. Capturer l'évènement onPaint d'un TLabel
    Par nicolos dans le forum C++Builder
    Réponses: 7
    Dernier message: 04/11/2004, 18h45

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