Own Ctrls



  • Ich wollte nochmal fragen: Wie erstellt man mit der Win32 API eigen entwickelte Controls?

    Ich habe absolut keinen Ansatz, z.b:. einen eigenen Button, mit einem neuen Design zu entwerfen. Der Button sollte auch am ende flexibel einsetzbar sein, nciht, dass ich für jeden Button eine eigene WndProc anlegen muss.
    Tutorials habe ich leider auch noch nicht gefunden.

    Könnte vieleicht jemand ein kleines Sample posten, was zu dieser Thematik passt?



  • also ich hab mir ne janze Klasse dafür geschrieben, damit kannst du alles mögliche machen eingene Form, (rund, dreieckig...) entsprechend Füllen: Bitmaps, Farbverläufe, etc....aber die geb ich dir nit, sry hab kein bock das die später im I-Net rumgeistert, das war mir dafür zuviel arbeit...:
    Kann dir aber n Tipp geben:

    1. Kapsel den ganzen Kram in Klassen: ist übersichtlicher
    2. schreib für jeden Controltyp ne eigene Klasse und vererbe der Basisfunktionen einer Hauptklasse
    3. schreib dir funktionen mit denen du dann das Verhalten bzw die Gestaltung beeinflussen kannst

    hoffe das hat wenigstent bezogen auf das Konzept n bissl geholfen ...



  • dass ich für jeden Button eine eigene WndProc anlegen muss.

    Dann musst du eben die messages aus der einen WndProc zu der button-implementation weiterleiten.
    In Windows gillt: alles ist ein fenster. Egal ob Desktop, Dialog, Button, ListView, .. das sind alles Fenster oder ein Kombination aus fenster.
    Das erste was du machen sollest, ist dir zu überlegen ob du wirklich ein völlig neues Control machen willst, oder ob die Funktionalität nicht schon in ner fertigen window class steckt (in deinem Fall z.b Button).
    Du erstellt nun als einen Button mit CreateWindow wie immer und reagierst auf die WM_PAINT für den button. Diese message bekommst du von windows wenn du was neu zeichen musst, in deinem fall den button.
    In der WM_PAIN-proc rufst du dann ein BeginPaint auf (EndPaint nicth vergessen) und bekommst ein Device Handle zurück (HDC). In dem kannst ud jetzt rein zeichnen was dir grad gefällt 😉



  • Alles schön und gut gesagt, aber ich hätte keine richtige Ansatzweise...



  • Die hat CMatt dir doch gerade erläutert. Ein Button ist ein Fenster. Du würdest also deine eigene Fensterklasse für dein neues Control registrieren und dann in der Window Proc deines Controls entsprechend das tun, was dein Control eben tun sollst.



  • SetWindowLongPtr/GetWindowLongPtr


Log in to reply