Infotext eines Toolbar-Buttons in der Statusbar



  • Hi folks,

    wie realisiert man in der Statusbar am elegantesten einen Infotext, welcher dann erscheint, wenn der Mauszeiger sich gerade über ein Toolbar-Button befindet?

    Konkret geht es mir also darum, wie ich vorgehen soll, um herauszufinden ob der Mauszeiger sich gerade über eines der Buttons drüberfährt.
    Und natürlich auch, wann der Zeiger den Button wieder verläßt.

    Macht man das auf Grundlage von WM_MOUSEMOVE und TB_HITTEST?
    Oder gibt es andere Möglichkeiten?

    Martin

    P.S.: Falls einem die Funktion des Infotexts nicht so geläufig ist:
    In etwa so ähnlich wie man WM_MENUSELECT bei Menüs auswertet und entsprechenden Infotext in der Statusbar einblendet.



  • Hallo, da dir bislang noch keiner geantwortet hat, ist eine Lösung wohl zumindest nicht offensichtlich. Ich habe vor einiger Zeit selber ein Toolbar-Conrol geschrieben. Mit den entsprechenden Hilfsklassen (eine DIB-Klasse, eine oder mehrere Filterklassen) ist das ganze auch nicht soo aufwändig (<600 Zeilen). Ich habe auch schon eine entsprechende Klasse geschrieben, die Dateien in einem Bildbearbeitungsprogramm erzeugt, gleichzeitig in dem Bildformat die IDs und die Rechtecke der einzelnen Schaltflächen speichert. Aber ich bin mir sicher, dass es so etwas schon auf Codeproject gibt. Hast du da schon einmal gesucht? So hast du es komplett in deiner Hand, wann ein Tooltip erscheinen oder der Statusbar-Text geändert werden soll.
    LG Hendrik



  • Ja, hatte auch aufs Tipps oder Links gehofft...

    Nun, mittlerweile habe ich das ganze selbst gelöst.

    Zunächst klang es mit der Nachricht WM_NOTIFY und TBN_HOTITEMCHANGE vielversprechend.
    Doch dann mußte ich im Nachhinein feststellen, daß TBN_HOTITEMCHANGE nur in Verbindung mit flatstyle Toolbars funktioniert.

    Also habe das Ganze verworfen und doch wieder zu Fuß auf Grundlage von WM_MOUSEMOVE und TB_HITTEST implementiert.

    Doch diese Methode alleine reicht nicht aus, um ein Verlassen des Mauszeigers sicher (!) zu erkennen.
    Deshalb mußte ich auf _TrackMouseEvent() zurückgreifen, um so die gewünschte Nachricht WM_MOUSELEAVE zu bekommen.

    Alles in allem hat mir das ganze doch nur ca. 30 Zeilen zusätzlichen Code gekostet (Subclassing des Toolbars hatte ich schon vorher angewendet)

    Martin


Anmelden zum Antworten