begin process at 2012 05 27 21:11:54
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Application

 > UTILISATION DE LISTVIEW, TRIE DES ELEMENTS, ET STYLE XP

UTILISATION DE LISTVIEW, TRIE DES ELEMENTS, ET STYLE XP


 Information sur la source

Note :
9 / 10 - par 3 personnes
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Application Niveau :Initié Date de création :14/12/2004 Date de mise à jour :15/12/2004 14:51:36 Vu / téléchargé :10 425 / 805

Auteur : bobijoe

Ecrire un message privé
Commentaire sur cette source (7)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Ca y est j'ai decidé de mettre mon premier code, j'ai vu que les list view étaient un prob recurrent donc voili un petit code. J'ai essayé de faire simple, normalement tout est suffisamment commenté pour suivre le fil ;-).

le code en lui-meme :

-> Initialisation du controle list view
-> creation des colonnes
-> gestion des fleches sur les colonnes
-> ajout d'element
-> filtrage de la listview sur clique (colonne) (le filtrage est fait sans structure supplementaire :  la listview suffit)
-> Style XP (manifest inclut a l'exe -> c'est plus propre ;-))

Pour voir comment on met en place le style XP il suffit d'editer "res.rc" et de regarder a la fin du fichier. Ca devrait vous paraitre logique.

Sinon pour les fautes d'orthographe...dsl

voila hesitez pas a poser des questions si y a des trucs qui vous paraissent louche.

Source

  • #define _WIN32_WINNT 0x501 //Utile pour HDF_SORTUP et HDF_SORTDOWN
  • #include <windows.h>
  • #include <commctrl.h> //Pour les composants list_view
  • #pragma comment(lib,"comctl32.lib")
  • #include "resource.h"
  • static HINSTANCE hInst=NULL;
  • static HWND mainDlg=NULL; //Dialogue pricipale
  • void initListView(HWND hDlg)
  • //Initialise la list view
  • {
  • HWND hwndListView = GetDlgItem(hDlg,IDC_LIST_FICHIER);
  • LV_COLUMN lvColumn; //descripteur de colonne
  • lvColumn.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
  • lvColumn.fmt = LVCFMT_RIGHT;
  • lvColumn.cx = 80;
  • lvColumn.pszText = "Numero";
  • ListView_InsertColumn(hwndListView,0,(LPARAM)&lvColumn);
  • lvColumn.cx = 80;
  • lvColumn.pszText = "Chaine";
  • ListView_InsertColumn(hwndListView,0,(LPARAM)&lvColumn);
  • ListView_SetExtendedListViewStyleEx(hwndListView,0,LVS_EX_FULLROWSELECT|
  • LVS_EX_HEADERDRAGDROP);
  • }
  • void fillListView(HWND hDlg)
  • //Rempli la liste view par des lignes -> pas tres propre mais suffisant pour piger
  • {
  • //recuperation de la list
  • HWND hwndListView = GetDlgItem(hDlg,IDC_LIST_FICHIER);
  • //Initialisation de la Structure de la ListView
  • LVITEM LvItem;
  • LvItem.mask = LVIF_TEXT | LVIF_PARAM | LVIF_STATE;
  • LvItem.state = 0;
  • LvItem.stateMask = 0;
  • LvItem.iItem = 0; //numéro de l'item
  • LvItem.lParam = 0; //Sert lors d'un tri
  • LvItem.iSubItem = 0; //index dans la ligne
  • int itemPos = ListView_InsertItem(hwndListView,(LPARAM)&LvItem);
  • //Chaine
  • ListView_SetItemText(hwndListView,itemPos,0,"Texte");
  • //Chiffre
  • ListView_SetItemText(hwndListView,itemPos,1,"455");
  • itemPos = ListView_InsertItem(hwndListView,(LPARAM)&LvItem);
  • //Chaine
  • ListView_SetItemText(hwndListView,itemPos,0,"Texte2");
  • //Chiffre
  • ListView_SetItemText(hwndListView,itemPos,1,"2000");
  • itemPos = ListView_InsertItem(hwndListView,(LPARAM)&LvItem);
  • //Chaine
  • ListView_SetItemText(hwndListView,itemPos,0,"Texte4");
  • //Chiffre
  • ListView_SetItemText(hwndListView,itemPos,1,"200");
  • itemPos = ListView_InsertItem(hwndListView,(LPARAM)&LvItem);
  • //Chaine
  • ListView_SetItemText(hwndListView,itemPos,0,"_BlaBLUDI");
  • //Chiffre
  • ListView_SetItemText(hwndListView,itemPos,1,"400");
  • }
  • int CALLBACK CompareNumberFunc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
  • //Fonction de comparaison de chiffres
  • {
  • //Lecture des items
  • HWND hListView = GetDlgItem(mainDlg,IDC_LIST_FICHIER);
  • char chaineChiffre1[11];
  • ListView_GetItemText(hListView,lParam1,1,chaineChiffre1,11);
  • char chaineChiffre2[11];
  • ListView_GetItemText(hListView,lParam2,1,chaineChiffre2,11);
  • //Conversion des chaines en int
  • int chiffre1 = atoi(chaineChiffre1);
  • int chiffre2 = atoi(chaineChiffre2);
  • //Calcul du resultat
  • if( lParamSort == HDF_SORTUP ) //Trie croissant
  • {
  • if( chiffre1<chiffre2 )
  • {
  • return 1;
  • }
  • else
  • {
  • if( chiffre1==chiffre2 )
  • {
  • return 0;
  • }
  • else
  • {
  • return -1;
  • }
  • }
  • }
  • else //trie decroissant
  • {
  • if( chiffre1<chiffre2 )
  • {
  • return -1;
  • }
  • else
  • {
  • if( chiffre1==chiffre2 )
  • {
  • return 0;
  • }
  • else
  • {
  • return 1;
  • }
  • }
  • }
  • }
  • int CALLBACK CompareStringFunc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
  • //Fonction de comparaison de chaine de caracteres
  • {
  • //Lecture des items de la liste
  • HWND hListView = GetDlgItem(mainDlg,IDC_LIST_FICHIER);
  • char chaine1[1024];
  • ListView_GetItemText(hListView,lParam1,0,chaine1,1024);
  • char chaine2[1024];
  • ListView_GetItemText(hListView,lParam2,0,chaine2,1024);
  • //Resultat de la comparaison
  • int cmpResult = strcmp(chaine1,chaine2);
  • if( lParamSort == HDF_SORTUP )
  • {
  • cmpResult*=-1;
  • }
  • return cmpResult;
  • }
  • void OnListViewColumnClick(HWND hDlg,LPARAM lParam)
  • //Gestion de l'evenement de clique sur une colonne.
  • {
  • //Indique la collonne precedemment selectionnee
  • static int collonneSelectionne = -1;
  • static int sensTrie;
  • LPNMLISTVIEW pnmv = (LPNMLISTVIEW) lParam;
  • //Recuperation de l'header (pnmv->iSubItem contient le numero de la collone
  • cliquee)
  • HDITEM hdi;
  • hdi.mask = HDI_FORMAT;
  • HWND hListView = GetDlgItem(hDlg,IDC_LIST_FICHIER);
  • HWND header = ListView_GetHeader(hListView);
  • Header_GetItem(header, pnmv->iSubItem, &hdi);
  • if( collonneSelectionne!=-1 ) //Une colonne deja selectionnee
  • {
  • if( collonneSelectionne==pnmv->iSubItem ) //Meme colonne
  • {
  • if( sensTrie == HDF_SORTDOWN ) //Trie decroissant en cours
  • {
  • sensTrie = HDF_SORTUP; //inversion du trie
  • hdi.fmt &= ~HDF_SORTDOWN;
  • hdi.fmt |= HDF_SORTUP;
  • }
  • else //Trie croissant en cours
  • {
  • sensTrie = HDF_SORTDOWN; //inversion du trie
  • hdi.fmt &= ~HDF_SORTUP;
  • hdi.fmt |= HDF_SORTDOWN;
  • }
  • //On modifie l'header
  • Header_SetItem(header, pnmv->iSubItem, &hdi);
  • }
  • else //Colonne differente et donc raz de l'header
  • {
  • //Suppression de la fleche de trie
  • Header_GetItem(header, collonneSelectionne, &hdi);
  • hdi.fmt &= ~HDF_SORTUP & ~HDF_SORTDOWN;
  • Header_SetItem(header, collonneSelectionne, &hdi);
  • //On affiche la nouvelle fleche
  • collonneSelectionne = pnmv->iSubItem;
  • Header_GetItem(header, collonneSelectionne, &hdi);
  • hdi.fmt |= HDF_SORTDOWN;
  • sensTrie = HDF_SORTDOWN;
  • Header_SetItem(header, collonneSelectionne, &hdi);
  • }
  • }
  • else //Nouvelle collonne
  • {
  • collonneSelectionne = pnmv->iSubItem;
  • Header_GetItem(header, collonneSelectionne, &hdi);
  • hdi.fmt |= HDF_SORTDOWN;
  • sensTrie = HDF_SORTDOWN;
  • Header_SetItem(header, collonneSelectionne, &hdi);
  • }
  • //Lancement du trie
  • ListView_SortItemsEx(hListView,
  • collonneSelectionne==1?CompareNumberFunc:CompareStringFunc,
  • sensTrie);
  • }
  • LRESULT CALLBACK DlgMainProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
  • //Fonction de traitement de nos messages
  • {
  • switch(uMsg)
  • {
  • case WM_INITDIALOG: //Premier message recu avant affichage du dialogue
  • initListView(hDlg); //Initialisation des listviews
  • fillListView(hDlg); //Met des donnees dans la listview
  • return TRUE;
  • case WM_NOTIFY: //Notification d'evenement (ex: listview)
  • switch(wParam)
  • {
  • case IDC_LIST_FICHIER:
  • {
  • switch (((NM_LISTVIEW*)lParam)->hdr.code)
  • {
  • case LVN_COLUMNCLICK : //Evenement de clique
  • sur une colonne
  • OnListViewColumnClick(hDlg,lParam);
  • return TRUE;
  • }
  • }
  • }
  • case WM_COMMAND:
  • switch(wParam)
  • {
  • case WM_DESTROY:
  • case WM_CLOSE:
  • EndDialog(hDlg,0); //Fermeture du dialogue principal
  • PostQuitMessage(0); //Fin de l'application
  • return TRUE;
  • }
  • }
  • return FALSE;
  • }
  • int WINAPI WinMain( HINSTANCE hInstance,HINSTANCE hPrevInst,LPSTR lpCmdLine,
  • int nCmdShow)
  • //Point d'entree du programme
  • {
  • //Instance de notre appli
  • hInst = hInstance;
  • //Initialisation des controles utilises
  • INITCOMMONCONTROLSEX initControl;
  • initControl.dwSize = sizeof(initControl);
  • initControl.dwICC = ICC_LISTVIEW_CLASSES;//Classe a charger
  • InitCommonControlsEx(&initControl);
  • //Creation du dialogue principal
  • mainDlg=CreateDialog(hInstance,MAKEINTRESOURCE(IDD_MAIN),NULL,
  • (DLGPROC)DlgMainProc);
  • ShowWindow(mainDlg,SW_SHOW);
  • //traitement des messages
  • MSG msg;
  • while(GetMessage(&msg,NULL,0,0)==TRUE)
  • {
  • TranslateMessage(&msg);
  • DispatchMessage(&msg);
  • }
  • return 0;
  • }
#define _WIN32_WINNT			0x501 //Utile pour HDF_SORTUP et HDF_SORTDOWN

#include <windows.h>
#include <commctrl.h> //Pour les composants list_view
#pragma comment(lib,"comctl32.lib")

#include "resource.h"

static HINSTANCE hInst=NULL;
static HWND mainDlg=NULL; //Dialogue pricipale

void initListView(HWND hDlg)
//Initialise la list view
{
	HWND hwndListView = GetDlgItem(hDlg,IDC_LIST_FICHIER); 
	LV_COLUMN lvColumn; //descripteur de colonne
	lvColumn.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
	lvColumn.fmt = LVCFMT_RIGHT;
	lvColumn.cx = 80;
	lvColumn.pszText = "Numero";
	ListView_InsertColumn(hwndListView,0,(LPARAM)&lvColumn);
	lvColumn.cx = 80;
	lvColumn.pszText = "Chaine";
	ListView_InsertColumn(hwndListView,0,(LPARAM)&lvColumn);
	ListView_SetExtendedListViewStyleEx(hwndListView,0,LVS_EX_FULLROWSELECT|
                                              LVS_EX_HEADERDRAGDROP);
}

void fillListView(HWND hDlg)
//Rempli la liste view par des lignes -> pas tres propre mais suffisant pour piger
{
	//recuperation de la list
	HWND hwndListView = GetDlgItem(hDlg,IDC_LIST_FICHIER);

	//Initialisation de la Structure de la ListView
	LVITEM LvItem;
	LvItem.mask = LVIF_TEXT | LVIF_PARAM | LVIF_STATE;
	LvItem.state = 0; 
	LvItem.stateMask = 0;
	LvItem.iItem = 0; //numéro de l'item
	LvItem.lParam = 0; //Sert lors d'un tri	
	LvItem.iSubItem = 0; //index dans la ligne

	int itemPos = ListView_InsertItem(hwndListView,(LPARAM)&LvItem);
	//Chaine
	ListView_SetItemText(hwndListView,itemPos,0,"Texte");
	//Chiffre
	ListView_SetItemText(hwndListView,itemPos,1,"455");

	itemPos = ListView_InsertItem(hwndListView,(LPARAM)&LvItem);
	//Chaine
	ListView_SetItemText(hwndListView,itemPos,0,"Texte2");
	//Chiffre
	ListView_SetItemText(hwndListView,itemPos,1,"2000");

	itemPos = ListView_InsertItem(hwndListView,(LPARAM)&LvItem);
	//Chaine
	ListView_SetItemText(hwndListView,itemPos,0,"Texte4");
	//Chiffre
	ListView_SetItemText(hwndListView,itemPos,1,"200");


	itemPos = ListView_InsertItem(hwndListView,(LPARAM)&LvItem);
	//Chaine
	ListView_SetItemText(hwndListView,itemPos,0,"_BlaBLUDI");
	//Chiffre
	ListView_SetItemText(hwndListView,itemPos,1,"400");
}

int CALLBACK CompareNumberFunc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
//Fonction de comparaison de chiffres
{
	//Lecture des items
	HWND hListView = GetDlgItem(mainDlg,IDC_LIST_FICHIER);
	char chaineChiffre1[11];
	ListView_GetItemText(hListView,lParam1,1,chaineChiffre1,11);
	char chaineChiffre2[11];
	ListView_GetItemText(hListView,lParam2,1,chaineChiffre2,11);

	//Conversion des chaines en int
	int chiffre1 = atoi(chaineChiffre1);
	int chiffre2 = atoi(chaineChiffre2);

	//Calcul du resultat
	if( lParamSort == HDF_SORTUP ) //Trie croissant
	{
		if( chiffre1<chiffre2 )
		{
			return 1;
		}
		else
		{
			if( chiffre1==chiffre2 )
			{
				return 0;
			}
			else
			{
				return -1;
			}
		}
	}
	else //trie decroissant
	{	
		if( chiffre1<chiffre2 )
		{
			return -1;
		}
		else
		{
			if( chiffre1==chiffre2 )
			{
				return 0;
			}
			else
			{
				return 1;
			}
		}
	}
}

int CALLBACK CompareStringFunc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
//Fonction de comparaison de chaine de caracteres
{
	//Lecture des items de la liste
	HWND hListView = GetDlgItem(mainDlg,IDC_LIST_FICHIER);
	char chaine1[1024];
	ListView_GetItemText(hListView,lParam1,0,chaine1,1024);
	char chaine2[1024];
	ListView_GetItemText(hListView,lParam2,0,chaine2,1024);

	//Resultat de la comparaison
	int cmpResult = strcmp(chaine1,chaine2);
	if( lParamSort == HDF_SORTUP )
	{
		cmpResult*=-1;
	}

	return cmpResult;
}

void OnListViewColumnClick(HWND hDlg,LPARAM lParam)
//Gestion de l'evenement de clique sur une colonne.
{
	//Indique la collonne precedemment selectionnee
	static int collonneSelectionne = -1;
	static int sensTrie;

	LPNMLISTVIEW pnmv = (LPNMLISTVIEW) lParam;
												
	//Recuperation de l'header (pnmv->iSubItem contient le numero de la collone 
                          cliquee)
	HDITEM hdi;
	hdi.mask = HDI_FORMAT;
	HWND hListView = GetDlgItem(hDlg,IDC_LIST_FICHIER);
	HWND header = ListView_GetHeader(hListView);
	Header_GetItem(header, pnmv->iSubItem, &hdi);

	if( collonneSelectionne!=-1 ) //Une colonne deja selectionnee
	{
		if( collonneSelectionne==pnmv->iSubItem ) //Meme colonne
		{
			if( sensTrie == HDF_SORTDOWN ) //Trie decroissant en cours
			{
				sensTrie = HDF_SORTUP; //inversion du trie
				hdi.fmt &= ~HDF_SORTDOWN;
				hdi.fmt |= HDF_SORTUP;
			}
			else //Trie croissant en cours
			{
				sensTrie = HDF_SORTDOWN; //inversion du trie
				hdi.fmt &= ~HDF_SORTUP;
				hdi.fmt |= HDF_SORTDOWN;
			}

			//On modifie l'header
			Header_SetItem(header, pnmv->iSubItem, &hdi);
		}
		else //Colonne differente et donc raz de l'header
		{
			//Suppression de la fleche de trie
			Header_GetItem(header, collonneSelectionne, &hdi);
			hdi.fmt &= ~HDF_SORTUP & ~HDF_SORTDOWN;
			Header_SetItem(header, collonneSelectionne, &hdi);

			//On affiche la nouvelle fleche
			collonneSelectionne = pnmv->iSubItem;
			Header_GetItem(header, collonneSelectionne, &hdi);
			hdi.fmt |= HDF_SORTDOWN;
			sensTrie = HDF_SORTDOWN;
			Header_SetItem(header, collonneSelectionne, &hdi);
		}
	}
	else //Nouvelle collonne
	{
		collonneSelectionne = pnmv->iSubItem;
		Header_GetItem(header, collonneSelectionne, &hdi);
		hdi.fmt |= HDF_SORTDOWN;
		sensTrie = HDF_SORTDOWN;
		Header_SetItem(header, collonneSelectionne, &hdi);
	}

	//Lancement du trie
	ListView_SortItemsEx(hListView,
                                      collonneSelectionne==1?CompareNumberFunc:CompareStringFunc,
                                      sensTrie);
}

LRESULT CALLBACK DlgMainProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
//Fonction de traitement de nos messages
{
	switch(uMsg)
	{
	case WM_INITDIALOG: //Premier message recu avant affichage du dialogue
		initListView(hDlg); //Initialisation des listviews
		fillListView(hDlg); //Met des donnees dans la listview
		return TRUE;
	case WM_NOTIFY: //Notification d'evenement (ex: listview)
		switch(wParam)
		{
			case IDC_LIST_FICHIER:
			{
				switch (((NM_LISTVIEW*)lParam)->hdr.code)
				{
				case LVN_COLUMNCLICK : //Evenement de clique 
                                                                                                            sur une colonne
					OnListViewColumnClick(hDlg,lParam);
					return TRUE;
				}
			}
		}
	case WM_COMMAND:
		switch(wParam)
		{
		case WM_DESTROY:
		case WM_CLOSE:
			EndDialog(hDlg,0); //Fermeture du dialogue principal
			PostQuitMessage(0); //Fin de l'application
			return TRUE;
		}
	}
	return FALSE;
}
  
int WINAPI WinMain( HINSTANCE hInstance,HINSTANCE hPrevInst,LPSTR lpCmdLine,
int nCmdShow)
//Point d'entree du programme
{     
	//Instance de notre appli
	hInst = hInstance;

	//Initialisation des controles utilises
	INITCOMMONCONTROLSEX initControl;
	initControl.dwSize = sizeof(initControl);
	initControl.dwICC = ICC_LISTVIEW_CLASSES;//Classe a charger
	InitCommonControlsEx(&initControl);

	//Creation du dialogue principal
	mainDlg=CreateDialog(hInstance,MAKEINTRESOURCE(IDD_MAIN),NULL,
                                                              (DLGPROC)DlgMainProc);
	ShowWindow(mainDlg,SW_SHOW);
	
	//traitement des messages
	MSG msg;
	while(GetMessage(&msg,NULL,0,0)==TRUE)
	{
		TranslateMessage(&msg);
		DispatchMessage(&msg);
	}

	return 0;
}

 Conclusion

j'ai mis initié mais c pas du code tres difficile si on connait deja un peu la prog windows.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  •   Explorateur
    • Explorateur.ncbTélécharger ce fichier [Réservé aux membres club]68 608 octets
    • Explorateur.slnTélécharger ce fichier [Réservé aux membres club]Voir ce fichier911 octets
    • Explorateur.suoTélécharger ce fichier [Réservé aux membres club]8 704 octets
    • Explorateur.vcprojTélécharger ce fichier [Réservé aux membres club]3 558 octets
    • main.cppTélécharger ce fichier [Réservé aux membres club]Voir ce fichier7 286 octets
    • manifest.apsTélécharger ce fichier [Réservé aux membres club]1 196 octets
    • Manifest.xmlTélécharger ce fichier [Réservé aux membres club]Voir ce fichier622 octets
    • res.apsTélécharger ce fichier [Réservé aux membres club]18 928 octets
    • res.rcTélécharger ce fichier [Réservé aux membres club]Voir ce fichier2 446 octets
    • resource.hTélécharger ce fichier [Réservé aux membres club]Voir ce fichier492 octets
    •   Release
      • Explorateur.exeTélécharger ce fichier [Réservé aux membres club]25 600 octets

Télécharger le zip


 Historique

14 décembre 2004 22:03:22 :
correction orthographe...
14 décembre 2004 22:08:02 :
retouche screenshot et affichage main.cpp
15 décembre 2004 14:47:53 :
Ajout de l'exe au zip
15 décembre 2004 14:51:40 :
...

 Sources de la même categorie

Source avec Zip Source avec une capture PROGRAMME DE SUDOKU par AffreuxJojp
Source avec Zip EVALUATEUR D'EXPRESSION ARITHMÉTIQUE par matrx180vTitanium
Source avec Zip Source avec une capture QBIBLIO GESTION DES PRÊTS par conatic
Source avec Zip Source avec une capture QL-CHATROOM V 1.0 par mature
Source avec Zip Source avec une capture GEOLOCALISATION par ganjarasta

Commentaires et avis

Commentaire de Urgo le 15/12/2004 00:08:10

A l'avenir laisse seulement le fichier exe dans le dossier "Release".

Source similaire posté par vecchio56 récemment :
=> http://www.cppfrance.com/code.aspx?ID=24239

Sinon j'ai rien de particulier à dire sur le code, tout me semble  correct :)

Commentaire de bobijoe le 15/12/2004 10:27:56

C'est vrai que ca ressemble, mais le fichier manifest est intégré à l'executable, les tries sur la liste n'on pas besoin d'une structure (allocation mémoire).

Le code est plutot simple donc facile d'acces au débutant.

enfin ca repond a des questions que on voit souvent sur le forum...

Commentaire de magic_Nono le 15/12/2004 12:09:01

bj

bienvenu parmis nous
voilà effectivement un code plutot sympa et standart

pourrais tu stp
décrire la méthode incluant le manifest a l'exe ?
et nous dire si cela ne crée pas de pb si le prog est utilisé sous des versions antérieurs de windows.

Merci
magicalement
Nono.

Commentaire de bobijoe le 15/12/2004 14:44:54

Salut,

Alors pour inclure le manifest a l'exe :
suffit de creer un fichier par exemple "manifest.xml" que tu inclus a ton projet, ensuite il faut modifier "res.rc" ou alors inclure un ressource dans ton projet. Dans cette ressource tu ajoutes la ligne suivante a la fin :
1 24 "manifest.xml" (1 et 24 sont des constantes reconnues par windows, 24 etant le type RT_MANIFEST).

Ensuite il faut remplir ton fichier manifest.xml des control dont tu as besoin ex :
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity name="Unknown" processorArchitecture="x86" version="1.0.0.0" type="win32"/>
<description>un ptit blabla</description>
<dependency>
    <dependentAssembly>
        <assemblyIdentity
            type="win32"
            name="Microsoft.Windows.Common-Controls"
            version="6.0.0.0"
            processorArchitecture="x86"
            publicKeyToken="6595b64144ccf1df"
            language="*"
        />
    </dependentAssembly>
</dependency>
</assembly>


et voila aprés c'est VS qui fait le boulot

Normalement il n'y a pas de prob pour les versions antérieures de windows, en fait si le control dont tu as besoin n'existe pas en version 6(dans le cas des commons control), windows utilise la version 5. Il faut seulement utiliser des fonctions qui sont compatibles sur ces deux versions.

J'espere que je reponds a ta question ?

A+

Commentaire de vecchio56 le 15/12/2004 18:59:43 administrateur CS

magic_Nono>
http://www.cppfrance.com/code.aspx?id=11362

Commentaire de magic_Nono le 15/12/2004 19:34:39

excellent, merci Vecchio

Commentaire de magic_Nono le 15/12/2004 19:40:15

merci également a toi pr cette réponse bobijoe

je testerai ceci d'ic qq tps

++

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,390 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales