horizontaler Bildlauf



  • Ok

    ich habe Probleme mit dem Code zum erstellen des horizontalen Bildlaufes in der Listbox.

    Und zwar lese ich erst ein und dann will ich den Balken erstellen (in der OnInitD)

    Ich denke das es an den Variablen liegt aber wenn ich etwas ändere zeigt mir der compiler fehler an. und wenn ich es so lasse wird das Dlg mit der ListBox nicht geöffnet wegen eines Fehler (Speicherzugriff...)
    Hier mal der Code:

    CListBox* pBox = (CListBox*) GetDlgItem(IDC_LIST1);
    	CListBox* listbox;
    
    	CString str;
    	CSize sz;
    	int dx = 0;
    	CDC* pDC = listbox->GetDC();
    	CString file = "test.txt";
    	CString in = _T("");
    	CStdioFile pfad;
    
    	// Inhalt des Listenfeldes löschen
    	m_list.ResetContent();
    
    	if(pfad.Open(file,CFile::modeRead));
    	{
    		while(pfad.ReadString(in))
    		{
    			in.TrimRight();
    
    			if(in != _T(""))
    			{
    				pBox->InsertString(0,in +_T("\r\n"));
    			}
    
    		for(int i=0; i<listbox->GetCount(); i++)
    		{
    			listbox->GetText(i, str);
    			sz = pDC->GetTextExtent(str);
    
    			if(sz.cx > dx)
    			{	dx =sz.cx;}
    		}
    
    		listbox->ReleaseDC(pDC);
    		listbox->SetHorizontalExtent(dx);
    		}
    	}
    
    	pfad.Close();
    


  • listboxer schrieb:

    wenn ich es so lasse wird das Dlg mit der ListBox nicht geöffnet wegen eines Fehler (Speicherzugriff...)
    Hier mal der Code:

    CListBox* pBox = (CListBox*) GetDlgItem(IDC_LIST1);
    	CListBox* listbox;     ist nur ein Zeiger ins nichts...undefiniert.....
    Z.B.    CListBox* listbox = new(CListBox);
    
    	CString str;
    	CSize sz;
    	int dx = 0;
    	CDC* pDC = listbox->GetDC();  Speicherzugriff..... Fehler!!!
    	CString file = "test.txt";
    	CString in = _T("");
    	CStdioFile pfad;
    	
    
    	// Inhalt des Listenfeldes löschen
    	m_list.ResetContent();
    
    	if(pfad.Open(file,CFile::modeRead));
    	{
    		while(pfad.ReadString(in))
    		{
    			in.TrimRight();
    
    			if(in != _T(""))
    			{
    				pBox->InsertString(0,in +_T("\r\n"));
    			}
    	
    
    		
    
    		for(int i=0; i<listbox->GetCount(); i++)
    		{
                            // dein String steht in pBox->......
    			listbox->GetText(i, str);
    			sz = pDC->GetTextExtent(str);
    
    			if(sz.cx > dx)
    			{	dx =sz.cx;}
    		}
    
    		listbox->ReleaseDC(pDC);
    		listbox->SetHorizontalExtent(dx);
    		}
    	}
    
    	pfad.Close();
    


  • CListBox* pBox = (CListBox*) GetDlgItem(IDC_LIST1);
    
    	CString file = "test.txt";
    	CString in = _T("");
    	CStdioFile pfad;
    
    	// Inhalt des Listenfeldes löschen
    	m_list.ResetContent();
    
    	if(pfad.Open(file,CFile::modeRead));
    	{
    		while(pfad.ReadString(in))
    		{
    			in.TrimRight();
    
    			if(in != _T(""))
    			{
    				pBox->InsertString(0,in +_T("\r\n"));
    			}
    
    		CListBox* pBox = new(CListBox); 
    	CString str;
    	CSize sz;
    	int dx = 0;
    	CDC* pDC = pBox->GetDC();
    
    		for(int i=0; i<pBox->GetCount(); i++)
    		{
    			pBox->GetText(i, in);
    			sz = pDC->GetTextExtent(in);
    
    			if(sz.cx > dx)
    			{	dx =sz.cx;}
    		}
    
    		pBox->ReleaseDC(pDC);
    		pBox->SetHorizontalExtent(dx);
    		}
    	}
    
    	pfad.Close();
    

    so???

    zeigt immer noch den Fehler an



  • leider verstehe ich überhaupt nicht was du versuchts zu machen. 😕 😕 😕
    Beschreib doch mal was du vor hast, dann kann man dir helfen.

    PS: Du musst dich auch genauer durch die MSDN-Hilfe durchlesen. Dort steht eigendlich genau beschrieben was man mit welchen Func., Klassen, usw. machen kann und WIE man es machen kann.

    greets.



  • das problem hat sich erledigt.
    ich hatte den Teil

    ...
            CListBox* pBox = new(CListBox); 
    ...
    

    von dir einfach weggelassenund schon hat es gefunzt.

    Danke nochmal
    :xmas1: :xmas2:


Anmelden zum Antworten