Aero stil funktioniert nicht

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Annoxoli.

    Aero stil funktioniert nicht

    Hallo Liebes VB Paradise,
    Ich habe hier ein kleines Problemchen und zwar das sich in meine testform kein Aero einstellen lässt
    hier der code :

    1. VB.NET-Quellcode

      1. Imports System.Runtime.InteropServices
      2. Public Class Form1
      3. <StructLayout(LayoutKind.Sequential)>
      4. Public Structure MARGINS
      5. Public Right As Integer
      6. Public Left As Integer
      7. Public Top As Integer
      8. Public Bottom As Integer
      9. End Structure
      10. <DllImport("dwmapi.dll")> _
      11. Public Shared Function DwmExtendFrameIntoClientArea(ByVal hWnd As IntPtr, ByRef pMarinset As MARGINS) As Integer
      12. End Function
      13. Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
      14. Dim wtf As MARGINS = New MARGINS
      15. wtf.Left = -1
      16. wtf.Right = -1
      17. wtf.Top = -1
      18. wtf.Bottom = -1
      19. Dim hwnd As IntPtr = Handle
      20. Dim result As Integer = DwmExtendFrameIntoClientArea(hwnd, wtf)
      21. Me.BackColor = Color.Black
      22. End Sub
      23. End Class



    Ich Hoffe ihr könnt mir helfen
    Mfg Das Sorgen Kind
    Code-Fresser
    ist das zufällig ein code, womit die kompl. form durchsichtig wird ?

    C&P ohne zu wissen was man tut? cool. :thumbup: du bist ein echter programmierer. wahrscheinlich heulst du hinterher auch noch rum, wenn jemand dein zussamenkopiertes programm durch nen reflector jagt :D

    dieser code setzte eine hintergrundfarbe (schwarz) und verändert die clientarea der form. damit sie durchsichtig wird und aero funktioniert muss die transparencykey keigenschaft der form ebenfalls auf schwarz gestellt werden.
    hier, aber nur weil ich gute laune hab xD:

    VB.NET-Quellcode

    1. 'IMPORTS
    2. Imports System
    3. Imports System.Collections.Generic
    4. Imports System.ComponentModel
    5. Imports System.Drawing
    6. Imports System.Drawing.Drawing2D
    7. Imports System.Text
    8. Imports System.Windows.Forms
    9. Imports System.Runtime.InteropServices
    10. Imports System.Diagnostics
    11. Imports System.Drawing.Printing
    12. Imports System.Drawing.Text
    13. Private m_glassMargins As DwmApi.MARGINS
    14. Private Enum RenderMode
    15. None
    16. EntireWindow
    17. TopWindow
    18. Region
    19. End Enum
    20. Private m_RenderMode As RenderMode
    21. Private m_blurRegion As Region
    22. Public Sub New()
    23. InitializeComponent()
    24. m_RenderMode = RenderMode.None
    25. End Sub
    26. Protected Overloads Overrides Sub WndProc(ByRef msg As Message)
    27. MyBase.WndProc(msg)
    28. Const WM_DWMCOMPOSITIONCHANGED As Integer = 798
    29. Const WM_NCHITTEST As Integer = 132
    30. Const HTCLIENT As Integer = 1
    31. Select Case msg.Msg
    32. Case WM_NCHITTEST
    33. If HTCLIENT = msg.Result.ToInt32() Then
    34. Dim p As New Point()
    35. p.X = (msg.LParam.ToInt32() And 65535)
    36. p.Y = (msg.LParam.ToInt32() >> 16)
    37. p = PointToClient(p)
    38. If PointIsOnGlass(p) Then
    39. msg.Result = New IntPtr(2)
    40. End If
    41. End If
    42. Exit Select
    43. Case WM_DWMCOMPOSITIONCHANGED
    44. If Not DwmApi.DwmIsCompositionEnabled() Then
    45. m_RenderMode = RenderMode.None
    46. m_glassMargins = Nothing
    47. If m_blurRegion IsNot Nothing Then
    48. m_blurRegion.Dispose()
    49. m_blurRegion = Nothing
    50. End If
    51. End If
    52. Exit Select
    53. End Select
    54. End Sub
    55. Private Function PointIsOnGlass(ByVal p As Point) As Boolean
    56. Return m_glassMargins IsNot Nothing AndAlso (m_glassMargins.cyTopHeight <= 0 OrElse m_glassMargins.cyTopHeight > p.Y)
    57. End Function
    58. Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
    59. 'Hier wird gemalt
    60. If DwmApi.DwmIsCompositionEnabled() Then
    61. 'Aero ist aktiviert
    62. Select Case m_RenderMode
    63. Case RenderMode.EntireWindow
    64. 'ganzes Fenster
    65. 'schwarz wird zu Glas!
    66. e.Graphics.FillRectangle(Brushes.Black, Me.ClientRectangle)
    67. Exit Select
    68. Case RenderMode.TopWindow
    69. 'halbes Fenster
    70. e.Graphics.FillRectangle(Brushes.Black, Rectangle.FromLTRB(0, 0, Me.ClientRectangle.Width, m_glassMargins.cyTopHeight))
    71. Exit Select
    72. Case RenderMode.Region
    73. 'Region
    74. If m_blurRegion IsNot Nothing Then
    75. e.Graphics.FillRegion(Brushes.Black, m_blurRegion)
    76. End If
    77. Exit Select
    78. End Select
    79. 'Text weiß machen, weil schwarz zu Glas werden würde
    80. Using textBrush As New SolidBrush(Color.FromArgb(255, 255, 255, 255))
    81. e.Graphics.TextRenderingHint = TextRenderingHint.SingleBitPerPixelGridFit
    82. ' e.Graphics.DrawString("<TEXT>", Me.Font, Brushes.White, 15, 20)
    83. '321; 12
    84. '320; 234
    85. e.Graphics.DrawImage(My.Resources.wss, 321, 12, 320, 234)
    86. End Using
    87. Else
    88. 'Aero ist aus, alternatives Rendering erforderlich
    89. Using textBrush As New SolidBrush(Color.FromArgb(255, 0, 0, 0))
    90. e.Graphics.TextRenderingHint = TextRenderingHint.SingleBitPerPixelGridFit
    91. ' e.Graphics.DrawString("Aero ist aus, kann kein Glas machen!", Me.Font, textBrush, 10, 10)
    92. End Using
    93. End If
    94. End Sub
    95. Private Sub ResetDwmBlurBehind()
    96. If DwmApi.DwmIsCompositionEnabled() Then
    97. Dim bbhOff As New DwmApi.DWM_BLURBEHIND()
    98. bbhOff.dwFlags = DwmApi.DWM_BLURBEHIND.DWM_BB_ENABLE Or DwmApi.DWM_BLURBEHIND.DWM_BB_BLURREGION
    99. bbhOff.fEnable = False
    100. bbhOff.hRegionBlur = IntPtr.Zero
    101. DwmApi.DwmEnableBlurBehindWindow(Me.Handle, bbhOff)
    102. End If
    103. End Sub


    Für Form Load:

    VB.NET-Quellcode

    1. ResetDwmBlurBehind()
    2. m_glassMargins = New DwmApi.MARGINS(-1, 0, 0, 0)
    3. m_RenderMode = RenderMode.EntireWindow
    4. If DwmApi.DwmIsCompositionEnabled() Then
    5. DwmApi.DwmExtendFrameIntoClientArea(Me.Handle, m_glassMargins)
    6. End If
    7. Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.SizableToolWindow
    8. Me.Invalidate()


    müsste eigentlich funktionieren