Unterschied zwischen GetCursorPos und SetCursorPos



  • Moin,
    mir ist trotz des lesens der alten Beiträge eine Sache noch nicht klar geworden!
    Und dies wäre warum bei GetCursorPos ich immer nur meine Pos-Daten auf dem Dialogfeld bekomme aber nicht drüber hinnaus? bei SetCursorPos hingegen setze ich einen Wert und da springt er hin egal ob sich das nun noch von den Koordinanten auf dem Dialogfeld befindet oder nicht.

    Ich dachte bei GetCursor an einen Handle für den ganzen Bildschrim / Fenster aber warum braucht SetCursor den denn nicht?

    Man kann es so machen :

    **static POINT ptCursor;

    GetCursorPos ( &ptCursor);

    m_Xachse = ptCursor.x;
    m_Yachse = ptCursor.y;**

    aber auch so:

    **static POINT ptCursor;
    static HDC hDC;
    GetCursorPos ( &ptCursor );

    hDC = GetDC (hWnd);**
    müsste ich hier ein handle für den ganzen bildschrim einsetzen??

    SetBkMode ( hDC, OPAQUE );
    m_Xachse = ptCursor.x;
    m_Yachse = ptCursor.y;

    Wäre für Antworten sehr dankbar....

    MfG

    Thomas



  • Kann es sein, dass die Frage aus deinem Beitrag nicht ganz klar wird 😉 ?

    Aber vielleicht suchst du ja ClientToScreen bzw. ScreenToClient.

    M.T.



  • hmm....also wenn ich mal GetCursor verwendet dann kann ich damit nur die koordinaten sehen wenn mein mauszeiger sich auf meinen dialogfeld hin und her bewegt...wenn ich darüberhinaus gehe dann sehe ich keine koordinaten mehr. warum ist das so?
    und dann wollte ich wissen warum ich den mauszeiger bei setcursor überall hinschicken kann egal ob jetzt formularfeld oder nicht. da ist mein schwer verständliches problem 🙂 ! warum bei get... nur auf dem formular und bei set überall ??? ist es klarer geworden??



  • GetCursorPos geht auch überall und nicht nur über deinem Dialog! Der Fehler liegt bei dir!



  • schon klar aber er zeigt die neuen koordinaten nicht an wo es sich befindet



  • Wo rufst du denn die Funktion genau auf? (Hier wird dann wohl der Fehler liegen)



  • also beim ereignss: Mousemove

    steht das:
    **BOOL Func;
    POINT koordinaten;
    Func=GetCursorPos( &koordinaten);

    m_xAchse=koordinaten.x;
    m_yAchse=koordinaten.y;

    UpdateData(FALSE);**

    und bei einem timer-ereigniss

    **int a = rand();
    m_xAchse_rand= a;

    int b = rand();
    m_yAchse_rand= b;

    BOOL SetCu;

    SetCu=SetCursorPos(a,b);
    UpdateData(FALSE);**

    // Zu a & b, ja ich weiß das es die koordinate 15123 evz nicht gibt 😃

    Ich bin noch Anfänger deswegen kann es gut ein einfacher Fehler sein...



  • Die Mousemove-Message bekommst du nur, wenn sich der Cursor über deinem Fenster befindet 😉



  • arrggg manchmal sieht man den wald vor lauter bäumen nicht!
    gut peinlich aber naja kann man nichts machen! trotzdem vielen danke...ich wäre da bestimmt erst in einiger zeit drauf gekommen...



  • Kann man nicht mit SetCapture Nachrichten für den gesamten desktop bekommen?



  • Arne schrieb:

    Kann man nicht mit SetCapture Nachrichten für den gesamten desktop bekommen?

    Klar - doch dann bekommen die anderen Fenster keine Nachrichten mehr.
    Wenn das jedoch nicht von Bedeutung ist, ist das die Lösung für deine Frage.

    M.T.


Anmelden zum Antworten