Eigene Fensterklassen



  • Hallo,

    ich möchte gerne eigene Windows-Klassen für Fenster aller Art schreiben.
    Nehmen wir z.B. einen eigenen erstellten Button, der rund ist und einen zentrierten Text erhält.

    Das ist ja kein Problem solange ich nur EINEN Button benutzen will. Dann ist der Text in der Klasse einfach in einer als static deklarierten Variablen gespeichert. Will ich jedoch einen zweiten neben dem ersten Button erstellen, so kommt es zu Problemen: die statische Variable wird überschrieben und beinhaltet nur noch den Text des zweiten Buttons. Nun weiß ich also nicht, wie ich das überbrücken kann. Ich habe schon an LinkedLists gedacht, aber das kann doch nicht der einzige Weg sein, oder?

    Ich bitte daher um Hilfe 😉

    MfG pLuSmaN



  • Habe ich das richtig verstanden: Du willst eine "API-Fensterklasse" in eine C++-Klasse kapseln?



  • Nein, ich habe mir schon gedacht, dass ich mich nicht klar genug ausgedrückt habe 🙂

    Ich will einfach eine API-Fensterklasse bzw. Window-Prozedur schreiben, die es mir ermöglicht mehrere Fenster einer Fensterklasse (mittels RegisterCLass[Ex] registriert) unabhängig voneinander zu erstellen.

    Z.B. drei runde selbstgemachte Buttons mit unterschiedlicher Schrift zu erstellen. Normalerweise speicher ich den Text dann in einer statischen Variable, da sie allerdings in der Window-prozedur statisch ist, wird sie immer überschrieben, sofern ein anderer Button erstellt wird.

    Falls es da jetzt einen Trick mit den Texten von Fenstern gibt, reicht mir das nicht. Es können ja z.B. 100 verschiedene fensterspeziefische Dinge exestieren.

    Hoffentlich ist mein Anliegen jetzt etwas klarer :p



  • Schau dir mal SetWindowLong / GetWindowLong an.

    GWL_USERDATA
    Sets the user data associated with the window. This data is intended for use by the application that created the window. Its value is initially zero.
    [...]
    DWL_USER
    Sets new extra information that is private to the application, such as handles or pointers.



  • Es ist aber wirklich empfehlenswert sowas in einer C++ Klasse zu kapseln. Das Zugreifen auf die Variablen über GetWindowLongPtr ist ganz schön nervig. *g*


Anmelden zum Antworten