graphische Aufwertung Eingabefeld ?



  • in einem SDI - Programm habe ich letztens folgendes gesehen:
    Wenn die Maus bewegt wird und sich über Eingabefelder (Editfeld)
    befindet wir darum ein Rahmen gezeichnet. Wenn die Maus wieder
    von dem Feld 'runter ist, ist natürlich auch der Rahmen wieder weg ;).
    Ich weiß, das ist nur Spielerei, aber mich würde interessieren,
    welche Nachricht man für so etwas benutzen muss. Ich habe einiges
    Probiert - bin aber nicht dahintergekommen.
    Das Programm wurde unter VS 6 geschrieben.

    Gruß sachse98



  • Du leitest dir ne Klasse von CEdit ab und überschreibst OnMouseMove.

    Deine Überschrift ist Nonsense, nächstes Mal bitte eine gescheite wählen!



  • so besser?

    so richtig schlau werde ich aus der Antwort leider nicht - kannst das ein wenig genauer erkären? danke!



  • Was verstehst du denn daran nicht? Noch nie ein eigenes Control geschrieben?



  • Mit WM_MOUSEMOVE bekommt man aber nicht mit wenn die Maus das Edit-Feld wieder verläßt.

    Ich würde dir TrackMouseEvent empfehlen.



  • dEUs schrieb:

    Was verstehst du denn daran nicht? Noch nie ein eigenes Control geschrieben?

    Danke für die vowursvolle Gegenfrage, die so wohl nicht ernst gemeint war, oder?

    Mir ging es auch um das Prinzip - natürlich auch um das "How to", aber ich glaube so kommt man zu keiner sinnigen Antwort.

    dddddd schrieb:

    Mit WM_MOUSEMOVE bekommt man aber nicht mit wenn die Maus das Edit-Feld wieder verläßt.

    Ich würde dir TrackMouseEvent empfehlen.

    aber wie stelle ich fest, dass die Maus gerade über DEM Eingabefeld ist? oder muss ich erst irgendwie die Position des Eingabefeldes feststellen.
    😕



  • Wenn du ein eigenes Editcontrol schreibst, das die Nachricht bekommen kann - dann bist du dir IMMER sicher, dass genau DAS Control gerade unter der Maus ist, sonst würde es die Nachricht nicht bekommen. 😃

    Und dieses Control kann auch um sich selbst einen Rahmen malen, es weiß ja, wo es ist.



  • vielleicht hift dir ja das als beispiel:

    http://www.codeproject.com/buttonctrl/hoverbutton.asp

    PS: um den code runterzuladen muss man sich auf der seite registrieren



  • sachse98 schrieb:

    dEUs schrieb:

    Was verstehst du denn daran nicht? Noch nie ein eigenes Control geschrieben?

    Danke für die vowursvolle Gegenfrage, die so wohl nicht ernst gemeint war, oder?

    Öhm, das hast du in den falschen Hals bekommen. Ich kenne deinen Wissensstand nicht, und das war eine Frage um herauszufinden, wo du stehst, da ich nicht gerne Sachen erkläre, die du schon weisst.



  • ok, dann habe ich das falsch verstanden 😉

    Eine Verständnisfrage habe ich aber immer noch:

    Ich bewege die Maus auf dem Dialog oder sonst wo.
    Jetzt komme ich an das Feld/Button etc. 'ran. Da
    muss ja genau in diesem Moment eine Nachricht -
    welche auch immer ausgesandt werden, oder?
    Sicher kennt das Control seine Position, aber nicht die des Mauszeigers.

    Das Beispiel schaue ich mir heute abend in einer ruhigen Phase mal an!

    Gruß



  • Die Position des Mauszeigers ist ja unwichtig, du willst ja wissen, wann die Maus über dem Edit ist - DAS wird dir gemeldet. (Ob die nun am Rand, in der Ecke oder in der Mitte ist, ist ja egal. 😉 )

    Stell dir vor, du träumst im Sportunterricht vor dich hin. Plötzlich ruft einer: "Sachse, aufpassen, der Ball kommt in deinen Spielbereich."
    Dann machst du das, was bei dem Spiel gerade passend ist, wenn der Ball in deine Reichweite kommt (z.B. ducken, wie bei Brennball) und träumst dann weiter.
    Wichtig an dem Beispiel ist, dass dich alles um dich herum nicht interessiert, solange es dich nichts angeht - sobald es dich was angeht, sagt jemand Bescheid. Das Bescheid sagen ist die Nachricht vom Windows.
    Gleichzeitig is dir aber egal, wo du auf dem Feld stehst und wo der Ball ist. Du musst dich nur ducken, wenn er kommt.

    So, ich hoffe das war jetzt halbwegs verständlich - was besseres ist mir nicht eingefallen zum Erklären. 🙂



  • Geil! Die Erklärung ist geil! 😃 👍



  • ja, soweit schon gut 😉

    Nur wer ruft, dass der Mauszeiger kommt und was ruft er?



  • Windows bzw das Parentfenster rufen. Und was? Öhm ... Mauszeiger kommt? *g*
    Guck dir mal TrackMouseEvent in der MSDN an, wie von meinem Vorredner vorgeschlagen wurde.


Log in to reply