Keine Benachrichtigung bei klicks im Formview
-
Hallo,
ich bin dabei eine GUI mit Hilfe der MFC zu erstellen.
Ich habe bereits ein Fenster basierend auf der Doc/View erstellt und mehrere von CFormView abgeleitete Views erstellt.
Den wechsel der Views über das Menu habe ich bereits eingerichtet, also wenn verschieden Menupunkte angewählt werden wird der entsprechende View angezeigt.
Nun hätte ich aber gerne, dass auch über Schaltflächen in den einzelnen Views die Ansicht geändert werden kann.
Hierzu habe ich auf einem View Elemente plaziert und jeweils Ereignishandler hinzugefügt. Der entsprechende Code wird erstellt, die MessageMaps erweitert, aber es scheint, dass die verknüpften Funktionen (OnBtnClick, etc.) niemals aufegrufen werden. Dies ist unabhängig davon, ob ich die Behandlung in der Klasse des Views oder der MainFrame-Klasse abwickeln möchte.
Hilfsweise eingefügte TRACEs werden niemals angezeigt.Die Frage ist nun, ob mir jemand einen Tip geben kann, an welcher Stelle ich evtl. etwas vergessen habe, oder wo der Fehler liegen könnte.
Codeausschnitte:
MainFrm.cpp (Message-Map und Funktion)BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd) . . ON_BN_CLICKED(IDC_SELECT_RADIO_NEU, &CMainFrame::OnBnClickedSelectRadioNeu) . . END_MESSAGE_MAP()void CMainFrame::OnBnClickedSelectRadioNeu() { TRACE("Radiobutton NEU geklickt\n"); }
-
webermichl schrieb:
Hallo,
ich bin dabei eine GUI mit Hilfe der MFC zu erstellen.
Ich habe bereits ein Fenster basierend auf der Doc/View erstellt und mehrere von CFormView abgeleitete Views erstellt.
Den wechsel der Views über das Menu habe ich bereits eingerichtet, also wenn verschieden Menupunkte angewählt werden wird der entsprechende View angezeigt.
Nun hätte ich aber gerne, dass auch über Schaltflächen in den einzelnen Views die Ansicht geändert werden kann.
Hierzu habe ich auf einem View Elemente plaziert und jeweils Ereignishandler hinzugefügt. Der entsprechende Code wird erstellt, die MessageMaps erweitert, aber es scheint, dass die verknüpften Funktionen (OnBtnClick, etc.) niemals aufegrufen werden. Dies ist unabhängig davon, ob ich die Behandlung in der Klasse des Views oder der MainFrame-Klasse abwickeln möchte.
Hilfsweise eingefügte TRACEs werden niemals angezeigt.Die Frage ist nun, ob mir jemand einen Tip geben kann, an welcher Stelle ich evtl. etwas vergessen habe, oder wo der Fehler liegen könnte.
Codeausschnitte:
MainFrm.cpp (Message-Map und Funktion)BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd) . . ON_BN_CLICKED(IDC_SELECT_RADIO_NEU, &CMainFrame::OnBnClickedSelectRadioNeu) . . END_MESSAGE_MAP()void CMainFrame::OnBnClickedSelectRadioNeu() { TRACE("Radiobutton NEU geklickt\n"); }Sicher das es
ON_BN_CLICKED(IDC_SELECT_RADIO_NEU, &CMainFrame::OnBnClickedSelectRadioNeu)heißen soll? Lass mal das & weg
-
Hallo,
danke für die Antwort, aber daran liegts wohl nicht.Kann es irgendwie sein, dass ich das erste angezeigte FormView noch irgendwie aktivieren muss?
Wenn ich per Menu auf ein anderes umschalte und dann dort einen Button klicke wird die zur Nachricht gehörende Funktion ausgeführt.
-
Wie soll das gehen.
Das CMainFrame bekommt nicht die Notifications der Controls sondern das CFormView, dass die Controls beherbergt.
Menü-IDs können geroutet werden.
-
Dankeschön, das macht Sinn, zerstört aber leider meine Hoffnung auf einen einfache WEiterkommen.
Dann würde sich die Frage stellen: wie kann ich es denn realisieren, bei bestimmten Änderungen im FormView das CMainFrame davon zu informieren? Bzw. überhaupt die Änderung aus dem FormView heraus zu bekommen?
Dankeschön, Michael