Dialog reagiert nicht auf OnCancel
-
Hallo Leute,
ich habe folgende Funktion, die das Ende des Dialogs ergeben soll:
void CQuestDlg::OnButtonOk() { CDialog::OnCancel(); }eigentlich funzt das immer. Es ist ein Modaler Dialog, wenn ich aber im Debugger nach diesem Dialog bin, ist das Window immernoch da.
Was kann ich tun, bzw. welches Ende is korrekt?1) void CQuestDlg::OnButtonOk() { CDialog::OnCancel(); } 2) void CQuestDlg::OnButtonOk() { this->SendMessage(WM_CLOSE,0,0); } 3) void CQuestDlg::OnButtonOk() { this->OnCancel(); }ich habe die OnCancel() Funktion nicht überladen.
Viele Grüße & Danke,
Ranger
-
hast du es schon mit
EndDialog(IDCANCEL);versucht?
-
CDialog::OnCancel ruft EndDialog(IDCANCEL) auf.
Hast Du OnCancel überschrieben?
Hast Du ein evtl. einen ON_COMMAND Handler, der auf eine ID mit dem Wert 2 reagiert?
Was ist OnButtonOk? Der OK Button wird normalerweise über OnOK angesprochen...
-
Hallo zusammen,
mit EndDialog(IDCANCEL) habe ich es noch nicht versucht, werd ich gleich machen.
Ich habe keinen ON_COMMAND Handler. Der Button OK ist ein Button im Dialog der IDC_BUTTON_OK genannt ist, weil er eine Aktion abschließt. Die OnOK() Funktion habe ich extra überschrieben, damit ich die ENTER Taste bekomme. OnButtonOK() ist in dem Falle ne ganz normale Message Handler Funktion.
Vielen Dank für Eure tips, ich probier es aus.
Viele Grüße,
Ranger
-
Die EIngabetaste wird durch Behandlung des PreTranslateMessage Handlers extra abgefangen. Esist in jedem Fall falsch OnOK dafür zu überschreiben. Denn Du möchtest ja nur die Behandlung des Default Buttons vermeiden und das ist nicht unbedingt OnOk!