Manipulation de base de liste box

Bason_sensei Messages postés 26 Date d'inscription mardi 6 septembre 2005 Statut Membre Dernière intervention 12 octobre 2005 - 9 sept. 2005 à 17:50
julienbj Messages postés 452 Date d'inscription jeudi 4 décembre 2003 Statut Membre Dernière intervention 19 décembre 2008 - 10 sept. 2005 à 12:05
Bonjour j'aimerai savoir les bases de la manipulation des listbox

j'ai deja mis des variable pour :
CString et CListBox.
ce que je demande est du niveaux debutant comme mettre dans une variable l'element selectionné etc ...
merci^^

2 réponses

vinc1008881 Messages postés 257 Date d'inscription dimanche 22 août 2004 Statut Membre Dernière intervention 29 septembre 2010 3
10 sept. 2005 à 10:57
>>fonction SendMessage ()
0
julienbj Messages postés 452 Date d'inscription jeudi 4 décembre 2003 Statut Membre Dernière intervention 19 décembre 2008 15
10 sept. 2005 à 12:05
/*************************************************************************************************

* Ajoute une chaine de caractère au listbox
classe dans l'ordre alphabétique si LB_SORT, mise a la fin du
listbox autrement *

*************************************************************************************************/

BOOL LISTBOXAddString(HWND list, char *string)

{

unsigned int error;



error = SendMessage(list, LB_ADDSTRING, 0, (LPARAM) string);

if (error LB_ERR || error LB_ERRSPACE)

return FALSE;

return TRUE;

}



/*********************************************************

* Insertion d'une chaine de caractère dans le listbox, à l'index demandé *

*********************************************************/

BOOL LISTBOXInsertString(HWND list, int index, char *string)

{

unsigned int error;



error = SendMessage(list, LB_INSERTSTRING, index, (LPARAM) string);

if (error LB_ERR || error LB_ERRSPACE)

return FALSE;

return TRUE;

}



/*****************************************

* Efface une ligne du listbox a partir de son index *

*****************************************/

BOOL LISTBOXDeleteString(HWND list, int index)

{

if (SendMessage(list, LB_DELETESTRING, index, 0) == LB_ERR)

return FALSE;

return TRUE;

}



/*******************************

* Efface tout le contenu d'un listbox *

*******************************/

void LISTBOXErase(HWND list)

{

SendMessage(list, LB_RESETCONTENT, 0, 0);

}



/*********************************************************************************

* Pour desactiver la mise a jour de l'affichage
si on ajoute plusieurs lignes entre chaque ligne ajoutee
*

*********************************************************************************/

void LISTBOXRedraw(HWND list, BOOL REDRAW)

{

SendMessage(list, WM_SETREDRAW, REDRAW, 0);

}



/************************************

* Renvoie le nombre d'element d'un listbox *

************************************/

unsigned int LISTBOXRetrieveNumberElement(HWND list)

{

return SendMessage(list, LB_GETCOUNT, 0, 0);

}



/**********************************************

* Selectionne un element du listbox a partir de son index *

**********************************************/

BOOL LISTBOXSetSelectedItem(HWND list, unsigned int index, BOOL MULTIPLECOLUMN)

{

if (MULTIPLECOLUMN)

{

if (SendMessage(list, LB_SETSEL, 1, index) == LB_ERR)

return FALSE;

}

else

{

if (SendMessage(list, LB_SETCURSEL, index, 0) == LB_ERR)

return FALSE;

}

return TRUE;

}



/***********************************************************************

* Recherche une chaine de caractère dans un
listbox et renvoie son index (plus selection) *

* Renvoie -1 si la chaine n'a pas ete
treouvée





*

***********************************************************************/

unsigned int LISTBOXFindString(HWND list, char *string)

{

return SendMessage(list, LB_SELECTSTRING, (WPARAM) -1, (LPARAM) string);

}



/**********************************************

* Renvoie l'index de l'element selectionné dans le listbox *

**********************************************/

unsigned int LISTBOXRetrieveIndexSelectedItem(HWND list)

{

return SendMessage(list, LB_GETCURSEL, 0, 0);

}



/**************************************************

* Renvoie la longeur de l'element d'index index dans le listbox *

**************************************************/

unsigned int LISTBOXLenItem(HWND list, unsigned int index)

{

return SendMessage(list, LB_GETTEXTLEN, index, 0);

}



/*******************************************************

* Renvoie la chaine de caractère associée à un index dans le listbox *

*******************************************************/

char *LISTBOXGetIndexText(HWND list, unsigned int index)

{

char *string;



if (index < 0 || index > LISTBOXRetrieveNumberElement(list))

return NULL;

string = (char*) malloc((LISTBOXLenItem(list, index) + 1) * sizeof(char));

if (SendMessage(list, LB_GETTEXT, index, (LPARAM) string) == LB_ERR)

return NULL;

return strdup(string);

}


Dans ces fonctions, tu trouveras de quoi gérer un minimum les listbox.

Pour aller plus loin, va voir dans MSDN les messages que l'on peut envoyer aux listbox.



Si ta listbox est créée dans une resource, pour en obtenir le handle (HWND) utilise la fonction GetDlgItem.



Les fonctions sont en C, à toi de les adapter pour les mettre en C++ si tu veux les utiliser.

Vive le C
Tchao
[mailto:julienbj@hotmail.com Savon]
0
Rejoignez-nous