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

wxWidgets Discussion :

Trier une wxListCtrl.


Sujet :

wxWidgets

  1. #1
    Membre averti
    Avatar de Claude URBAN
    Homme Profil pro
    Prendre le temps de vivre. . .
    Inscrit en
    Mai 2006
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Prendre le temps de vivre. . .

    Informations forums :
    Inscription : Mai 2006
    Messages : 274
    Points : 327
    Points
    327
    Par défaut Trier une wxListCtrl.
    Bonjour,

    À la recherche d'une aide pour trier une ListCtrl, je suis tombé sur un message de Xav', sur son site (que je remercie au passage), qui m'a permis de mieux comprendre le subtile fonctionnement de cette fonction de tri... tout en apportant une solution à mon problème.

    Et pour ceux qui subirait la même torture intellectuelle, une adresse et une seule: http://www.wxdev.fr/topic230-Problem...xListCtrl.html


    Bien que mon problème soit résolu, deux interrogations subsistent...

    1/ Pourquoi doit-on déclarer la fonction wxCALLBACK en tant que "static" ? (sinon le compilateur refuse.)
    J'ai bien sûr cherché sur le net quelques explications sur le static des fonctions... mais ça reste encore très floue dans mon esprit.

    2/ Bien que relativement à l'aise avec les pointeurs ( je dis bien relativement... ) je ne m'explique pas ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    MyData* itm1 = ('MyData*)item1;
    Et Plus précisément cette partie du code:

    Là aussi, le net ne m'a pas donné d'explication percutante.

    Merci donc à vous qui saurez éclairer ma lanterne.


    En attendant, je vous souhaite une bonne journée.

    Claude.

  2. #2
    Membre averti Avatar de wxXav
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Décembre 2008
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur amateur

    Informations forums :
    Inscription : Décembre 2008
    Messages : 214
    Points : 354
    Points
    354
    Par défaut
    Hello

    Citation Envoyé par Claude URBAN Voir le message
    1/ Pourquoi doit-on déclarer la fonction wxCALLBACK en tant que "static" ? (sinon le compilateur refuse.)
    J'ai bien sûr cherché sur le net quelques explications sur le static des fonctions... mais ça reste encore très floue dans mon esprit.
    Cette fonction doit pouvoir être appelée depuis n'importe où : pas seulement au sein d'une classe. C'est pour ça qu'il faut qu'elle soit accessible à "tout le monde".

    Citation Envoyé par Claude URBAN Voir le message
    2/ Bien que relativement à l'aise avec les pointeurs ( je dis bien relativement... ) je ne m'explique pas ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    MyData* itm1 = ('MyData*)item1;
    Et Plus précisément cette partie du code:

    Là aussi, le net ne m'a pas donné d'explication percutante.
    A l'époque, la référence était wxWidgets-2.8.12. Le prototype de la fonction de comparaison était :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int wxCALLBACK wxListCompareFunction(long item1, long item2, long sortData)
    On avait donc des valeurs de type "long" et on voulait récupérer des pointeurs.
    Il suffisait donc de faire un "cast" vers un pointeur.
    Pour faire simple, on indiquait au compilateur de traiter la valeur "item2" comme s'il s'agissait d'un pointeur vers un élément "MyData" (car dans l'absolu, il ne sait pas comment passer d'un "long" à un "MyData*").

    Avec wxWidgets-3, le prototype est devenu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int wxCALLBACK wxListCompareFunction(wxIntPtr item1, wxIntPtr item2, wxIntPtr sortData)
    Le cast n'est peut-être plus nécessaire (encore que je n'en soit pas certain).

    @+
    Xav'

  3. #3
    Membre averti
    Avatar de Claude URBAN
    Homme Profil pro
    Prendre le temps de vivre. . .
    Inscrit en
    Mai 2006
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Prendre le temps de vivre. . .

    Informations forums :
    Inscription : Mai 2006
    Messages : 274
    Points : 327
    Points
    327
    Par défaut
    Bonjour,


    Un "GRAND MERCI" à toi pour ces explications.

    Qui comme d'habitude, sont claires et à la portée de tout le monde.



    @++

    Claude

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

Discussions similaires

  1. [VB.NET] Trier une table de mon DataSet
    Par San Soussy dans le forum ASP.NET
    Réponses: 3
    Dernier message: 03/03/2005, 17h30
  2. Comment trier une DBGRID en cliquant sur une colonne
    Par sessime dans le forum Bases de données
    Réponses: 8
    Dernier message: 09/10/2004, 16h18
  3. [Debutant(e)]Trier une liste
    Par LeDébutantJava dans le forum Collection et Stream
    Réponses: 8
    Dernier message: 19/08/2004, 12h44
  4. [langage] Trier une hastable
    Par Gogoye dans le forum Langage
    Réponses: 11
    Dernier message: 03/08/2004, 16h43
  5. Créer une vue pour trier une requete UNION ?
    Par Etienne Bar dans le forum SQL
    Réponses: 3
    Dernier message: 03/01/2003, 20h22

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