Dynamisches Dropdownmenu



  • Hallo, ich habe mir über einen Dialog die Eigenschaften für ein Dropdownmenu festgelegt. Wie z.B. Höhe, Breite usw. Unter anderem auch die Einträge in der Liste. Wenn nun von meiner SDI Anwendung auf dei Dialog variable zugreifen will bekommen ich immer eine Fehlermeldung .
    Was mache verkehrt ?

    CDialog_ComboBox dlg;
    	if (dlg.DoModal() == 1)
    	{
    		if (pruefe_koordinaten(dlg.m_breite,dlg.m_hoehe))
    		{
    			m_combo[m_anzahl_combo].Create(CBS_DROPDOWN|WS_VISIBLE,CRect(m_x,m_y,m_x +dlg.m_breite,m_y + dlg.m_hoehe),this,ID_COMBO);
    			m_combo[m_anzahl_combo].EnableWindow(false);
    			m_anzahl_combo++;
    			if (m_anzahl_combo == m_max)
    				m_drop_menu = false;
    
    			schreibe_koordinaten(dlg.m_breite,dlg.m_hoehe);
    			CString eintrag;
    		TRACE("\n%i\n",dlg.m_vorschau.GetCount());
    			for (int i = 0; i < dlg.m_vorschau.GetCount(); i++)
    			{
    				TRACE("\n%i\n",i);
    				dlg.m_vorschau.GetLBText(i,eintrag);
    				m_combo[m_anzahl_combo].AddString(eintrag);
    			}
    		}
    	}
    


  • was mir da jetzt auffällt bzw gänzlich unverständlich ist
    warum ist die m_combo (also die CComboBox) ne array??
    du hast doch blos eine combobox auf dem dialog oder?

    ich habe mir über einen Dialog die Eigenschaften für ein Dropdownmenu festgelegt

    mfg
    LowFly



  • Nein habe ich auch nicht erwähnt . ich kann ca. 100 Boxen e3rstellen daher das Array.


  • Administrator

    1. Wo bekommst du die Fehlermeldung?
    2. Was für eine Fehlermeldung?
    3. Was sind das noch für Funktionen?

    Du hast doch inzwischen wirklich genügend Hilfefragen gestellt, um zu wissen, dass die Helfer mehr Infos brauchen. Es kommt eine Fehlermeldung, sagt einfach gar nichts aus. Kommt die Fehlermeldung im Compiler? Zur Laufzeit? Ist es ein Assert? Zeilennummer, Datei? An welcher Stelle im Code? Oder eine Speicherzugriffverletzung? Oder was auch immer?

    Grüssli



  • Ist ein Speicherzugriffsproblem, die restölichen Funktionen sind uninteressant und dienen lediglich der Darstellung.



  • basti_1984 schrieb:

    m_combo[m_anzahl_combo].Create(CBS_DROPDOWN|WS_VISIBLE,CRect(m_x,m_y,m_x +dlg.m_breite,m_y + dlg.m_hoehe),this,ID_COMBO);
    		m_combo[m_anzahl_combo].EnableWindow(false);
    		m_anzahl_combo++; // hier hochzählen
    
    ...
    
    		m_combo[m_anzahl_combo].AddString(eintrag); // ... und hier ins Klo greifen
    

    Mach doch mal das

    m_anzahl_combo++;
    

    hinter das

    m_combo[m_anzahl_combo].AddString(eintrag);
    

    Ausserdem bezweifle ich, dass es eine gute Idee ist, beim Create() immmer dieselbe ID für das Control zu nehmen.


Anmelden zum Antworten