gagah1
Messages postés509Date d'inscriptionsamedi 28 juin 2003StatutMembreDernière intervention 3 août 2010
-
4 juil. 2004 à 11:51
Tahrn
Messages postés1Date d'inscriptionsamedi 30 avril 2005StatutMembreDernière intervention 5 mai 2008
-
5 mai 2008 à 16:40
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
Tahrn
Messages postés1Date d'inscriptionsamedi 30 avril 2005StatutMembreDernière intervention 5 mai 2008 5 mai 2008 à 16:40
Code interessant.
Petite remarque: le 3ème paramètre de la fonction de comparaison (lParamSort) n'est pas utilisé dans ce code.
Il devrait être utilisé pour passer un pointeur vers une structure.
Il est judicieux de stocker dans cette dernière:
*Le numéro de la colonne
*L'ordre de tri à effectuer
*...autres (suivant l'application)
Cela permet de réduire l'utilisation de variables globales, et, en passant le numéro de la colonne, permet d'implémenter une unique fonction de tri.
Migluche
Messages postés1Date d'inscriptionmercredi 6 septembre 2006StatutMembreDernière intervention12 septembre 2006 12 sept. 2006 à 04:46
Salut,
J'aimerais me servir du code pour les petites flèches dans un projet VB.NET.
Je ne suis pas sous Win XP mais si je regarde l'explorateur Windows de Win2000, les petites flèches, qui indiquent le sens du tri, y sont affichées.
Est-ce que quelqu'un sait comment s'y prendre ou est en mesure de me fournir un exemple?
Merci beaucoup!
deck_bsd
Messages postés1243Date d'inscriptionjeudi 31 mars 2005StatutMembreDernière intervention 3 août 20162 4 juin 2006 à 19:51
MDR si je pouvai je le ferai. Je compte sur toi pour taire ce secret à jamais :D
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 4 juin 2006 à 19:47
Tu devrais enlever le 'e' à la fin de servie, ça pourrait prêter a confusion :)
deck_bsd
Messages postés1243Date d'inscriptionjeudi 31 mars 2005StatutMembreDernière intervention 3 août 20162 4 juin 2006 à 19:45
Exelente source, moi qui cherchai comment apprendre à gérer une listview je suis servie ;)
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 28 nov. 2004 à 15:31
et ajouter l'option -lcomctl32 au linker bien sur
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 28 nov. 2004 à 15:29
Moi j'ai trouvé qu'il suffisait juste de définir convenablement _WIN32_IE (au moins 0x0300), c'est tout
rastalalalolo
Messages postés17Date d'inscriptionlundi 22 novembre 2004StatutMembreDernière intervention15 janvier 2010 26 nov. 2004 à 11:34
lut All
Pour ceux qui developpe sur dev-cpp et qui n'arrive pas a utiliser InitCommonControls, la suite vous interressera...
j'utilise dev cpp 4.9.9.0.
*D'abord mettre a jour dev:
dans dev cpp: menu "outils"-> "n. version/package"
et pour verifier les versions grace au
"package manager"
Windows32 API en version 3.1
gcc-core en 3.4.2....
gcc-g++ en 3.4.2....
gcc-objc en 3.4.2....
et MinGW runtime en 3.5
mettez a jour votre gnu make ca mange pas de pain, actuel 3.80.0-3
*Ensuite il faut lié la librairie utile comctl32.lib
du nom de libcomctl32.a sous devcpp
aucune ligne de commande a taper pour le fegniant que je suis, merci au developpeur,
menu "projet"->"option du projet"
->onglet "parametres"->bouton"ajouter fichier"
et puis allez chercher votre librairie libcomctl32.a
Apres le linkage de la lib la compil s'effectue
Je vous souhaite une bonne journée et une bonne prog:)
@++
magic_Nono
Messages postés1878Date d'inscriptionjeudi 16 octobre 2003StatutMembreDernière intervention16 mars 2011 22 nov. 2004 à 18:56
k
schade
thx
B.
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 22 nov. 2004 à 18:50
Je ne pense pas, je crois que c'est la première fois que ms fournissait gratuitement son compilateur
magic_Nono
Messages postés1878Date d'inscriptionjeudi 16 octobre 2003StatutMembreDernière intervention16 mars 2011 22 nov. 2004 à 16:52
Bonjour vecchio
le toolkit est pour 2003 si je lis bien
existe t'il une version pour VC6??
merci
++
Nono
cs_rangoon
Messages postés6Date d'inscriptionmardi 20 janvier 2004StatutMembreDernière intervention14 décembre 2005 18 août 2004 à 08:35
J'ai réalisé tes modifs, mais rien ne fais. Je n'ai toujours pas les flèches haut et bas qui s'affichent.
Aurai-je toutes les bibliothèques (*.h) à jour?
Pour le HeapFree, en utilisant un cast explicite, vs6 m'indique que "User breakpoint called from code at 0x77F667cd".
Et le message: "HEAP[LVSort.exe]: Invalid Address specified to RtlFreeHeap( 00140000, 00144790 )".
Par contre, quand j'utilise LVSort.exe (sans vs6), il n'y a aucune erreur. Je pense que c'est normal.
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 17 août 2004 à 11:52
tu peux essayer d'enlever cette ligne alors, et de mettre
#define HDF_SORTUP 0x0400
#define HDF_SORTDOWN 0x0200
à la place
Pour le HeapFree, le pb viens du fait que je compile en mode C (option /C à la place de /TC), donc il faut faire un cast explicite:
HeapFree(heap, 0, (void*)lvi.lParam);
cs_rangoon
Messages postés6Date d'inscriptionmardi 20 janvier 2004StatutMembreDernière intervention14 décembre 2005 17 août 2004 à 11:29
La compilation se passe très bien, si je fais les modifs citées précédement.
Et à la première ligne du fichier LVSort.cpp, j'ai bien
#define _WIN32_WINNT 0x501
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 16 août 2004 à 16:20
Au fait, dans ton message précédent, ca compilait bien, puisque tu avais juste un probleme de link....
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 16 août 2004 à 16:19
Regarde bien, au début de mon fichier, j'ai mis
#define _WIN32_WINNT 0x501
Vérifie que tu n'a pas enlevé cette ligne. Si ca ne marche toujours pas, dis le moi.
cs_rangoon
Messages postés6Date d'inscriptionmardi 20 janvier 2004StatutMembreDernière intervention14 décembre 2005 16 août 2004 à 09:38
Merci beaucoup, vecchio56.
Cela à marcher du premier coup. Mais l'affichage des flèches ne fonctionne pas, et je suis sous XP.
j'ai oublié de te signaler ces erreurs de compilation:
C:\Documents and Settings\Ceria\Mes documents\listview\testliview\LVSort.cpp(43) : error C2065: 'HDF_SORTUP' : undeclared identifier
C:\Documents and Settings\Ceria\Mes documents\listview\testliview\LVSort.cpp(151) : error C2065: 'HDF_SORTDOWN' : undeclared identifier
C:\Documents and Settings\Ceria\Mes documents\listview\testliview\LVSort.cpp(256) : error C2664: 'HeapFree' : cannot convert parameter 3 from 'long' to 'void *'
Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
Error executing cl.exe.
Creating browse info file...
LVSort.exe - 3 error(s), 0 warning(s)
Alors j'ai mis en commentaire "HeapFree(heap, 0, lvi.lParam);" et j'ai rajouté:
#if (_WIN32_WINNT >= 0x501)
#define HDF_SORTUP 0x0400
#define HDF_SORTDOWN 0x0200
#endif
mais mon compilateur n'aime pas: "#if (_WIN32_WINNT >= 0x501)", il me signale:
c:\documents and settings\ceria\mes documents\listview\testliview\LVSort.cpp(6) : fatal error C1012: unmatched parenthesis : missing ')'
Error executing cl.exe.
Donc j'ai suprimé le #if et le #endif et j'ai laissé les #define.
Avec l'ajoût de ton aide, cela à marcher du premier coup. Mais l'affichage des flèches ne fonctionne pas, et je suis sous XP et vs6.
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 13 août 2004 à 19:38
J'imagine que tu as du refaire un nouveau projet (sans doute que tu as vs6). Il faut que tu ajoutes la librairie comctl32.lib, soit dans les options du projet, soit en ajoutant la directive
#pragma comment(lib, "comctl32.lib")
directement dans le fichier cpp pour dire au linker d'utiliser cette librairie.
cs_rangoon
Messages postés6Date d'inscriptionmardi 20 janvier 2004StatutMembreDernière intervention14 décembre 2005 13 août 2004 à 18:24
salut vecchio56.
J'essaye de comprendre commment programmer les listview.
Je compile ton source et j'obtient l'erreur suivante:
--------------------Configuration: LVSort - Win32 Debug--------------------
Compiling...
LVSort.cpp
Linking...
LVSort.obj : error LNK2001: unresolved external symbol __imp__InitCommonControlsEx@4
LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
merci d'avance de m'aider. A+
Debug/LVSort.exe : fatal error LNK1120: 2 unresolved externals
Error executing link.exe.
Creating browse info file...
LVSort.exe - 3 error(s), 0 warning(s)
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 4 juil. 2004 à 20:24
Pour InitCommonControlEx, il faudrait que tu télécherges la dernière version de MinGW. Ou bien bien télécharge le toolkit Visual C++ (compilateur de Visual C++ en ligne de commande, gratuit).
Pour le HeapFree, c'est un oubli, et c'est corrigé
gagah1
Messages postés509Date d'inscriptionsamedi 28 juin 2003StatutMembreDernière intervention 3 août 2010 4 juil. 2004 à 11:51
Source très interessante pour manipuler les ListView, 10/10.
Malheureusement je ne peux pas utiliser InitCommonControlEx(...) et ListView_SetExtendedListViewStyleEx(...) parce que j'utilise DevC++.
Juste une question, pourquoi tu as defini _WIN32_WINNT en 0x501(en 1ère ligne)??? et une remarque: est-ce normal (ou un oubli) que tu utilises HeapAlloc(...) sans HeapFree(...)? A+
5 mai 2008 à 16:40
Petite remarque: le 3ème paramètre de la fonction de comparaison (lParamSort) n'est pas utilisé dans ce code.
Il devrait être utilisé pour passer un pointeur vers une structure.
Il est judicieux de stocker dans cette dernière:
*Le numéro de la colonne
*L'ordre de tri à effectuer
*...autres (suivant l'application)
Cela permet de réduire l'utilisation de variables globales, et, en passant le numéro de la colonne, permet d'implémenter une unique fonction de tri.
12 sept. 2006 à 04:46
J'aimerais me servir du code pour les petites flèches dans un projet VB.NET.
Je ne suis pas sous Win XP mais si je regarde l'explorateur Windows de Win2000, les petites flèches, qui indiquent le sens du tri, y sont affichées.
Est-ce que quelqu'un sait comment s'y prendre ou est en mesure de me fournir un exemple?
Merci beaucoup!
4 juin 2006 à 19:51
4 juin 2006 à 19:47
4 juin 2006 à 19:45
28 nov. 2004 à 15:31
28 nov. 2004 à 15:29
26 nov. 2004 à 11:34
Pour ceux qui developpe sur dev-cpp et qui n'arrive pas a utiliser InitCommonControls, la suite vous interressera...
j'utilise dev cpp 4.9.9.0.
*D'abord mettre a jour dev:
dans dev cpp: menu "outils"-> "n. version/package"
et pour verifier les versions grace au
"package manager"
Windows32 API en version 3.1
gcc-core en 3.4.2....
gcc-g++ en 3.4.2....
gcc-objc en 3.4.2....
et MinGW runtime en 3.5
mettez a jour votre gnu make ca mange pas de pain, actuel 3.80.0-3
*Ensuite il faut lié la librairie utile comctl32.lib
du nom de libcomctl32.a sous devcpp
aucune ligne de commande a taper pour le fegniant que je suis, merci au developpeur,
menu "projet"->"option du projet"
->onglet "parametres"->bouton"ajouter fichier"
et puis allez chercher votre librairie libcomctl32.a
Apres le linkage de la lib la compil s'effectue
Je vous souhaite une bonne journée et une bonne prog:)
@++
22 nov. 2004 à 18:56
schade
thx
B.
22 nov. 2004 à 18:50
22 nov. 2004 à 16:52
le toolkit est pour 2003 si je lis bien
existe t'il une version pour VC6??
merci
++
Nono
18 août 2004 à 08:35
Aurai-je toutes les bibliothèques (*.h) à jour?
Pour le HeapFree, en utilisant un cast explicite, vs6 m'indique que "User breakpoint called from code at 0x77F667cd".
Et le message: "HEAP[LVSort.exe]: Invalid Address specified to RtlFreeHeap( 00140000, 00144790 )".
Par contre, quand j'utilise LVSort.exe (sans vs6), il n'y a aucune erreur. Je pense que c'est normal.
17 août 2004 à 11:52
#define HDF_SORTUP 0x0400
#define HDF_SORTDOWN 0x0200
à la place
Pour le HeapFree, le pb viens du fait que je compile en mode C (option /C à la place de /TC), donc il faut faire un cast explicite:
HeapFree(heap, 0, (void*)lvi.lParam);
17 août 2004 à 11:29
Et à la première ligne du fichier LVSort.cpp, j'ai bien
#define _WIN32_WINNT 0x501
16 août 2004 à 16:20
16 août 2004 à 16:19
#define _WIN32_WINNT 0x501
Vérifie que tu n'a pas enlevé cette ligne. Si ca ne marche toujours pas, dis le moi.
16 août 2004 à 09:38
Cela à marcher du premier coup. Mais l'affichage des flèches ne fonctionne pas, et je suis sous XP.
j'ai oublié de te signaler ces erreurs de compilation:
C:\Documents and Settings\Ceria\Mes documents\listview\testliview\LVSort.cpp(43) : error C2065: 'HDF_SORTUP' : undeclared identifier
C:\Documents and Settings\Ceria\Mes documents\listview\testliview\LVSort.cpp(151) : error C2065: 'HDF_SORTDOWN' : undeclared identifier
C:\Documents and Settings\Ceria\Mes documents\listview\testliview\LVSort.cpp(256) : error C2664: 'HeapFree' : cannot convert parameter 3 from 'long' to 'void *'
Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
Error executing cl.exe.
Creating browse info file...
LVSort.exe - 3 error(s), 0 warning(s)
Alors j'ai mis en commentaire "HeapFree(heap, 0, lvi.lParam);" et j'ai rajouté:
#if (_WIN32_WINNT >= 0x501)
#define HDF_SORTUP 0x0400
#define HDF_SORTDOWN 0x0200
#endif
mais mon compilateur n'aime pas: "#if (_WIN32_WINNT >= 0x501)", il me signale:
c:\documents and settings\ceria\mes documents\listview\testliview\LVSort.cpp(6) : fatal error C1012: unmatched parenthesis : missing ')'
Error executing cl.exe.
Donc j'ai suprimé le #if et le #endif et j'ai laissé les #define.
Avec l'ajoût de ton aide, cela à marcher du premier coup. Mais l'affichage des flèches ne fonctionne pas, et je suis sous XP et vs6.
13 août 2004 à 19:38
#pragma comment(lib, "comctl32.lib")
directement dans le fichier cpp pour dire au linker d'utiliser cette librairie.
13 août 2004 à 18:24
J'essaye de comprendre commment programmer les listview.
Je compile ton source et j'obtient l'erreur suivante:
--------------------Configuration: LVSort - Win32 Debug--------------------
Compiling...
LVSort.cpp
Linking...
LVSort.obj : error LNK2001: unresolved external symbol __imp__InitCommonControlsEx@4
LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
merci d'avance de m'aider. A+
Debug/LVSort.exe : fatal error LNK1120: 2 unresolved externals
Error executing link.exe.
Creating browse info file...
LVSort.exe - 3 error(s), 0 warning(s)
4 juil. 2004 à 20:24
Je pense qu'il y a moyen de l'utiliser avec dev-c++
4 juil. 2004 à 18:46
4 juil. 2004 à 17:01
#if (_WIN32_WINNT >= 0x501)
#define HDF_SORTUP 0x0400
#define HDF_SORTDOWN 0x0200
#endif
Pour InitCommonControlEx, il faudrait que tu télécherges la dernière version de MinGW. Ou bien bien télécharge le toolkit Visual C++ (compilateur de Visual C++ en ligne de commande, gratuit).
Pour le HeapFree, c'est un oubli, et c'est corrigé
4 juil. 2004 à 11:51
Malheureusement je ne peux pas utiliser InitCommonControlEx(...) et ListView_SetExtendedListViewStyleEx(...) parce que j'utilise DevC++.
Juste une question, pourquoi tu as defini _WIN32_WINNT en 0x501(en 1ère ligne)??? et une remarque: est-ce normal (ou un oubli) que tu utilises HeapAlloc(...) sans HeapFree(...)? A+