Suche in einem CListCtrl



  • In meiner View-Klasse (CRecordView) habe ich eine CListCtrl mit 3 Spalten (Nr., Programm, Zugriffsberechtigung). Nun möchte ich über ein Dialogfeld die Möglichkeit haben, weitere Programme und Berechtigungen in das Listcontrol hinzuzufügen. Im Dialogfeld stehen dafür 2 Comboboxen zur Verfügung. Nun möchte ich aber beim Initialisieren des Dialogs in den Comboboxen nur die Einträge reinschreiben, die noch nicht im Listcontrol stehen. Meine Idee war jetzt, im Listcontrol nach dem Eintrag zu suchen und falls noch nicht vorhanden dann auch die entsprechende Eintragung in der Combobox zu machen. Ich habe folgenden Codeschnipsel zur Suche gefunden:

    bool CMyDialog::FindItemInList(CString Suche)
    {
    	CMyView* pView = (CMyView*)((CMainFrame*)AfxGetMainWnd())->GetActiveView();
    	ASSERT(pView);
    
    	LVFINDINFO info;
    
    	info.flags = LVFI_PARTIAL|LVFI_STRING;
    	info.psz = (LPCWSTR)Suche;
    
    	if (pView->m_MyList.FindItem(&info)==-1)
    	{
    		return false;
    	}
    	else
    	{
    		return true;
    	}
    
    }
    

    Das Problem ist nur, dass FindItem immer -1 zurück gibt. Was mach ich da falsch?


  • Mod

    Weil dieserr brutalo cast evtl. nicht geht?

    info.psz = (LPCWSTR)Suche;
    

    Warum verwendest Du nicht einfach :

    info.psz = Suche;
    

    Solche casts sind in 99% aller Fälle unnötig!



  • Martin Richter schrieb:

    Weil dieserr brutalo cast evtl. nicht geht?

    info.psz = (LPCWSTR)Suche;
    

    Warum verwendest Du nicht einfach :

    info.psz = Suche;
    

    Solche casts sind in 99% aller Fälle unnötig!

    Ja ok, das hab ich übersehen. Man sollte bei Copy And Paste auch den Kopf einschalten. Aber dennoch ist das Problem nicht gelöst. FindItem gibt immer noch -1 zurück. Ebenso wenn ich info.psz direkt mit einem Wert belege.


Log in to reply