home *** CD-ROM | disk | FTP | other *** search
- // =========================================================
- // C_DIALOG.CPP
- // Beispiel für die Zentrierung einer Dialogbox
-
- BOOL
- MyDialog::OnInitDialog()
- {
- // Initialisierung der Basisklasse
- VERIFY(CModalDialog::OnInitDialog());
-
- // Zeiger auf Parent Window holen
- CWnd* pParent = GetParent();
-
- // verschiedene benötigte Objecte instanzieren
- CRect rectDlg, rectParent, rectParentScreen;
-
- // Größe des Dialog-Windows in Bildschirmkoordinaten
- // ermitteln
- GetWindowRect(rectDlg);
-
- // Client-Koordinaten des Parent Window ermitteln
- pParent->GetClientRect(rectParent);
-
- // Screen-Koordinaten des Parent Window ermitteln
- pParent->GetWindowRect(rectParentScreen);
-
- // Berechnen des Offsets, den der Dialog von der
- // linken oberen Ecke des Parents in Screen-
- // Koordinaten haben soll
- CPoint ptOffsetFromParent;
- ptOffsetFromParent.x = (rectParent.Width() - rectDlg.Width()) / 2;
- ptOffsetFromParent.y = (rectParent.Height() - rectDlg.Height()) / 2;
-
- // Offset berechnen, den der Dialog zur oberen
- // linken Ecke des Parents hat
- CPoint ptOffsetToParent;
- ptOffsetToParent.x = rectParentScreen.left - rectDlg.left;
- ptOffsetToParent.y = rectParentScreen.top - rectDlg.top;
-
- // benötigten Offset ermitteln
- ptOffsetFromParent.Offset( ptOffsetToParent );
-
- // Zuvor ermitteltes Child Window um den soeben
- // ermittelten Vektor verschieben
- rectDlg.OffsetRect( ptOffsetFromParent );
-
- // Dialog zentrieren
- MoveWindow( rectDlg );
-
- return TRUE;
- };