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

 C++ Discussion :

Problème de cast


Sujet :

C++

  1. #1
    Membre averti
    Inscrit en
    Novembre 2008
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 29
    Par défaut Problème de cast
    Bonjour à tous,

    Je travaille avec les fonctions EnumWindows et EnumWindowsProc. Dans ma fonction EnumWindowsProc le premier paramètre est une fenêtre et le deuxième, un tableau qui reçoit les HANDLE des fenêtres:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    BOOL CALLBACK CompterLister(HWND Fenetre, LPARAM par)
    {
     
    	HWND * p = (HWND *) par;
    	p[Index] = Fenetre;
    	Index++; 
    	return TRUE;
     
    }
    Cependant, j'ai un problème de cast à la première ligne puisque p pointe vers une fenêtre, mais je voudrais en fait qu'il contienne le tableau qu'est le paramètre par. Quel cast dois-je utiliser?

    Merci à l'avance

  2. #2
    screetch
    Invité(e)
    Par défaut
    le code est deja bon je crois. au pire, si tu souhaites rendre clair que c'est un tableau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	HWND p[] = (HWND *) par;
    ca ne marche pas sinon ? car c'est correct

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    124
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 124
    Par défaut
    Je veux pas chipotter mais en C++ on évite les cast "à la C"...
    Cf : reinterpret_cast, static_cast, const_cast...

  4. #4
    Membre averti
    Inscrit en
    Novembre 2008
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 29
    Par défaut
    Merci,

    Grâce à votre aide, j'ai pu continuer mon application. Cependant, j'ai un problème un peu plus loin. Bref, l'application doit lister toutes les fenêtres ouvertes, les lister dans un contrôle ListBox. L,utilisteur peut alors choisir une fenêtre et la détruire. Pour ce qui est du listage, il n'y a pas de problème. Cpendant, rien ne se ferme lorsque j'envoie mon message WM_CLOSE.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    LRESULT Selection;
    Selection = SendMessage(Liste, LB_GETCURSEL, 0, 0);
    if (Selection != LB_ERR)
    {
    	SendMessage(Fenetres[(int)Selection], WM_CLOSE, 0, 0);
    }
    Fenetres étant le tableau qui contient toutes mes fenêtres ouvertes.

    Merci à l'avance

  5. #5
    screetch
    Invité(e)
    Par défaut
    utilise GetLastError pour savoir pourquoi ca ne marche pas. C'est une de tes fenetres que tu essayes de fermer ou bien celles d'une autre application ?
    http://msdn.microsoft.com/en-us/libr...8VS.85%29.aspx

  6. #6
    Membre averti
    Inscrit en
    Novembre 2008
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 29
    Par défaut
    Je ferme une fenêtre d'une autre application. Par exemple, j'ouvre la calculatrice et je dois la fermer en la sélectionnant dans le listbox et en cliquant sur le bouton de destruction. J'ai fait le GetLastError et il me retourne 0, donc il n'y a pas d'erreur, mais rien ne se passe.

  7. #7
    screetch
    Invité(e)
    Par défaut
    tu as essayé PostMessage au lieu de SendMessage ?

  8. #8
    Membre averti
    Inscrit en
    Novembre 2008
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 29
    Par défaut
    Je viens tout juste de l'essayer et ma calculatrice reste ouverte malgré tout. J'ai même essayer de fermer la calculatrice tout de suite après que le tableau soit rempli (avec PostMessage) au cas où mon tableau serait réinitialisé à nul lorsque je clique sur le bouton. Même avec cette solution, j'arrive au même résultat.

  9. #9
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Mon conseil: Utilise un vecteur pour ton énumération:
    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    BOOL CALLBACK CompterLister(HWND Fenetre, LPARAM par)
    {			
    	std::vector<HWND> * pVect = reinterpret_cast< std::vector<HWND> * >(par);
    	pVect->push_back(Fenetre);
    	return TRUE;
     
    }
     
    ...
     
    	std::vector<HWND> vect;
    	EnumWindows(CompterLister, reinterpret_cast< LPARAM >(&vect));
    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.

Discussions similaires

  1. [CASTS]problème de cast de Time
    Par DeVoN dans le forum Langage
    Réponses: 7
    Dernier message: 22/02/2006, 17h24
  2. [JDBC Driver][JSTL] Problème de cast de données
    Par GyLes dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 27/09/2005, 10h00
  3. problème de cast!
    Par LaseLiep dans le forum Langage
    Réponses: 3
    Dernier message: 03/06/2005, 09h30
  4. Problème de cast/serialization/externalization ?
    Par Linlin dans le forum CORBA
    Réponses: 1
    Dernier message: 06/12/2004, 16h46
  5. [C#] Problème de casting de @IDENTITY
    Par bilb0t dans le forum Accès aux données
    Réponses: 7
    Dernier message: 03/09/2004, 09h42

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