Focus



  • Das funktioniert aber nur, wenn Du die Maus im Zeitlupentempo bewegst.



  • Dann muss das Label halt etwas mehr rausstehen.



  • Selbst dann funktioniert das nicht sicher, weil Windows bei mehr als Zeitlupenbewegungen eine Menge Bewegungsdaten der Maus wegfallen läßt.



  • Ich hab schonmal nen Programm mit MouseOverButton so geschrieben und es funktioniert immer nur wenn du grade mal SpeedyGonzales Konkurenz machen wilst flackert es ein bischen.



  • Und was machst Du, wenn man zu einer anderen Anwendung tabt dort irgendetwas macht und wieder zurücktabt. Diese Lösungvariante kannst Du auch mit random gleichsetzen - purer Zufall ob Dein Ereignis eintritt oder nicht.

    Gruss



  • @Rostfrei[]: So weit hatte ich schon gar nicht gedacht, muß an der Hitze liegen...
    Aber davon abgesehen:
    Vielleicht bin ich ja vom Ego-Shooter zocken geschädigt, aber selbst mit einem 50 Pixel breiten Rahmen und - für mich - normaler Geschwindigkeit der Maus, funktioniert das die Hälfte der Zeit nicht.



  • Könnte man hier nicht MouseEnter/MouseLeave nutzen?
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-98829.html



  • Hallo,
    vielen Dank für eure Hilfe und den vielen Links. Habe die Beispiele durchgearbeitet, und eins in abgeänderten Form übernommen. Funktioniert prima.
    Gruß Siegfried 🙂 🙂 🙂 👍 👍 👍



  • unde wie hast du es jetzt gelöst?



  • Hallo,
    also, welche Quelle ich genutzt habe, ???
    in der Form.h

    class TmyFormNewGleisbild : public TForm
    {
    //
    protected: 
      void __fastcall CMMouseEnter(TMessage *Message); 
      void __fastcall CMMouseLeave(TMessage *Message);   
    //...
    public:		// Anwender-Deklarationen
      BEGIN_MESSAGE_MAP 
        MESSAGE_HANDLER(CM_MOUSEENTER, TMessage *, CMMouseEnter); 
        MESSAGE_HANDLER(CM_MOUSELEAVE, TMessage *, CMMouseLeave); 
      END_MESSAGE_MAP(TForm);
    //...
    };
    //---------------------------------------------------------------------------
    

    in der Form.cpp

    void __fastcall TForm1::CMMouseEnter(TMessage* Message) 
    { 
    //
    } 
    //--------------------------------------------------------------------------- 
    void __fastcall TForm1::CMMouseLeave(TMessage* Message) 
    { 
    if (boActivate)
      {   //  boActivate
        if (FrameImageBar1->boImageFocus == true)
          {   //  FrameImageBar1->boImageFocus == true
          FrameImageBar1->DeleteFocusImage();
          FrameImageBar1->boImageFocus = false;
          }   //  FrameImageBar1->boImageFocus == true
        }   //  boActivate
    boActivate = true;
    } 
    //---------------------------------------------------------------------------
    

    in der Frame wird beim überfahren einer Image mit der Maus " boImageFocus " auf true gesetzt. Ist die Maus auserhalb der Frame, wird " TForm1::CMMouseLeave " abgearbeitet. Diese steuert in " FrameImageBar1->DeleteFocusImage(); " die deaktivierung der zuletzt aktiven Image auf der Frame.
    es funktioniert.
    Gruß Siegfried 🙂 🙂 🙂


Anmelden zum Antworten