LVM_FINDITEM geht nicht, aber selberngebastelt funktioniert, warum?



  • ok was ich möchte -> item in listview finden und löschen.

    hier der Code der nicht geht:

    static LVFINDINFO	lv_item;
    	int			index;
    
    	memset (&lv_item, 0, sizeof(lv_item));					//weglassen bringt auch nichts
    	lv_item.flags = LVIF_PARAM;
    	lv_item.lParam = check;							//check ist bekannt
    	index = SendMessage(Fenster_1, LVM_FINDITEM, (WPARAM)(int)-1, (LPARAM)&lv_item);
    //	index = ListView_FindItem(Fenster_1, -1, &fitem);				//geht auch net, liefert nur -1, genau wie obere Zeile
    	if(index != -1){
    		SendMessage(Fenster_1, LVM_DELETEITEM, (WPARAM)(int)index, 0);
    	}
    

    so hier meine selberngebastelte Suchfunktion und die funktioniert:

    LVITEM		lv_item;
    	int		 i;
    
    	for(i = 0; i < item_anzahl; i++){						//item_anzahl ist bekannt
    		memset (&lv_item, 0, sizeof(lv_item));
    		lv_item.iItem = i;
    		lv_item.iSubItem = 0;
    		lv_item.mask = LVIF_PARAM;
    		SendMessage(Fenster_1, LVM_GETITEM, 0, (LPARAM)(LPLVITEM)&lv_item);
    		if(lv_item.lParam == check){					//check ist bekannt
    			SendMessage(Fenster_1, LVM_DELETEITEM, (WPARAM)(int)i, 0);
    			break;
    		}
    	}
    

    eigentlich sollten beide Proceduren das Gleiche machen aber die erste gibt mir immer nur -1 als gefundenen Item zurück, was mach ich falsch, ich sehs leider nicht. Ich dachte ich nehm die von Winapi weil die warscheinlich schneller ist als meine selbern geschriebene



  • push



  • Jo danke es geht jetzt



  • Bitte.

    ~_________________
    #%&$§§!!! Lern C++!~


Anmelden zum Antworten