GetWindowRect - falsche Rückgabewerte

  • Allgemein

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von DBOwner.

    GetWindowRect - falsche Rückgabewerte

    Guten Tag,

    ich habe ein kleines Problem bei der API Funktion "GetWindowRect" und hoffe hier jemanden zu finden der eine Idee hat, warum und wieso diese Werte auftreten. Der Werte von x und y sind korrekt, und verweisen auf die obere linke Ecke des Fensterhandles.
    Die Werte für Höhe und Breite spucken allerdings komische Werte aus, immer größer als das Fenster.
    Wenn das Fenster maximiert ist, stimmen die Werte komischerweise. ?(
    Ich habe wirklich keine Idee, hatte aber von einem ähnlichen Problem im Zusammenhang mit Vistas Aero Oberfläche gehört. Ich benutze Windows 7 64-Bit, die Oberfläche dort ist ja eine Weiterentwicklung von Aero, weiß jemand ob das des Problems Ursache ist? Falls ja, was mus ich tun?


    Struktur für Rückgabewerte

    VB.NET-Quellcode

    1. Structure Rect
    2. Dim x As Int32
    3. Dim y As Int32
    4. Dim height As Int32
    5. Dim width As Int32
    6. End Structure


    Die Deklaration der Funktion

    VB.NET-Quellcode

    1. Declare Function GetWindowRect Lib "user32" (ByVal hWnd As Int32, ByRef lpRect As Rect) As Int32


    Die Funktion zum Füllen der Struktur

    VB.NET-Quellcode

    1. Public Function getPosition(ByVal value As Integer) As Rect
    2. Dim r As Rect
    3. GetWindowRect(value, r)
    4. Return r
    5. End Function

    DBOwner schrieb:

    was mus ich tun?
    Mal in der MSDN nachlesen.

    MSDN schrieb:

    pRect [out]
    Type: LPRECT
    A pointer to a RECT structure that receives the screen coordinates of the upper-left and lower-right corners of the window.
    Du bekommst nicht Höhe und Breite, sondern die Koordinaten der unteren Ecke.
    Höhe und Breite musst Du Dir selbst berechnen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Danke für die Antwort.
    Das hatte ich auch schon versucht, bin auch vorher davon ausgegangen, da stimmten die Werte immer noch nicht.
    Hatte nur später das mit Höhe und Breite im Rect aufgeschnappt und deshalb so geändert.

    Du meinst im Prinzip: breite = x2 - x1


    Klappt nun, aber ich bin mir sicher, dass ich genau das schon gemacht hatte.
    Da hätte ich mir den Thread sparen können. Danke aber nochmal!!!

    Am besten löschen, ist mir ja schon peinlich. :S

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