Pointer auf CListCtrl



  • Hallo,
    ich versuche bei einer Auswahl eines Elementes aus einem CTreeCtrl automatisch den aktuell ausgewählten Datensatz anzeigen zu lassen.
    Ich weiß nicht, wie ich einen Zeiger auf das CListCtrl bekomme. Habe schon einige Zeit gelesen. Aber ich komm damit nicht wirklich weiter.
    Dieser Pointer wird dann an die Funktion TabelleAnzeigen übergeben. Diese funktioniert, weil sie an einer anderen Stelle während der Initialisierung aufgerufen wird und das macht was sie machen soll.

    void CLeftView::OnClick(NMHDR* pNMHDR, LRESULT* pResult) 
    {
    	// TODO: Code für die Behandlungsroutine der Steuerelement-Benachrichtigung hier einfügen
    
    	*pResult = 0;
    	int i,n;
    	HTREEITEM nodSelected;
    	CString strSelected;
    
    	HTREEITEM nodParent;
    	CString strParent;
    	CString filepath;
    	string filename;
    
             // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    	// Pointer auf ViewControl mit Namen ctrlList
             // Geht nicht !
             // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    	// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    
    	// Referenz auf TreeControl
    	CTreeCtrl &ctrlTree = this->GetTreeCtrl();
    
    	//Ausgewählten Eintrag ermitteln
    	nodSelected = ctrlTree.GetSelectedItem();
    
    	//Dateinamen auslesen
    	strSelected = ctrlTree.GetItemText(nodSelected);
    
    	strParent = "/";
    	for(i=0;strParent.IsEmpty()==0;i++)
    	{
    		if(i==0) 
    		{
    			nodParent = ctrlTree.GetParentItem(nodSelected);
    			strParent = ctrlTree.GetItemText(nodParent);
    			filepath = strSelected;
    		}
    		else 
    		{
    			nodParent = ctrlTree.GetParentItem(nodParent);
    			strParent = ctrlTree.GetItemText(nodParent);
    
    			if(strcmp(strParent,"IGBT")) n = 0;
    			if(strcmp(strParent,"Kühlkörper")) n = 1;			
    		}
    		filepath = strParent + "/" + filepath;
    	}	
    	filepath = "./Projekt" + filepath;
    	filename = filepath;
    
    	Ausgabe View(filename.c_str());
    	View.Auslesen(n);
    	View.TabelleAnzeigen(ctrlList,n);	
    }
    

  • Mod

    Normalerweise bautman die Views so, dass sie nichts voneinader wissen. Du kannst über UpdateAllViews die entsprechenden Informationen aus einem View an alle anderen Views verteilen.


Anmelden zum Antworten