Maus über Button bewegen

  • Hi!
    Mal schauen ob hier in den Ferien auch was los ist:D
    Schau mir gerade (gezwungenermassen) ein wenig Visual C++ an, blick aber irgendwie nicht durch. Ich möchte einen Text anzeigen, wenn ich mit der Maus über einen Button fahre. Aber wie stelle ich überhaupt fest, dass ich über dem Button bin mit der Maus?? Der Button selber hat ja nur die Ereignisse Clicked bzw. DoubleClicked? Wäre für eine Antwort auf diese (wahrscheinlich sehr dumme :rolleyes: ) Anfängerfrage sehr dankbar!

  • das simpelste wäre einfach, wenn du alle 100ms oder die mouse position mit GetCurPos() checkst, aber das ist recht ressouren lastig.

    ansonsten kannst du glaub ich einen eigenen message map eintrag machen, frag mich aber nicht genau wie.

  • Die richtige Alternative wäre:

    Eigene Klasse machen, die von CButton abgeleitet ist und dann dort auf die Nachricht WM_MOUSEMOVE (bin mir ziemlich sicher, aber nicht 100 %ig nehmen) und dann in einem Dialog einen Button einfügen und den vom Typ der eigenen Klasse machen.

    und nicht zu vergessen:
    In der Nachrichtenbehandlungsroutine mittels CToolTip den Text anzeigen...

    Würde sagen, du schaust auf
    http://www.codeguru.com/buttonctrl/index.shtml
    was es da alles gibt.

    HTH

    RoadRash

    Ceterum censeo, carthaginem esse delendam.

  • Vielen Dank für eure Hilfe! Aber irgendwie blick ich noch nicht ganz durch. Ich erzeuge eine eigene Klasse abgeleitet von CButton, erzeuge dann einen neuen Button und verbinde ihn mit einer Membervariable vom Typ meiner Klasse. Jetzt hab ich noch einen Text, der verschwinden soll, wenn ich über den Button streife. In der Funktion für die Nachricht WM_MOUSEMOVE schreib ich dann GetDlgItem(IDC_MYTEXT)->ShowWindow(false). Folge: Das Programm stürzt ab wenn ich über den Button fahre (eine MessageBox aufzumachen funktioniert ohne Probleme). Was mache ich jetzt schon wieder falsch??:confused:

  • In der Funktion, in der du WM_MOUSEMOVE abfängst, kannst du den Button direkt

    Code
    ShowWindow(FALSE)

    ausblenden bzw.

    Code
    this->ShowWindow(FALSE)

    , da du im Nachrichten-Handler des Buttons-Objekts des Buttons bist (<= hoffe der Satz ist nicht zu verwirrend).

    Ansonsten kannst mir deinen Source ja mal mailen roadrash@a1.net und ich schau ihn mir an...

    HTH

    Ceterum censeo, carthaginem esse delendam.

  • das hätt ich glaub ich schon verstanden, aber ich will einen Text ausblenden, der nur Bestandteil meines "Hauptfensters" ist. Da kann ich ja nicht so einfach zugreifen, oder?

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!