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 :

Mise à jour des données d'un CListCtrl en temps réel


Sujet :

MFC

  1. #1
    Membre éclairé
    Avatar de PetitPapaNoël
    Développeur informatique
    Inscrit en
    Septembre 2006
    Messages
    559
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 559
    Points : 749
    Points
    749
    Par défaut Mise à jour des données d'un CListCtrl en temps réel
    Bonjour à tous,

    Je dispose, dans une vue, d'une grille CListCtrl affichant un certains nombre de données en consultation uniquement, et de différents autres contrôles qui peuvent permettre à l'utilisateur de modifier ces mêmes données. Jusque là, rien d'exceptionnel.

    Là où ça se complique un peu, c'est que la modification d'une valeur dans un contrôle par l'utilisateur peut avoir des répercussions sur la totalité des données de la grille. Donc, à chaque modification de valeur, je réinitialise ma grille.
    Le problème, c'est que la réinitialisation de ma grille peut prendre jusqu'à 1 ou 2 secondes, ce qui peut occasionner une certaine gêne pour l'utilisateur.

    Je me dis, donc, que plutôt que de lancer la méthode qui réinitialise la grille dans chaque méthode événementielle déclenchée par l'utilisateur, je pourrais le faire au moyen de l'envoi d'un message avec PostMessage.

    Mais je ne suis pas vraiment un pro des messages, et c'est pourquoi je fais appel à vos conseils éclairés. Est-ce qu'un message envoyé par PostMessage me permettra d'éviter que mon appli se fige pendant 2 secondes ? Ou bien faut-il plutôt que je m'oriente vers la création d'un thread dédié à la réinitialisation de ma grille ? (Pour les threads, je suis carrément novice).

    Merci de votre aide.

  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
    Points : 17 323
    Points
    17 323
    Par défaut
    salut,
    que tu envois un message ou que tu fasses un thread dans tous les cas la modification de ta zone va impacter l'affichage de ta listctrl.
    donc ça ne changera rien a l'affaire puisque la listctrl devra se reconstruire.
    c'est ce temps de reconstruction qui est pénalisant.
    éventuellement tu peux essayer de faire un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ListCtrl.SetRedraw(FALSE) ;
    // reconstruction.
    ListCtrl.SetRedraw(TRUE) ;
    ListCtrl.Invalidate();
    pour voir si impacte le temps de reconstruction.

  3. #3
    Membre éclairé
    Avatar de PetitPapaNoël
    Développeur informatique
    Inscrit en
    Septembre 2006
    Messages
    559
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 559
    Points : 749
    Points
    749
    Par défaut
    Merci Farscape, je vais essayer ce que tu proposes (je ne connaissais pas cette méthode SetRedraw). Mais je voulais préciser que ce qui m'embête, ce n'est pas le temps que met ma grille à se reconstruire mais plutôt le fait que pendant ce temps l'utilisateur soit bloqué.
    Pendant ce temps de reconstruction, on pourrait passer le focus à un autre contrôle et l'utilisateur pourrait faire la modification suivante, par exemple.

  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
    Par défaut
    alors postmessage fera l'affaire avec un message privé:
    http://cpp.developpez.com/faq/vc/ind...PrivateMessage

  5. #5
    Membre éclairé
    Avatar de PetitPapaNoël
    Développeur informatique
    Inscrit en
    Septembre 2006
    Messages
    559
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 559
    Points : 749
    Points
    749
    Par défaut
    Ah ! C'est donc bien ce que je pensais. Mais j'avais un doute...
    Merci de ta réponse aussi rapide !

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

Discussions similaires

  1. [JTable] mise à jour des données
    Par tripop dans le forum Composants
    Réponses: 3
    Dernier message: 04/02/2009, 19h52
  2. CListCtrl et mise à jour des données en manuel !
    Par youngkoolboy dans le forum MFC
    Réponses: 6
    Dernier message: 22/05/2006, 16h23
  3. Mise à jour des données
    Par Alex063 dans le forum Access
    Réponses: 6
    Dernier message: 31/01/2006, 18h16
  4. MySqlDAC et mise à jour des données
    Par charliejo dans le forum C++Builder
    Réponses: 4
    Dernier message: 02/01/2006, 10h25
  5. mise à jour des données toutes les semaines...
    Par Toff !!!!! dans le forum Access
    Réponses: 20
    Dernier message: 22/12/2005, 12h38

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