Problem mit GetCursorPos



  • Hallo,

    ich möchte gerne die momentane Position des Mauscursors auslesen.
    Ich benutze hierzu die Funktion von der microsoft docs seite
    :

    BOOL GetCursorPos(
    LPPOINT lpPoint
    );

    bekomme aber den Error : " Die Verknüpfungsspezifikation ist mit ""GetCursorPos" (deklariert in Zeile 9110 von "c:\Program Files (x86)\Windows Kits\10\Include\10.0.17134.0\um\WinUser.h")" (vorherig) inkompatibel."

    Der Header windows.h wurde includiert.

    Schonmal vielen Dank für alle Antworten.



  • Hallo,

    mal komplett geraten (keine Ahnung ob das dir hilft) versuch mal [Projekt] -> [Projektmappe neu zuweisen] (Win10 SDK), beziehungsweise mach mal ein komplett frisches Projekt und schau da, ob Du die Funktion verwenden kannst, oder ob der selbe Fehler kommt.

    Deinen Code solltest Du auch immer posten, also neues Projekt -> minimale main mit GetCursorPos -> Code posten und wieder alle Fehlermeldungen.

    Wenn derselbe Fehler kommt und niemand weiter weiß, dann würde ich mal reparieren/neuinstallieren.



  • @HarteWare Also das ist der komplette Code :

    #include "stdafx.h"
    #include "iostream"
    #include "windows.h"

    int main()
    {

    BOOL GetCursorPos(
    	LPPOINT lpPoint
    );
    
    
    
    
    return 0;
    

    }

    Projektmappe neu zuweisen hab ich probiert, hilft leider nicht.

    Hmm ob einen Neuinstallation hilft, wäre für mich das letzte Mittel:
    Trotzdem vielen Dank.



  • @cpluspluscoder

    Probier es mal so:

    int main()
    {
    	POINT p{};
    	GetCursorPos(&p);
            std::cout << "Position:\t" << p.x << ", " << p.y << '\n';
    }
    

    Um etwas mehr ins Detail zu gehen: Im Prinzip hast Du innerhalb der main() Funktion die GetCursorPos deklariert (das darf man garnicht), anstatt die Funktion aufzurufen, und daher kommt eben der komische Fehler.

    P.S.: Vorkompilierte Header würde ich für den Anfang auch nicht verwenden, dass kann man beim Erstellen des Projekts abschalten und ein leeres Projekt wählen.
    P.P.S.: Die includes aus include-Pfaden schreibt man normal in <>, also so:

    #include <iostream>
    #include <windows.h>
    

    P.P.P.S.: Wenn man ganz christlich ist, prüft man jeden Rückgabewert, um das Programm stabiler zu machen:

    Return Value

    Type: BOOL

    Returns nonzero if successful or zero otherwise. To get extended error information, call GetLastError.

    if (!GetCursorPos(&p)) {
        std::cout << "GetCursorPos failed!\n";
        return -1;
    }
    // ...
    


  • @HarteWare Vielen Dank, funktioniert 🙂

    Ja habe noch viel zu lernen , aber man lernt immer dazu.

    Auf jeden Fall lieben Dank für die gute & schnelle Antwort.



  • @cpluspluscoder sagte in Problem mit GetCursorPos:

    Ja habe noch viel zu lernen , aber man lernt immer dazu.

    Die Antwort war vllt. etwas hart, ich hab's schon verbessert. Viel Spaß & Erfolg beim Lernen.



  • Kein Problem 😉



  • Hier noch eine etwas umfangreichere Demo:

        POINT prevPoint{-1, -1};
        POINT point{};
        while (GetCursorPos(&point)) {
            if (point.x != prevPoint.x || point.y != prevPoint.y) {
                std::cout << point.x << ", " << point.y << '\n';
                prevPoint = point;
            }
        }
    


  • Danke 🙂


Anmelden zum Antworten