Frage zu der Struktur POINT



  • Hallo wieso wird hier die Maus Struktur als Referenz übergeben ?

    POINT maus_coord;
    GetCursorPos ( & mause_coord );

    und hier ohne Referenz ?

    HWND handle;
    handle = WindowFromPoint ( mause_coord );



  • Hallo,

    POINT maus_coord;
    
    GetCursorPos(&mause_coord);                  // speichert die Mauskoordinaten, benötigt Schreibzugriff auf POINT-Objekt
    
    HWND handle;
    handle = WindowFromPoint(mause_coord);       // holt ein Handle vom Fenster an den Mauskoordinaten, benötigt nur Lesezugriff auf POINT-Objekt
    

    MfG



  • blup schrieb:

    Hallo wieso wird hier die Maus Struktur als Referenz übergeben ?

    POINT maus_coord;
    GetCursorPos ( & mause_coord );

    So wie du es hier schreibst, übergibst du keine Referenz sondern einen Zeiger.



  • Braunstein schrieb:

    So wie du es [...] schreibst, übergibst du keine Referenz sondern einen Zeiger.

    @blup: Was übrigens richtig ist, weil GetCursorPos() einen Zeiger haben will. Also du übergibst im 1. Fall die Adresse von POINT (nicht POINT als Referenz!), so dass die aufgerufene Methode einen Zeiger initialiseren und in POINT schreiben kann.
    Im 2. Fall wird nur der Inhalt von POINT benötigt und deshalb direkt übergeben. Eine Veränderung von POINT aus dieser Methode ist somit nicht möglich.

    PS: Ein Satz zur Thread-Überschrift: Du hast doch gar keine Frage zu POINT, sondern eher eine zur Parameterübergabe an Methoden / Funktionen... 😉



  • Da wird nirgendwo etwas per Referenz übergeben, der AddressOf Operator & liefert die Adresse der POINT Struktur zurück. GetCursorPos erwartet einen Zeiger auf eine POINT Struktur, damit die Funktion dort die X- und Y-Koordinate eintragen kann. Bei Erfolg liefert sie TRUE zurück, ansonsten FALSE (zB beim Fehlen einer Maus. Daher gibt sie auch kein POINT Objekt zurück, sondern BOOL).
    Beim Aufruf von WindowFromPoint wird die Struktur per call-by-value übergeben da die POINT Struktur nur zur Eingabe benutzt wird.



  • @_DocShoe_: Ist das jetzt inhaltlich etwas Anderes, als das was ich geschrieben habe?



  • @Kolumbus:

    Nein, ich bin nur beim Verfassen des Beitrages von einem Arbeitskollegen unterbrochen worden, deshalb habe ich den Absenden Button ne halbe Stunde später geklickt als geplant.



  • DocShoe schrieb:

    ... ich bin nur beim Verfassen des Beitrages von einem Arbeitskollegen unterbrochen worden ...

    tztz... wie manche Leute so ihre Prioritäten setzen... 😉

    Alles klar - dachte schon, ich hätte etwas Grundverkehrtes geschrieben!


Anmelden zum Antworten