SitemapInfoHomeTips und Tricks - Fenster zentrieren

Homepage

Software,
Download

Software-
entwicklung

  Tips und Tricks

Nachrichten-
technik

Internet

Aktuelles,
Sonstiges

Infos,
Kontakt

Sitemap


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 >> ]

TopHomepage » Softwareentwicklung » Tips und Tricks » Fenster zentrieren