#include /* Zentriert das angegebene Fenster */ /* innerhalb des Mutterfensters */ VOID CenterWindow(HWND hwndChild) { HWND hwndParent; RECT rcChild, rcParent; int cxChild, cyChild, cxParent, cyParent; int cxScreen, cyScreen, xNew, yNew; HDC hdc; /* Gibt es überhaupt ein Tochterfenster? */ if (hwndChild == NULL) return; /* Größe des Tochterfensters ermitteln */ GetWindowRect(hwndChild, &rcChild); cxChild = rcChild.right - rcChild.left; cyChild = rcChild.bottom - rcChild.top; /* Mutterfenster bestimmen */ hwndParent = GetParent(hwndChild); if (hwndParent == NULL) hwndParent = GetDesktopWindow(); /* Größe des Mutterfensters ermitteln */ GetWindowRect(hwndParent, &rcParent); cxParent = rcParent.right - rcParent.left; cyParent = rcParent.bottom - rcParent.top; /* Bildschirmausdehnung bestimmen */ hdc = GetDC(hwndChild); cxScreen = GetDeviceCaps(hdc, HORZRES); cyScreen = GetDeviceCaps(hdc, VERTRES); ReleaseDC(hwndChild, hdc); /* Neue Fensterposition unter Berücksichtigung */ /* der Bildschirmgröße ermitteln */ xNew = rcParent.left + ((cxParent - cxChild) / 2); if (xNew < 0) xNew = 0; else if ((xNew + cxChild) > cxScreen) xNew = cxScreen - cxChild; yNew = rcParent.top + ((cyParent - cyChild) / 2); if (yNew < 0) yNew = 0; else if ((yNew + cyChild) > cyScreen) yNew = cyScreen - cyChild; /* Tochterfenster an die neue Position verschieben */ SetWindowPos(hwndChild, HWND_TOP, xNew, yNew, 0, 0, SWP_NOSIZE | SWP_NOZORDER); }