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 ?
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 ?
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.
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
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.
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.
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!
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); } } } }
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.
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 :
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 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); }
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); }
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.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager