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]