Mauscursor verbergen



  • Guten Tag!

    Ich habe eine Frage, wie ich innerhalb eines Dialoges in Vollbildansicht den Mauscursor verbergen kann.

    Meine Ueberlegung war, dass ich eine Hilfsvariable erstelle und mit 0 initiallisiere. Da ich eh einen Timer innerhalb der Klasse verwende, inkrementiere ich diese Variable bei jedem Timeraufruf. Bei einer gewissen Anzahl von durchlaeufen wird dann die Funktion ShowCursor (FALSE) aufgerufen.

    void Dialog::OnTimer(UINT nIDEvent)
    {
    ...
    if(hideMousehelp>5){
    ShowCursor(FALSE);}
    else hideMousehelp++;
    ...
    }
    

    So bald die Maus bewegt wird, soll sich ja die Variable "hideMousehelp" zuruecksetzten. Deshalb habe ich die Funktion OnMouseMove eingebunden =>

    void Dialog::OnMouseMove(UINT nFlags,CPoint point)
    {
    hideMousehelp=0;
    ShowCursor(TRUE);
    CDIALOG::OnMouseMove(nFlags,point);
    }
    

    Leider funktioniert das Ganze aber nicht so, wie ich's gerne haette!
    Beim Programmstart wird der Cursor nach einiger Zeit ausgeblenden. Aber wenn ich die Maus bewege, wird diese nicht direkt wieder angezeigt, sondern erst nach ca. einer Sekunde und wenn man dann die Bewegung wieder beendet, dauert es sehr lange bis die Maus wieder ausgeblendet wird.
    Innerhalb der Timerfunktion wird noch die Systemuhrzeit eingelesen um diese auf dem Dialog darzustellen.

    Kann es sein, dass selbst bei einer kurzen Mausbewegung die Funktion OnMouseMove immer wieder ausgefuehrt wird?!

    Ich habe jetzt schon seit einigen Stunden nach Informationen darueber im Netz gesucht und habe nichts gefunden...
    Es waere sehr nett, wenn mir hier jemand weiterhelfen koennte!

    MfG!


  • Mod

    Wie immer lohnt es sich erstmal dir Doku zu lesen:
    ShowCursor
    http://msdn.microsoft.com/en-us/library/ms648396(VS.85).aspx

    [in] Specifies whether the internal display counter is to be incremented or decremented. If bShow is TRUE, the display count is incremented by one. If bShow is FALSE, the display count is decremented by one.
    Return Value

    The return value specifies the new display counter.

    Remarks

    This function sets an internal display counter that determines whether the cursor should be displayed. The cursor is displayed only if the display count is greater than or equal to 0. If a mouse is installed, the initial display count is 0. If no mouse is installed, the display count is –1.

    Du hast doch auf diesem Weg, wie Du es jetzt machst gar keine Kontrolle. Du solltest selbst immer nur einmal ShowCursor mit FALSE und nur wenn eben auch nötig ShowCursor mit TRUE ausführen.
    Dazu baust Du Dir am Besten ein Flag.



  • oh...Mist, wer lesen kann ist klar im Vorteil!

    Danke fuer die Antwort, es funktioniert!


Log in to reply