ERLEDIGT
NEIN
NEIN
ANTWORTEN
3
3
ZUGRIFFE
466
466
EMPFEHLEN
-
25.05.07 07:07 #1
- Registriert seit
- Feb 2007
- Beiträge
- 22
Hallo,
zur besseren hierarchischen Übersicht habe ich ein Dialog auf einem DIalog eingefügt.
Der "innere" Dialog ist eine eigene Klasse.
Im äußeren Dialog binde ich ihn mit
m_inner.Create(IDD...,this)
m_inner.MoveWindow(xy)
m_inner.ShowWindow(SW_SHOW)
ein
Das ganze funktioniert wunder bar, solange ich nicht die Enter Taste drück, wenn ich in einem Eingabefeld im inneren Dialog bin. Dann verschwindet er nämlich komplett und ich seh die freie Fläche vom äußeren Dialog.
Meine Vermutung ist, dass der innere Dialog geschlossen wird, da man standardmäßig ja jeden Dialog durch Enter beendet.
Meine Frage:
Wie unterdrücke ich das? Welche Nachricht fängt die Enter Taste ab? Gibt es eine saubere Lösung um einen Dialog in einem Dialog anzuzeigen?
Danke!
-
Du kannst die RETURN- und ESC-Taste (bei letzterer geht der Dialog nämlich auch zu) in "PreTranslateMessage" abfangen:
Ansonsten ist deine Lösung schon der dafür übliche Weg. Was "Saubereres" gibt es meines Wissens nicht.Code cpp:1 2 3 4 5 6 7 8 9 10 11 12
BOOL CInnererDialog::PreTranslateMessage(MSG* pMsg) { if( pMsg->message == WM_KEYDOWN ) { if( pMsg->wParam == VK_ESCAPE || pMsg->wParam == VK_RETURN ) { return TRUE; } } return CDialog::PreTranslateMessage(pMsg); }
Gruß
MCoder"The three chief virtues of a programmer are: Laziness, Impatience and Hubris."
--- Larry Wall
-
25.05.07 17:44 #3
- Registriert seit
- Feb 2007
- Beiträge
- 22
Vielen Dank!
ich geh einfach mal davon aus, dass wenn ich zb ein ListElement auf dem inneren Dialog habe und eine Funktion ausführen möchte, wenn Enter gedrückt wird, dass das dann auch in der PreTranslate verarbeitet wird.
-
Die CDialog-Klasse bietet OnOK und OnCancel als virtuelle Funktionen an. Die werden "dummerweise" bereits mit der Funktionalität des Dialog-Beendens versehen. Um das bei einer von CDialog abgeleiteten Klasse zu verhindern, einfach die beiden Funktionen überladen und den Aufruf von CDialog::OnOk bzw. CDialog::OnCancel entfernen.
Ähnliche Themen
-
Dialog aus Dialog heraus öffnen
Von sTEk im Forum .NET Windows FormsAntworten: 3Letzter Beitrag: 08.12.08, 22:07 -
[C++] Zugriff auf Dialog aus anderem Dialog
Von JoachimJogi im Forum VisualStudio & MFCAntworten: 7Letzter Beitrag: 20.02.07, 17:06 -
Strings von Dialog A nach Dialog B übertragen
Von king_of_drums im Forum C/C++Antworten: 13Letzter Beitrag: 30.08.06, 13:45 -
Strings von Dialog A nach Dialog B übertragen
Von king_of_drums im Forum Visual Basic 6.0Antworten: 3Letzter Beitrag: 15.08.06, 13:47 -
Nachricht von einem Dialog zu modalen, geöffneten 2. Dialog schicken
Von gehrti im Forum VisualStudio & MFCAntworten: 5Letzter Beitrag: 24.05.05, 12:49





Zitieren
Login






