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 :

Comment s'appelle ce controle


Sujet :

C

  1. #1
    Membre régulier Avatar de theclem35
    Homme Profil pro
    Technicien Réseaux & Télécommunications
    Inscrit en
    Décembre 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien Réseaux & Télécommunications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 148
    Points : 86
    Points
    86
    Par défaut Comment s'appelle ce controle
    Salut,

    Voila je cherche à faire ce controle multicolonnes avec l'API Win32, mais il n'est présent dans aucun tutorial!!!!

    Pouvez vous me donner son nom (en fr ou en) et si vous connaissez des tutos pour sa création ?


  2. #2
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    C'est un CListView (ou du moins, cela y ressemble)
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  3. #3
    Membre régulier Avatar de theclem35
    Homme Profil pro
    Technicien Réseaux & Télécommunications
    Inscrit en
    Décembre 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien Réseaux & Télécommunications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 148
    Points : 86
    Points
    86
    Par défaut
    Salut,

    Aurais tu un tuto sur la création de listview avec l'API win32 (simple, sans tri ni quoi que ce soit) ?
    Ce que j'ai trouvé sur google fonctionne mais je suis un peu perdu dans le code, il y a des choses que je ne connais pas et dont je ne sais pas comment ca fonctionne !
    De plus je n'ai trouvé aucun tuto complet en francais sur la creation de listview

  4. #4
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389

  5. #5
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    Tu as essayé de voir et de comprendre l'exemple de CListView donné dans le MSDN ?

    ROWLIST Sample: Demonstrates Selecting Full Rows in List Views
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  6. #6
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    Citation Envoyé par ram-0000 Voir le message
    Tu as essayé de voir et de comprendre l'exemple de CListView donné dans le MSDN ?

    ROWLIST Sample: Demonstrates Selecting Full Rows in List Views
    C'est du MFC.

  7. #7
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    Citation Envoyé par Melem Voir le message
    C'est du MFC.
    C'est exact, tellement l'habitude, ce n'est peut être pas le meilleur exemple alors.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  8. #8
    Membre régulier Avatar de theclem35
    Homme Profil pro
    Technicien Réseaux & Télécommunications
    Inscrit en
    Décembre 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien Réseaux & Télécommunications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 148
    Points : 86
    Points
    86
    Par défaut
    Coucou melem!

    Merci beaucoup pour ce lien, tout est commenté c'est un bonheur !!!
    Je vais essayer de comprendre et d'intégrer ce code à mon appli.

    Je vais aussi essayer de voir comment selectionner la ligne entiere (peut importe où on clique du moment que ce soit sur la ligne) car j'avais ce probleme avec un autre code !

    En tout cas dommage que cette page n'apparaisse pas sur les resultats google...

    Et.. merci aux autres aussi mais je fais pas de MFC dans mon application!

  9. #9
    Membre régulier Avatar de theclem35
    Homme Profil pro
    Technicien Réseaux & Télécommunications
    Inscrit en
    Décembre 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien Réseaux & Télécommunications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 148
    Points : 86
    Points
    86
    Par défaut
    Bon alors voila je viens d'integrer le code, je pense avoir tout compris et cela fonctionne parfaitement !

    J'ai mis le style "grille" et selection ligne entiere et cela fonctionnait toujours (je parle du double clic avec le msgbox)

    Maintenant j'ai essayé de rajouter des colonnes et une ligne de données, et l'affichage est nikel, la selection aussi, sauf que je n'ai rien dans la colonne "Port" alors que j'ai bien mis une donnée !!!!
    Pouvez vous me dire ou se trouve mon erreur ?? (je copie pas le main car il n'a pas été modifié)

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    LRESULT CALLBACK procedureFenetreRechercherPartie(HWND fenetre, UINT message, WPARAM wParam, LPARAM lParam)
    {
        switch(message)
        {
        case WM_CREATE:
            OnCreate(fenetre, (LPCREATESTRUCT)lParam);
            RemplirFenetreRechercherPartie(fenetre);
            break;
     
        case WM_NOTIFY:
            OnNotify(fenetre, (LPNMHDR)lParam);
            break;
     
        case WM_DESTROY:
            PostQuitMessage(0);
            break;
     
        default:
            return DefWindowProc(fenetre, message, wParam, lParam);
        }
     
        return 0L;
    }
     
     
    void OnCreate(HWND hwnd, LPCREATESTRUCT lpCreateStruct)
    {
        HWND hwndLV;
     
     
        hwndLV = CreateWindowEx(WS_EX_CLIENTEDGE, WC_LISTVIEW, "", WS_CHILD | WS_VISIBLE | LVS_REPORT | LVS_SHOWSELALWAYS,
            25, 54, 459, 130,
            hwnd, (HMENU)ID_LISTVIEW_PARTIES, lpCreateStruct->hInstance, NULL
        );
     
        ListView_SetExtendedListViewStyle(hwndLV, LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES); // On configure le style de la liste pour selectionner la ligne entiere et afficher en mode "grille"
     
        lvInitColumns(hwndLV);
        lvInsertItems(hwndLV);
    }
     
    void lvInitColumns(HWND hwndLV)
    {
        LVCOLUMN lvc;
     
        /* Paramètres communs à toutes les colonnes. */
     
        lvc.mask = LVCF_TEXT | LVCF_FMT;
        lvc.fmt = LVCFMT_LEFT;
     
        /* Colonne 0 (première colonne). */
     
        lvc.pszText = "Nom de la partie";
        ListView_InsertColumn(hwndLV, 0, &lvc);
        ListView_SetColumnWidth(hwndLV, 0, 140);
     
        lvc.pszText = "IP du serveur";
        ListView_InsertColumn(hwndLV, 1, &lvc);
        ListView_SetColumnWidth(hwndLV, 1, 100);
     
        lvc.pszText = "Port";
        ListView_InsertColumn(hwndLV, 2, &lvc);
        ListView_SetColumnWidth(hwndLV, 2, 50);
     
        lvc.pszText = "Niveau";
        ListView_InsertColumn(hwndLV, 3, &lvc);
        ListView_SetColumnWidth(hwndLV, 3, 55);
     
        lvc.pszText = "Pseudo du joueur";
        ListView_InsertColumn(hwndLV, 4, &lvc);
        ListView_SetColumnWidth(hwndLV, 4, 110);
     
    }
     
    void lvInsertItems(HWND hwndLV)
    {
        LVITEM lvi;
     
        /* Paramètres communs à tous les éléments que nous allons insérer. */
     
        lvi.mask = LVIF_TEXT;
     
        /* Ligne 0 (première ligne). */
     
        lvi.iItem = 0;
     
        /* Ligne 0 - Colonne 0. */
        lvi.iSubItem = 0;
        lvi.pszText = "Ma super partieeeee";
        ListView_InsertItem(hwndLV, &lvi);
     
        /* Ligne 0 - Colonne 1. */
        lvi.iSubItem = 1;
        lvi.pszText = "255.233.221.234";
        ListView_SetItem(hwndLV, &lvi);
     
        /* Ligne 0 - Colonne 2. */
        lvi.iSubItem = 2;
        lvi.pszText = "65432";
        ListView_InsertItem(hwndLV, &lvi);
     
        /* Ligne 0 - Colonne 3. */
        lvi.iSubItem = 3;
        lvi.pszText = "10";
        ListView_SetItem(hwndLV, &lvi);
     
        /* Ligne 0 - Colonne 3. */
        lvi.iSubItem = 4;
        lvi.pszText = "MonSuperPSeudo";
        ListView_SetItem(hwndLV, &lvi);
    }
     
    void OnNotify(HWND hwnd, LPNMHDR lpnmhdr)
    {
        if (lpnmhdr->idFrom == 1) /* 1 est l'ID de notre ListView. */
        {
            HWND hwndLV = lpnmhdr->hwndFrom;
     
            if (lpnmhdr->code == NM_DBLCLK)
            {
                /* ComCtl32 version 4.71 et plus récents : Quand lpnmhdr->code vaut NM_DBLCLK, */
                /* la structure complète est une structure de type NMITEMACTIVATE.             */
                /* Cette structure contient entre autres les coordonnées du point du clic.     */
     
                LPNMITEMACTIVATE lpnmia = (LPNMITEMACTIVATE)lpnmhdr;
                LVHITTESTINFO lvhti; /* Contiendra le numéro de ligne et de colonne de la "cellule" double-cliquée. */
                int ret;
     
                /* Récupérons le numéro de ligne et de colonne de la cellule double-cliquée. */
     
                lvhti.pt = lpnmia->ptAction; /* Coordonnées du point du clic. */
                ret = ListView_SubItemHitTest(hwndLV, &lvhti);
     
                /* Il faut tester ret car le clic a pu avoir lieu hors d'une cellule ... */
     
                if (ret != -1)
                {
                    /* Récupérons puis affichons le texte de la cellule. */
     
                    LVITEM lvi;
                    char lpBuffer[256];
     
                    lvi.mask = LVIF_TEXT;
                    lvi.pszText = lpBuffer;
                    lvi.cchTextMax = sizeof(lpBuffer);
                    lvi.iItem = lvhti.iItem;
                    lvi.iSubItem = lvhti.iSubItem;
                    ListView_GetItem(hwndLV, &lvi);
     
                    /* Il n'est pas garanti que le texte ait réellement été placé dans lpBuffer.  */
                    /* Il est possible que le système ait utilisé un autre buffer.                */
                    /* Il faut donc toujours utiliser lvi.pszText pour récupérer le texte.        */
                    /* Il y a aussi la macro ListView_GetItemText qui est plus simple à utiliser. */
     
                    MessageBox(hwnd, lvi.pszText, "", MB_OK);
                }
            }
        }
    }

  10. #10
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    Ta fonction ajoute bien des subitem mais toujours pour la ligne 0, pas pour les autres lignes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    void lvInsertItems(HWND hwndLV, int Ligne)
    {
        LVITEM lvi;
     
        /* Paramètres communs à tous les éléments que nous allons insérer. */
     
        lvi.mask = LVIF_TEXT;
     
        /* Ligne 0 (première ligne). */
     
        lvi.iItem = Ligne;
    ...
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  11. #11
    Membre régulier Avatar de theclem35
    Homme Profil pro
    Technicien Réseaux & Télécommunications
    Inscrit en
    Décembre 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien Réseaux & Télécommunications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 148
    Points : 86
    Points
    86
    Par défaut
    Oui c'est fait exprès, ce qu'il y a (enfin plutot ce qu'il y a pas) c'est ma donnée dans la 3eme colonne !
    Je pensais que c'etait du au fait que ce soit un nombre, mais la donnée de la 4eme colonne est aussi un nombre et elle s'affiche bien !!



    alors que :
    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
    30
    31
    32
    void lvInitColumns(HWND hwndLV)
    {
        LVCOLUMN lvc;
     
        /* Paramètres communs à toutes les colonnes. */
     
        lvc.mask = LVCF_TEXT | LVCF_FMT;
        lvc.fmt = LVCFMT_LEFT;
     
        /* Colonne 0 (première colonne). */
     
        lvc.pszText = "Nom de la partie";
        ListView_InsertColumn(hwndLV, 0, &lvc);
        ListView_SetColumnWidth(hwndLV, 0, 140);
     
        lvc.pszText = "IP du serveur";
        ListView_InsertColumn(hwndLV, 1, &lvc);
        ListView_SetColumnWidth(hwndLV, 1, 100);
     
        lvc.pszText = "Port";
        ListView_InsertColumn(hwndLV, 2, &lvc);
        ListView_SetColumnWidth(hwndLV, 2, 50);
     
        lvc.pszText = "Niveau";
        ListView_InsertColumn(hwndLV, 3, &lvc);
        ListView_SetColumnWidth(hwndLV, 3, 55);
     
        lvc.pszText = "Pseudo du joueur";
        ListView_InsertColumn(hwndLV, 4, &lvc);
        ListView_SetColumnWidth(hwndLV, 4, 110);
     
    }
    et que :
    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
    30
    31
    32
    33
    34
    35
    36
    37
    void lvInsertItems(HWND hwndLV)
    {
        LVITEM lvi;
     
        /* Paramètres communs à tous les éléments que nous allons insérer. */
     
        lvi.mask = LVIF_TEXT;
     
        /* Ligne 0 (première ligne). */
     
        lvi.iItem = 0;
     
        /* Ligne 0 - Colonne 0. */
        lvi.iSubItem = 0;
        lvi.pszText = "Ma super partieeeee";
        ListView_InsertItem(hwndLV, &lvi);
     
        /* Ligne 0 - Colonne 1. */
        lvi.iSubItem = 1;
        lvi.pszText = "255.233.221.234";
        ListView_SetItem(hwndLV, &lvi);
     
        /* Ligne 0 - Colonne 2. */
        lvi.iSubItem = 2;
        lvi.pszText = "65432";
        ListView_InsertItem(hwndLV, &lvi);
     
        /* Ligne 0 - Colonne 3. */
        lvi.iSubItem = 3;
        lvi.pszText = "10";
        ListView_SetItem(hwndLV, &lvi);
     
        /* Ligne 0 - Colonne 3. */
        lvi.iSubItem = 4;
        lvi.pszText = "MonSuperPSeudo";
        ListView_SetItem(hwndLV, &lvi);
    }

  12. #12
    Membre régulier Avatar de theclem35
    Homme Profil pro
    Technicien Réseaux & Télécommunications
    Inscrit en
    Décembre 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien Réseaux & Télécommunications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 148
    Points : 86
    Points
    86
    Par défaut
    J'ai répondu a ma propre question, il fallait faire un InsertItem pour le premier element de la ligne, et un SetItem pour tous les subitems.

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

Discussions similaires

  1. [VB6]comment supprimer dynamiquement un controle dynamique?
    Par totor le troll dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 06/07/2011, 21h10
  2. Réponses: 1
    Dernier message: 18/11/2010, 17h00
  3. Réponses: 3
    Dernier message: 14/09/2010, 10h14
  4. Réponses: 5
    Dernier message: 10/06/2004, 21h00
  5. [VB6] Comment boucler sur des controls d'un form ?
    Par lankviller dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 27/01/2003, 16h29

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