1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
|
int nouvelItem(HWND treeView, int numCom)
{
TV_INSERTSTRUCT tviis;
int nombreDeFluxDsCom = 0;
char nomCom[NOMBRE_DE_COM_MAX][50] = {"Liste des flux", "com2"};
//Cette fonction est lancée pour chaque communication. Au début de la fonction, on insere donc dans la treeview
//l'identifiant (le lParam de cet item) est l'identifiant de la communication (le numéro de la com * 100)
tviis.hInsertAfter = TVI_LAST;
ZeroMemory(&(tviis.item), sizeof(TV_ITEM));
tviis.item.mask = TVIF_TEXT | TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_PARAM | TVIF_HANDLE | TVIF_STATE;
tviis.item.stateMask = TVIS_STATEIMAGEMASK;
tviis.hParent = TVI_ROOT;
tviis.item.iImage = 1;
tviis.item.iSelectedImage = 1;
tviis.item.lParam = (numCom+1)*100;//identifiant de la communication
tviis.item.pszText = nomCom[numCom];//nom de la communication
com[numCom] = TreeView_InsertItem(treeView, &tviis);//On insère le nouvel item dans la treeview
//printf("le handle du parent est %d\n", com[numCom]);
fluxCourant = premierFlux; //On positionne le pointeur sur le flux courant sur la premiere structure de notre liste chainee
do{//On parcours toute la liste chainee
if(fluxCourant == NULL)
{
return NULL;
}
if(fluxCourant->com_num == (numCom+1)*100)
{
printf("le handle du parent de ce flux est %d\n", com[numCom]);
printf("on rajoute des flux ds la treeview\n");
//On insère un item enfant pour chaque flux appartenant a la communication
tviis.hParent = com[numCom];//l'handle de l'item parent est dans l'une des cases de ce tableau
tviis.item.iImage = 2;
tviis.item.iSelectedImage = 1;
tviis.item.lParam = fluxCourant->id_flux;//L'identifiant de cet item est égal a celui du flux
tviis.item.pszText = fluxCourant->nom;//Son nom est le meme que celui du flux
hitem = TreeView_InsertItem(treeView, &tviis);//On insère le nouvel item dans la treeview
printf("infos sur le flux :\nid = %d\nnom = %s\nhandle=%dpayloadtype = %d\n",fluxCourant->id_flux, fluxCourant->nom, hitem, fluxCourant->payloadType);
//On incrémente le nombre de flux détecté pour cette communication
nombreDeFluxDsCom++;
}
fluxCourant = fluxCourant->fluxSuivant;//On passe au flux suivant
//On passe a la stucture suivante de la liste chainee jusqu'a ce que l'identifiant de communication
//de ce flux est identique a la communication en cours
while(fluxCourant != NULL && fluxCourant->com_num != (numCom+1)*100)
fluxCourant = fluxCourant->fluxSuivant;
}while(fluxCourant!= NULL);//Fin du while
return nombreDeFluxDsCom;
} |
Partager