Windows Aero auch bei FormBorderStyle = None nutzen

    • VB.NET

    Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von MAANTECH.

      Windows Aero auch bei FormBorderStyle = None nutzen

      Danke an bigbasti für diese Lösung, ich hab den Code nur von C# nach VB.NET übersetzt.
      Den Originalcode findet ihr, wenn ihr den Link oben anklickt.

      Die beiden benötigten DLLs:

      VB.NET-Quellcode

      1. <System.Runtime.InteropServices.DllImport("dwmapi")> _
      2. Private Shared Function DwmEnableBlurBehindWindow(ByVal hWnd As System.IntPtr, ByRef pBlurBehind As DWM_BLURBEHIND) As Integer
      3. End Function
      4. <System.Runtime.InteropServices.DllImport("gdi32.dll")> _
      5. Private Shared Function CreateRectRgn(ByVal x1 As Integer, ByVal y1 As Integer, ByVal x2 As Integer, ByVal y2 As Integer) As IntPtr
      6. End Function


      Die DWM_BLURBEHIND-Structure:

      VB.NET-Quellcode

      1. Public Structure DWM_BLURBEHIND
      2. Public dwFlags As Integer
      3. Public fEnable As Boolean
      4. Public hRgnBlur As IntPtr
      5. Public fTransitionOnMaximized As Boolean
      6. End Structure


      Der Code, der beim Form_Load-Event ausgeführt werden soll:

      VB.NET-Quellcode

      1. Dim dbb As DWM_BLURBEHIND
      2. dbb.fEnable = True
      3. dbb.dwFlags = 1 Or 2
      4. dbb.hRgnBlur = CreateRectRgn(0, 0, Me.Width, Me.Height)
      5. dbb.fTransitionOnMaximized = True
      6. DwmEnableBlurBehindWindow(Me.Handle, dbb)


      Wenn ihr die Anwendung nun startet, seht ihr eine andere Art von Aero als sonst in WinForms. ;)
      Beim Vergrößern der Form seht ihr allerdings, dass nur ein Rechteck als Aero dargestellt wird, das ist normal und wird durch die Zeile

      VB.NET-Quellcode

      1. dbb.hRgnBlur = CreateRectRgn(0, 0, Me.Width, Me.Height)

      zustande gebracht.
      Löscht die einfach, wenn die Form in der Größe änderbar sein soll.
      Das funktioniert natürlich nur unter Vista und 7.

      Wie immer gilt: Lesen, verstehen und erst dann benutzen ;)
      Du müsstest noch erwähnen, dass der ganze Zauber nur geht, wenn die Form einen schwarzen Hintergrund hat, bevor Kiddies kommen un dsagen "w0 mu$s ich dän C0dE kopiErEn????!! G33t niicht!" (Sprache angepasst, Anm. d. Autors) ^^

      Gruss
      Pascal

      Samus Aran schrieb:

      Wer sich schonmal mit Aero beschäftigt hat
      Nur wollen die Leute hier etwas über das AeroDesign lernen, wenn sie sich noch nicht so sehr mit AeroDesign beschäftigt haben. Jedoch gibt es eben Leute die wirklich LERNEN wollen und andere, die nur C&P, am besten noch mit jedem einzelnen Enterschlag und Mausklick.
      Somit wäre das wirklich noch eine wichtige Grundvoraussetzung, die BackColor Eigenschaft der jeweiligen Form und/oder des jeweiligen (Container-)Controls auf Schwarz zu stellen ;)


      Gruss
      Pascal

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „PascalN“ ()