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] CListCtrl : click sur une ligne déjà sélectionnée


Sujet :

MFC

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 15
    Points : 13
    Points
    13
    Par défaut [MFC] CListCtrl : click sur une ligne déjà sélectionnée
    Bonjour
    Est-ce qu'il est possible de savoir si on clique dans un CListCtrl sur une ligne déjà sélectionnée?
    Merci.

  2. #2
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2005
    Messages
    513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 513
    Points : 416
    Points
    416
    Par défaut
    bah il suffit que tu stock dans une variable la ligne selectionner "avant" et que à chaque fois que l'on reclique sur le controle tu compares, "la "nouvelle" ligne cliqué et l'ancienne !

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 15
    Points : 13
    Points
    13
    Par défaut
    J'avais pensé à faire cela. Mais le problème c'est lorsqu'on utilise les touches du clavier. J'ai essayé de mettre à jour la variable aussi dans le LvnItemChanged. Mais le problème, c'est que l'evenement ItemChanged est envoyé avant le Clicked, donc dans le clicked on a tjs ancien selectionne = nouveau selectionne

  4. #4
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2005
    Messages
    513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 513
    Points : 416
    Points
    416
    Par défaut
    je ne sais pas, je ne connais pas les MFC, donc je peux difficilement t'aider autrement que ce que je t'ai dit.
    désoler, et bonne continuation !

  5. #5
    Membre expert
    Avatar de hiko-seijuro
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 011
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 011
    Points : 3 065
    Points
    3 065
    Par défaut
    fais le test dans l'évenment ItemChanged alors

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 15
    Points : 13
    Points
    13
    Par défaut
    L'événement ItemChanged n'est pas appelé lorsqu'on clique sur une ligne déjà sélectionnée (l'item ne change pas )

  7. #7
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 62
    Points : 53
    Points
    53
    Par défaut
    Salut!

    Tu n'as qu'a capturer l'evenement ItemChanged et ne rien faire! Puis quand tu capture Clicked alors tu fais ton traitement!

    Attention tu n'appel la methode parente que lorsque tu capture le message "Clicked"!!!

    Autrement il me semble que a une methode IsSelected qui t'éviterait un boolean :

    Cathar_Rhythm ->

  8. #8
    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

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 15
    Points : 13
    Points
    13
    Par défaut
    En fait, je veux faire qqchose dès qu'on sélectionne une ligne (par click ou par clavier) et aussi lorsqu'on clicke sur une ligne deja sélectionnée et je veux si possible le faire qu'une seule fois. Car pour l'instant, j'effectue la même action deux fois. Donc c'est pas très très grave mais si vous avez une solution pour ne la faire qu'une seule fois...

  10. #10
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 62
    Points : 53
    Points
    53
    Par défaut
    Je ne vois pas trop le probleme, tu peux le faire facilement en jouant avec les messages de windows et les gestionnaires d'évènement.

    Cathar_Rhythm ->

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 15
    Points : 13
    Points
    13
    Par défaut
    En fait, dans l'événement ItemChanged, je fais une action et dans l'évènement Clicked, je fais la même action. Donc, lorsque je clicke sur une ligne non sélectionnée, je fais deux fois la même action. Donc j'aimerais savoir s'il est possible de la faire une seule fois.

  12. #12
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 62
    Points : 53
    Points
    53
    Par défaut
    Malheureusement, il me semble que tu seras obligé de déclarer tes 2 gestionnaires par contre tu peux le faire de la manière suivante si c'est le même code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    void MaClasse::OnCLicked(<parametres>)
    {
        ....
    }
     
    void MaClasse::OnItemChanged(<parametres>)
    {
        this->OnClicked(<parametres>); //Si se sont les mêmes parametres
        //Sinon, mais je ne suis plus très sûre de la syntaxe
        SendMessage(WM_CLICKED, this, NULL);
    }
    Comme comme ça tu écris qu'une seule fois le code!


    Cathar_Rhythm ->

  13. #13
    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
    salut,
    essaye de proceder comme suit:
    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
     
    void CSdiSplitterView::OnKeydown(NMHDR* pNMHDR, LRESULT* pResult) 
    {
    	LV_KEYDOWN* pLVKeyDow = (LV_KEYDOWN*)pNMHDR;
    	// TODO: Add your control notification handler code here
    	m_bKeydown	=true;
    	*pResult = 0;
    }
     
    void CSdiSplitterView::OnClick(NMHDR* pNMHDR, LRESULT* pResult) 
    {
    	// TODO: Add your control notification handler code here
    	TRACE("\n Click");
    	*pResult = 0;
    }
     
    void CSdiSplitterView::OnItemchanged(NMHDR* pNMHDR, LRESULT* pResult) 
    {
    	NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
    	// TODO: Add your control notification handler code here
     
    	TRACE("\n OnItemchanged :%d",m_bKeydown);
    	if(m_bKeydown)
    	{
    		// TRAITEMENT.
    	}
    	m_bKeydown=false;
    	*pResult = 0;
    }
    traitement systematique sur le click souris.
    dans itemchanded traitement uniquement si evenement clavier avant (variable m_bKeydown).


  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 15
    Points : 13
    Points
    13
    Par défaut
    Avec le OnKeyDown, ça marche très bien.
    Donc merci beaucoup.

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

Discussions similaires

  1. Click sur une ligne de GRidView
    Par zooffy dans le forum ASP.NET
    Réponses: 1
    Dernier message: 19/10/2009, 12h28
  2. Réponses: 5
    Dernier message: 12/08/2009, 16h59
  3. Evenement double click sur une ligne d'un DataGrid
    Par imad_eddine dans le forum ASP.NET
    Réponses: 7
    Dernier message: 19/11/2007, 18h24
  4. click sur une ligne d'un datagrid
    Par seckinfo dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 06/02/2007, 11h42
  5. Réponses: 1
    Dernier message: 12/07/2006, 09h51

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