Komplett eigene "Komponente"



  • Hi!

    Ich möchte grade eine "Memo-Komponente" schreiben mit Syntaxhervorhebung.

    Ich dachte, ich könnte dafür ein Multiline-Edit als Vorlage nehmen und bei WM_PAINT selberzeichnen. Das geht aber irgendwie nicht, denn wenn man Text eingibt, wird dieser trotzdem gezeichnet.

    Meine Frage nun:

    Welches Fenster soll ich mit CreateWindow erstellen bei dem ich alles komplett selber zeichnen kann und auch TABSTOP habe UND vor allen Dingen muss ich Key-Events für diese Komponente haben.

    Was nehme ich da als Vorlage?



  • Bist du ganz sicher, dass du eine eigene Komponente entwickeln möchtest? Es ist nämlich eine der schwierigsten Programmieraufgaben (in der GUI-Welt) ein Steuerelement zu entwickeln, das:

    .) Text mit unterschiedlichen Fonts und Farben rendern kann;
    .) gerenderten Text auch markieren lassen kann (Doppelklick->ein Wort, Dreifachklick->ein ganzer Absatz, Drag&Drop etc.);
    .) Textbearbeitungsoperationen zulässt (Pfeiltasten bewegen Cursor, [Strg+]Backspace, [Strg+]Delete, Kopieren, Einfügen etc.);
    .) Text umbricht wenn es nicht mehr in die Breite des Fensters passt (Scrollfunktion muss infolgedessen auch implementiert werden)

    Auch wenn du nicht vor hast all diese Funktionalitäten zu implementieren, so ist es dennoch eine komplizierte Aufgabe die Grundfunktionalitäten zu realisieren.



  • Welche Varianten bleiben mir denn sonst noch, bis auf Memos - ohne Farben - oder ein RichEdit-Feld welches bei sämtlichen Änderungen dann womöglich noch flackert?

    Schrift wird eh konstante Größe haben ( MS Mincho od. Courier New ) was das markieren einfacher macht.

    Also so wie ich es mir grade erdacht habe muss man sicher eine Klasse erstellen und dann ein Fenster mit der Klasse in das eigene rein erstellen, oder?



  • Du musst das Fenster nicht unbedingt als Kind-Fenster in deinem Hauptfenster erstellen. Es kann auch gleich als Hauptfenster erstellt werden...

    Sag mal, muss der Text in deiner Komponente editierbar sein? Wenn nicht dann könntest du QHTM verwenden, das einfaches HTML rendern kann. Für nicht-kommerzielle Zwecke ist es sogar gratis... http://www.gipsysoft.com/qhtm/



  • Muss aber leider editierbar sein ^^

    Wird ein Script-Editor für ein größeres Projekt.

    Ich werde es erstmal versuchen selber zu schreiben und falls es nicht klappt werde ich wohl doch auf fertige Sachen zurückgreifen müssen.

    Trotzdem danke 🙂



  • Das Control komplett neu zu schreiben halte ich für einen sehr schwierigen und wohl fast aussichtslosen Weg. Hast du dich schonmal zu Subclassing und Superclassing informiert?!

    Vielleicht hilft dir dann auch das hier

    PS: Gab es das Flacker-Problem mit Richedits nicht schon öfters - hast du mal mit der Forensuche geschaut?



  • Wo flackert das RichEdit denn? Glaube ich nicht...

    Start mal Wordpad. Das benutzt auch ein RichEdit und guck ob es da bei dir auch flackert. Ansonsten liegt der Fehler wohl bei dir.


Anmelden zum Antworten