ListView - API Windows [Résolu]

Signaler
Messages postés
302
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
22 avril 2006
-
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
-
dans tout les exemple que j'ai vu c'était que des dialog

mais moi je veux pas de dialog ! comment on fait pour créer une listview par createwindowex ?

<hr size="2" width="100%">Dorian / 14 ans / sous Dev-C++

25 réponses

Messages postés
1536
Date d'inscription
samedi 21 décembre 2002
Statut
Membre
Dernière intervention
24 mai 2009
2
Le nom de classe d'un controle listview est WC_LISTVIEW.

+2(p - n)
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
25
#define LVS_EX_FULLROWSELECT 0x20

ciao...
BruNews, MVP VC++
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Tu dois apprendre a aller regarder dans les .h pour comprendre d'ou ca
vient: tu ouvres commctrl.h (dans le dossier include du compilo). Tu
cherche LVS_EX_FULLROWSELECT. Si tu trouves c'est que tu va pouvoir
t'en sortir, c'est juste un #ifdef qui t'empêche d'utiliser cette
définition. C'est le cas ici, tu vois que le define est entouré par un
#if (_WIN32_IE >= 0x0300)

Au tout début de ton projet, tu définis donc _WIN32_IE à au moins cette valeur, ou plus si tu veux, tu peux connaitre la correspondances avec les versions d'IE

Et quand c'est pas celui la, c'est _WIN32_WINNT que tu devra définir
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
25
A placer AVANT <windows.h>

ciao...
BruNews, MVP VC++
Messages postés
302
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
22 avril 2006

Bon reprennons à zéro !


Dites moi si y'a des erreurs .



1. J'installe tout les bidules pour ma listview :

#define ID_LISTVIEW 100


...


HWND hListView;


...


hListView= CreateWindowEx(0, "WC_LISTVIEW", NULL,


WS_VISIBLE|WS_CHILD,


10, 10,300,200,hWnd,(HMENU)ID_LISTVIEW,


hInst, NULL);



2. Je complète ma listview :

LV_COLUMN lvColumn;


lvColumn.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;

lvColumn.fmt = LVCFMT_RIGHT;

lvColumn.cx = 70;

lvColumn.pszText = "Temps";

ListView_InsertColumn(hListView,0,(LPARAM)&lvColumn);

lvColumn.cx = 200;

lvColumn.pszText = "Action";

ListView_InsertColumn(hListView,0,(LPARAM)&lvColumn);

ListView_SetExtendedListViewStyleEx(hListView,0,LVS_EX_FULLROWSELECT);




LVITEM LvItem;

LvItem.mask = LVIF_TEXT | LVIF_PARAM | LVIF_STATE;

LvItem.state = 0;

LvItem.stateMask = 0;

LvItem.iItem = 0;

LvItem.lParam = 0;

LvItem.iSubItem = 0;



int itemPos = ListView_InsertItem(hListView,(LPARAM)&LvItem);

ListView_SetItemText(hListView,itemPos,0,"00:12:54");

ListView_SetItemText(hListView,itemPos,1,"Jouer un son");

itemPos = ListView_InsertItem(hListView,(LPARAM)&LvItem);

ListView_SetItemText(hListView,itemPos,0,"00:24:00");

ListView_SetItemText(hListView,itemPos,1,"Ouvrir fichier "App.exe" ");




3. Il me manque quelques trucs alors d'après vous il faut :



#define LVS_EX_FULLROWSELECT 0x20

#define _WIN32_IE 0x0400



#include <commctrl.h>

#pragma comment(lib,"comctl32.lib") //ça je sais pas trop si faut le mettre



Là si je compile c'est fenêtre vide ...



4. On a parlé de InitCommonControls , bon je le rajoute :

InitCommonControls();



j'essaye de compiler >>[Linker error] undefined reference to `InitCommonControls@0'


sigh !
<hr size ="2" width="100%">Dorian / 14 ans / sous Dev-C++
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Erreur de ta part: ce n'est pas "WC_LISTVIEW" mais WC_LISTVIEW le nom de la calsse
Messages postés
302
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
22 avril 2006

CODE ici



à la ligne : ListView_SetExtendedListViewStyleEx(hListView,0,LVS_EX_FULLROWSELECT);



erreur : `LVS_EX_FULLROWSELECT' undeclared (first use this function)




<hr size="2" width="100%">Dorian / 14 ans / sous Dev-C++
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
25
0x20

ciao...
BruNews, MVP VC++
Messages postés
302
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
22 avril 2006

heu ... ça veut dire quoi ça ?

<hr size="2" width="100%">Dorian / 14 ans / sous Dev-C++
Messages postés
302
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
22 avril 2006

pour ça ok mais y'a l'autre `ListView_SetExtendedListViewStyleEx' undeclared (first use this function)
ça doit être un autre je pense


<hr size="2" width="100%">Dorian / 14 ans / sous Dev-C++
Messages postés
933
Date d'inscription
dimanche 1 avril 2001
Statut
Modérateur
Dernière intervention
9 janvier 2012
2
Il faut faire un #include <commctrl.h>

@+
Arnotic,
Admin CS, MVP Visual C++
Messages postés
1536
Date d'inscription
samedi 21 décembre 2002
Statut
Membre
Dernière intervention
24 mai 2009
2
#include <commctrl.h>

et aussi pense a linker comctl32.lib : Sous VC++ :#pragma comment(lib, "comctl32.lib"), pour Dev C++, ca se fait dans les options du projet.

+2(p - n)
Messages postés
302
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
22 avril 2006

#include <commctrl.h> y est déja ... ça ne marche toujours pas .



CODE ici



si je le retire , ça compile mais avec une fenêtre vide
<hr size="2" width="100%">Dorian / 14 ans / sous Dev-C++
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Ah oui, tu as aussi oublié le InitCommonControls, le truc auquel tu dois penser à chaque fois que ca marche pas
Messages postés
302
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
22 avril 2006

merci pour tes réponses ! 'verais ça demain moi .

<hr size="2" width="100%">Dorian / 14 ans / sous Dev-C++
Messages postés
302
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
22 avril 2006

rââââ ! ça me saoule ce truc !



j'ai cherché ListView_SetExtendedListViewStyleEx dans le fichier .h et j'ai trouvé #if (_WIN32_IE >= 0x0400) . Docn j'ai essayé #define _WIN32_IE 0x0400


Mais non ça marche toujours pas !



et le InitCommonControls ça marche comment ça ?


<hr size ="2" width="100%">Dorian / 14 ans / sous Dev-C++
Messages postés
302
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
22 avril 2006

tu parles de quoi là ? faut que je place quoi avant <windows.h> ?

<hr size="2" width="100%">Dorian / 14 ans / sous Dev-C++
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
25
#define _WIN32_WINNT 0x0500
#define _WIN32_IE 0x0500
#include <windows.h>

ciao...
BruNews, MVP VC++
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
DevC++ ne comprend peut être (surement) pas ce pragma, ajoute plutot -lcomctl32 au options du linker
Messages postés
302
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
22 avril 2006

J'ai retiré le pragma et j'ai mis ça dans les options , bah lus de message d'erreur mais j'obtiens une fenêtre vide !

...



CODE


essayez de le compilez chez vous pour voir ...


<hr size="2" width="100%">Dorian / 14 ans / sous Dev-C++