Dialogfenster schliessen bei LButtonUp
-
Ich öffne über einen Button im meinem Programm ein zweites Dialogfenster.
In diesem öffne ich über ein .bmp mittels OnLButtonUp ein 3. Fenster
Nun soll gleichzeitig beim Öffnen des 3. Fensters, das 2. geschlossen werden.
Wie kann ich das machen ? Mit CDialog::OnCancel(); ?
Wo muss das hin ?
void C2Dlg::OnLButtonUp(UINT nFlags, CPoint point) { CRect rect; GetDlgItem(IDC_ABC)->GetWindowRect(&rect); ClientToScreen(&point); if (rect.PtInRect(point)) { C3Dlg dlg(this); dlg.DoModal(); } CDialog::OnLButtonUp(nFlags, point); }
-
öhm ... gib GetDlgItem(IDC_ABC) mal dem Steuerelement ne eigene Klasse
Und dann da auf die OnBnClicked odg ...und schließen kannst de mit nem EndDialog ...
-
Er kann dem Steuerelement ein Event Handler geben, das meintest du doch (D)Evil oder?

Aber das mit EndDialog könnte ich mir noch als schwierig vorstellen.
MSDN schrieb:
EndDialog does not close the dialog box immediately. Instead, it sets a flag that directs the dialog box to close as soon as the current message handler returns.
Und da er dazwischen noch DoModal aufruft, wird der Dialog doch nie beendet? Da wäre es wohl das sinnvollste ihn zuerst zu verstecken, ShowWindow(SW_HIDE) und danach das EndDialog.
Grüssli
-
also mit EndDialog scheint das nicht zu gehen

-
vielleicht SendMessage (WM_CLOSE, ... ?
-
Also so gehts. Aber ist das sauber ?
void C2Dlg::OnLButtonUp(UINT nFlags, CPoint point) { CRect rect; GetDlgItem(IDC_ABC)->GetWindowRect(&rect); ClientToScreen(&point); if (rect.PtInRect(point)) { [b]CDialog::OnCancel();[/b] C3Dlg dlg(this); dlg.DoModal(); } CDialog::OnLButtonUp(nFlags, point); }
-
? Du willst erst den eigenen Dialog schließen und dann modal zu diesem einen neuen erstellen? Was soll das werden?

-
Vielleicht gehts ja so:
Im zweiten Dialog, wenn Mausposition passt mit EndDialog(0xdeadbeef) rausgehen.
Im ersten Dialog dannif (C2dlg.DoModal() == 0xdeadbeef)
{
....
C3dlg.DoModal();
}
-
(D)Evil schrieb:
? Du willst erst den eigenen Dialog schließen und dann modal zu diesem einen neuen erstellen? Was soll das werden?

Pervers?
