Diese
Funktion zentriert ein 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);
}
[ center.c ]
[ <<
Vorheriger ] [ Übersicht ]
[ Nächster
>> ]
|