ComboBox verknüpfen, bzw. Ereignis auslösen

untread

Erfahrenes Mitglied
Hallo,

ich versuche gerade eine ComboBox, die sich auf einem Nichtmodalen Dialogfeld befindet, mit der View Klasse zu verbinden nur funktioniert der OnEditchangeMeasure () nicht wirklich

Hab das ausgetestet indem ich einfach mit ner MessageBox probiert hab ob sich da was ändert aber da rührt sich nicht.

Ich müsste die eingestellte Variable des Nichtmodalen DIalogfelds mit der View OnDraw verbinden.

Grundsätzlich müsste ich nur die m_sMeasure Variable der Combobox übergeben aber da ja nicht wirklich was gedrückt wird ist mir jetzt nicht klar wie ich das ohne Button der View mitteile.

Hier ist ein Screenshot...
Es handelt sich im obersten DIalogfeld um die Combo Box mit der Membervariable m_sMeasure die eben die Anzeige des Diagrammes (in der View erzeugt) ändern soll (Temperatur, Luftfeuchtigkeit, Lichtstärke)
http://www.inrion.com/screen1.gif

danke
mfg Harry
 
Hi,
ich denke, es gibt zwei Möglichkeiten:
1. Du schaffst dir in deiner Doc-Klasse eine Variable, in die du den Wert der Combo-Box kopierst. Anschließend Invalidate() aufrufen (im nichtmodalen Dialog) und diese Variable in OnDraw() auswerten.
2. Du beschaffst dir in der View einen Zeiger auf die MainFrame-Klasse. Mit diesem Zeiger kannst du dir einen Zeiger auf deinen Dialog holen (über die ID) und damit direkt die Variable auslesen.

Mfg

langer
 
Hallo,

danke mal für die Vorschläge aber das will nicht so recht klappen:
In der View.cpp
Code:
	CMainFrame* pFrame = (CMainFrame*) AfxGetMainWnd();
	m_sMeasure = pFrame->m_sMeasure;

Und in der MainFrame wurde m_sMeasure als CString deklariert...

Im Debugger meint er "...kann nicht ausgewertet werden"

Ne Idee was daran nicht stimmt?

mfg Harry
 
Hi, so kann das auch nicht gehen. Du mußt dir erst einen Zeiger auf deinen Dialog holen, damit du die Variable auswerten kannst.

Versuchs doch mal so:
Code:
   CMainFrame* pMainFrame=(CMainFrame*)GetParentFrame();
    //Zeiger auf Hauptfenster
   CMyDialog* pDlg=(CMyDialog*)pMainFrame->GetDescendantWindow(ID_MYDIALOG);
    //Zeiger auf meinen Dialog holen
   if(pDlg->m_sMeasure==dieserWert)
    {
       tue das....
    }

Mfg

langer
 
Hallo, danke mal für Antwort, jedoch haut das noch nicht hin, den es kommt wiederum folgende Fehlermeldung wenn ich das Programm ausführen möchte (bzw. es hängt sich auf aber diese Zeilen stehen im Debugger):

m_sMeasure CXX0030 Fehler: Ausdruck kann nicht ausgewertet werden
pDlg hat den Wert 0x00000000 und ist rot gekennzeichnet.

Bereits beim Pointer auf die MainFrame Klasse in Zeile 1 steht die Adresse 0xcccccccc drinnen mit Fehlermeldung für h_wndStatus und h_wndToolbar

mfg harry
 
Zuletzt bearbeitet:
Hmm, der Code ist doch in der View-Klasse oder habe ich das falsch verstanden?
Mit der Funktion AfxGetMainWnd() gibt's einen gültigen Zeiger?

Mfg

langer
 
Zurück