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 :

Probleme avec CTreeCtrl::Expand sous Windows Server 2008 R2 Entreprise (VS2015)


Sujet :

MFC

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    septembre 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : septembre 2016
    Messages : 4
    Points : 5
    Points
    5
    Par défaut Probleme avec CTreeCtrl::Expand sous Windows Server 2008 R2 Entreprise (VS2015)
    Bonjour !

    J'utilise la méthode CTreeCtrl::Expand( HTREEITEM hItem, UINT nCode ) sous Visual Studio 2015.

    Je passe en paramètre nCode = TVE_EXPAND.

    Mon code fonctionne sous Windows 7 mais pas sous Windows Server 2008 (R2 Entreprise) : je reste bloqué en boucle infinie sur la ligne : pTree->Expand( m_hTreeItem, TVE_EXPAND );

    Il me semble avoir lu quelque part que la gestion de la propagation des évèvements d'expand avait changé avec VS2015 mais je ne retrouve plus l'info...

    Si quelqu'un a une idée, qu'il n'hésite pas !

    Merci d'avance !

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    septembre 2005
    Messages
    27 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : septembre 2005
    Messages : 27 239
    Points : 40 995
    Points
    40 995
    Par défaut
    Que dit la Call Stack quand tu te retrouves pris récursivement dans le Expand?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    septembre 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : septembre 2016
    Messages : 4
    Points : 5
    Points
    5
    Par défaut Stack
    Merci pour ta réactivité !
    La pile ne dit pas grand chose : je passe par mes 3 méthodes comme dans le cas fonctionnel.
    D'autre part, si je remplace à la volée le TVE_EXPAND par TVE_COLLAPSE, je réussis à sortir de ma boucle infinie.
    Nom : Stack.png
Affichages : 123
Taille : 17,8 Ko

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    février 2005
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : février 2005
    Messages : 4 756
    Points : 11 346
    Points
    11 346
    Par défaut
    Vous ne pouvez pas ajouter un flag (variable booléenne) pour éviter la récursion infini ?

  5. #5
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    septembre 2005
    Messages
    27 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : septembre 2005
    Messages : 27 239
    Points : 40 995
    Points
    40 995
    Par défaut
    Je seconde cette proposition, ajoute un flag cestMoiQuiEtend que tu testes au début du OnItemExpanding(), auquel cas tu retournes immédiatement...

    Et autour de ton appel à Expand(), tu rajoutes un code qui règle le flag et l'enlève après l'appel (de préférence dans le destructeur d'un objet, pour que ce soit exception-safe).
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    septembre 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : septembre 2016
    Messages : 4
    Points : 5
    Points
    5
    Par défaut Bonne idée
    Je pense que c'est une bonne solution de contournement.
    Je teste et je vous tiens au courant.
    Merci !

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    septembre 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : septembre 2016
    Messages : 4
    Points : 5
    Points
    5
    Par défaut Solution fonctionnelle
    Je suis parti de la proposition de bacelar.
    J'ai ajouté un booléen que je propage à travers mes méthodes et que je positionne à la bonne valeur pour mes items posant le souci de la boucle infinie.
    En gros, pour mes items "récalcitrants", je fais un <pTree->Expand( m_hTreeItem, TVE_COLLAPSE )> au lieu d'un <pTree->Expand( m_hTreeItem, TVE_EXPAND )>.
    Ce n'est pas très propre mais j'ai le comportement voulu sous Windows 7 et sous Windows Server 2008...
    Je pense que ça marche bien dans mon cas parce que mes items n'ont pas d'enfant !
    Merci à vous 2 !!

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

Discussions similaires

  1. [11gR2] Probleme d ouverture de db console sous windows server 2008 r2
    Par khalidx2007 dans le forum Installation
    Réponses: 3
    Dernier message: 28/04/2015, 12h49
  2. [Batch] probleme avec mon script sous Windows :(
    Par fouinette dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 23/11/2009, 02h06
  3. Réponses: 0
    Dernier message: 19/11/2009, 15h23
  4. EM sous windows server 2008
    Par goldo81 dans le forum Entreprise Manager
    Réponses: 1
    Dernier message: 05/11/2009, 12h48
  5. Réponses: 0
    Dernier message: 19/08/2007, 16h41

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