Fehler bei AppBar: Appbar an der Falschen Position

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von MAAN10.

    Fehler bei AppBar: Appbar an der Falschen Position

    Hallo, ich habe folgenden Code für eine Appbar:

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Imports System.Runtime.InteropServices
    2. Public Class AppBar
    3. ''' <sumary>
    4. ''' Beinhaltet Information über die Application Bar.
    5. ''' Eine ausführliche Beschreibung finden Sie in MSDN APPBARDATA Dokumentation.
    6. ''' </sumary>
    7. <StructLayout(LayoutKind.Sequential)> _
    8. Public Structure APPBARDATA
    9. Public cbSize As UInteger
    10. Public hWnd As IntPtr
    11. Public uCallbackMessage As UInteger
    12. Public uEdge As UInteger
    13. Public rc As RECT
    14. Public lParam As Integer
    15. End Structure
    16. ''' <sumary>
    17. ''' Speichert Größe und Position der AppBAr.
    18. ''' </sumary>
    19. <StructLayout(LayoutKind.Sequential)> _
    20. Public Structure RECT
    21. Public left As Integer
    22. Public top As Integer
    23. Public right As Integer
    24. Public bottom As Integer
    25. End Structure
    26. <DllImport("shell32.dll")> _
    27. Private Shared Function SHAppBarMessage(ByVal dwMessage As UInteger, ByRef pData As APPBARDATA) As IntPtr
    28. End Function
    29. <DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
    30. Private Shared Function RegisterWindowMessage(ByVal lpString As String) As UInteger
    31. End Function
    32. Const ABM_NEW As Integer = &H0
    33. Const ABM_REMOVE As Integer = &H1
    34. Const ABM_SETPOS As Integer = &H3
    35. Const ABM_QUERYPOS As Integer = &H2
    36. Const ABE_TOP As Integer = 1
    37. Private Sub AppBar_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    38. 'Me.Location = New Point(0, 0)
    39. ' Datenstruktur für AppBar erzeugen und initialisieren.
    40. Dim abd As New APPBARDATA()
    41. abd.cbSize = CUInt(Marshal.SizeOf(GetType(APPBARDATA)))
    42. abd.hWnd = Me.Handle
    43. abd.uCallbackMessage = RegisterWindowMessage(Guid.NewGuid().ToString())
    44. ' AppBar beim System registrieren.
    45. SHAppBarMessage(ABM_NEW, abd)
    46. ' Größe und Position festlegen.
    47. ' In dem Beispiel wird oben am Desktop 100 Pixel Platz reserviert.
    48. abd.rc = New RECT()
    49. abd.uEdge = ABE_TOP
    50. abd.rc.top = 0
    51. abd.rc.left = 0 ' - 100
    52. abd.rc.bottom = 100 'SystemInformation.PrimaryMonitorSize.Height
    53. abd.rc.right = SystemInformation.PrimaryMonitorSize.Width
    54. ' Die Gröse und Position der AppBar prüfen.
    55. ' Wenn diese nicht gültig sind, werden die
    56. ' korrigierte Werte zurückgegeben.
    57. SHAppBarMessage(ABM_QUERYPOS, abd)
    58. ' Größe und Position der AppBarsetzen
    59. SHAppBarMessage(ABM_SETPOS, abd)
    60. ' Größe und Position des Anwendungsfenster im AppBar Bereich positionieren
    61. Location = New Point(abd.rc.left, abd.rc.top)
    62. Size = New Size(abd.rc.right, abd.rc.bottom)
    63. Me.FormBorderStyle = Windows.Forms.FormBorderStyle.None
    64. End Sub
    65. Private Sub AppBar_FormClosed(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles MyBase.FormClosed
    66. Dim abd As New APPBARDATA()
    67. abd.cbSize = CUInt(Marshal.SizeOf(GetType(APPBARDATA)))
    68. abd.hWnd = Me.Handle
    69. SHAppBarMessage(ABM_REMOVE, abd)
    70. MyBase.OnClosed(e)
    71. End Sub
    72. End Class


    aber leider funktioniert es nur mit Formborderstyle = toolwindow richtig wenn ich None verwnde schaut das so aus (das graue ganz oben ist die app bar und die ist an der falschen position. eigentlich sollte alles dort oben über dem Fenster grau sein.) :
    Bilder
    • Unbenannt.jpg

      88,38 kB, 1.280×1.024, 107 mal angesehen

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „MAAN10“ ()

    Ja genau, dass will ich, ich will dass der gesamte reservierte bereich genutzt wird. Villeicht muss ich den FormBorderStyle auch nur an einer anderen Stelle auf None Setzen (der Code ist im 1.Post im Expander Tag)

    EDIT hab es geschafft *freu*

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