wxWidgets eigenes Event erstellen



  • Hallo liebe Forengemeinde,

    ich wollte nur einmal wissen, ob jemand einen Weg kennt, wie man ein eigenes Event definiert in wxWidgets. Ich meine das so, dass ich z.B. einen bestimmten rechteckigen Bereich im Fenster habe und nun soll ein Event geworfen werden, wenn jemand da reinklickt...Dabei will ich nicht immer jedes MouseEvent auffangen und überprüfen, ob der Klick in diesem Rechteck war, da der Rechenaufwand doch vermutlich recht hoch ist, wenn ich viele dieser Bereiche habe.

    Danke schomal im v*******



  • http://lmgtfy.com/?q=make+event+wxwidgets

    Da gibt es aber bestimmt bessere Lösungen als ein eigenes Event zu erstellen.



  • Von wieviel Rechtecken reden wir hier dass Du Angst hast, dass es zu langsam wird?
    Mehrere 100.000? Millionen?
    Also wenns hier nur um ein paar hundert geht, reicht das mit der Maus-Position.
    Am Ende musst Du auch in deiner Rechteck-Klasse mit der Mausposition arbeiten.



  • OK nein es nur ein paar...noch nichtmal 100. Ich kenn mich nicht so genau damit aus, was wieviel Rechenzeit braucht. Wenn du sagst, dass das mit dem MouseEvent bei einer solch geringen Anzahl die beste Möglichkeit ist, werde ich diese verwenden 👍

    Danke für eure Antworten



  • Benutz eine STL-Liste und iteratoren dann geht das rasend schnell. Das wird dann erst bei nen paar Hunderttausend Rechtecken wirklich langsam. So schnell gehen Rechner heutzutage nicht in die Knie.

    Beispiel:

    bool MyRect::isPointInside(const Vector2& pos) const
    {
        if (this->getPosX() <= pos.x() && pos.x() <= ( this->getPosX() + m_size.x() )&&
            this->getPosY() <= pos.y() && pos.y() <= ( this->getPosY() + m_size.y() ) )
        {
            return true;
        }
        return false;
    }
    

    Dafür braucht der Rechner nicht lange^^.


Anmelden zum Antworten