Grau



  • Hi,
    ich habe in den letzten 40 Jahren umfangreiche Oberflächen mit MFC her gelitten, alle
    Buttons/Controls usw. haben das klassischen Grau Design mit schwarzer Schrift.

    Es wäre unmöglich bei allen Controls nun das Event OnCtrlColor abzufangen, um dann die
    Farben zu verändern.

    Frage: Gibt es eine generelle Möglichkeit die Farben alle samt Menus mit Schrift zu verändern,
    also Bsp. Alles Schwarz Schrift weiß ?

    Danke für Hinweise.
    Karsten



  • Es gibt 2 proprietäre Skin/Themes Libraries:

    Alternativ habe ich noch The Ultimate Toolbox Application Skins gefunden. Kannst dir ja mal den Sourcecode dazu anschauen (so wie ich das aber verstehe ist jede Komponente einzeln abgeleitet - ich weiß nicht, ob es auch eine globale Möglichkeit dafür gibt [außer die Systemfarben dafür zu ändern]).



  • @Th69 sagte in Grau:

    ßer die Systemfarben dafür zu ändern

    Hallo th69,
    genau es gab die BCG Lib um 2003 wurde dann von MS gekauft, daraus leitet sich das MFC+ ab,
    aber da muss man schon von vornherein damit alles erstellt haben.

    Da gab es auch Manifest Manipulationen , die hatten recht viele Probleme mit High DPI Screens, weswegen man nun
    im Kompatibilitätsmodus einer Verknüpfung dazu Schalter setzen kann.

    Heißt am Quellencode selber kann ich nicht mehr viel machen, müsste also am Konzept von MFC veränderlich sein.

    CodeJokck sieht gut aus, mit Grau und Schwarz .. aber auch hier nur für den Neustart eine Option. Alte Darstellungen
    auch mit komplexen Zusammenhängen lassen sich nachträglich bei großer Zahl nicht mehr ändern, auf sourcen Basis.

    Danke für deine Hinweise, muss wohl so bleiben..

    Gruß
    Karsten


  • Mod

    Die BCG Skins wurden identisch in das MFC Framework aufgenommen.



  • @Martin-Richter
    Hi Martin,
    genau die haben die BCG aufgekauft um 2006 , nutzt nur nix wenn die Anwendungen alle mit MFC und App gelöst sind, da fummelt man nicht mehr groß dran rum. Eigentlich sollte man auf Systemebene einschreiten können, schade das es schwerlich machbar sei ohne alles zu verfärben.


  • Mod

    Wieso. Sicherlich nutzt das was. Dialoge einfach von CBCGPDialogEx ableiten und Themeing erlauben.



  • @Martin-Richter sagte in Grau:

    CBCGPDialogEx

    Naja das bringt weitere Probleme mit sich, für kleine Anwendungen mal schnell änderbar, aber ich habe da ein Gewebe von
    mehr als 2 Duzend Projekte in der Solution mit 1 ~Million Zeilen Quellentext.
    Teilweise noch mit CodeJoke und anderen CodeGuru Elementen die über die Jahrzehnte gänzlich anderes moduliert wurden,.
    Eins haben alle gemein : Grau sind sie 🙂

    Aber nette Sache mit den BCG Meisterwerk.. das waren schon Meister ..

    Aber man muss es dann auch schon bei großen Projekten gleich dabei haben, vielleicht wäre ein GDI -Wrapper hier passend,
    aber der müsste ja utopisch aussehen..

    Grüße aus Preußen
    Karsten Schulz


  • Mod

    Die Klasse ist CBCGPDialog und nicht CBCGPDialogEx habe mich geirrt.

    Also meines Erachtens ist das gar kein Problem CDialog einfach in CBCGDialog tauschen.
    Selbst bei 1Mio Codezeilen. Mein Code Base ist auch nicht klein, und ich habe auch mal 200 Dialog-Klassen. Das hat nicht mal einen Tag gedauert.



  • @Martin-Richter So einfach ist es nicht, es gibt viele überladene CWnd's zu hunderten Ich werde in diesem Leben
    an der UI nicht mehr großflächig einwirken können, das hätte man vor 20 Jahren machen müssen. Es ist ein Urwald.
    Aber es ist nicht so gekommen wie angedroht von wegen :

    Der Programmierer macht sich seinen eigenen Himmel oder seine eigene Hölle ^^
    (Musse den Spruch nu 30 Jahre unterm Thread haben ^^)

    Niemand weiß wie weit er von der Realität entfernt ist 🙂

    Naja vielleicht wenn ich nochmal Frühlingsgefühle erhalte, gehe ich nochmal dran da..

    Noch ein Spruch aus der Amiga Zeitung 1987 "Im Ram sind alle Bilder Grau"



  • Du brauchst doch nur per "Find & Replace" alle "CWnd" (bzw. ": CWnd") durch die neue Basisklasse ersetzen (bzw. eine eigene Basisklasse dafür erzeugen, falls noch Anpassungen im Konstruktor vorgenommen werden müssen).


  • Mod

    @Th69 So sehe ich das auch!
    Dabei gehts hier nur um CDialog. Wenn die BCG benutzt wird geht das nahtlos... wen die noch nicht benutzt wird... na dann eben was anderes.



  • @Th69 sagte in Grau:

    Du brauchst doch nur per "Find & Replace" alle "CWnd" (bzw. ": CWnd") durch die neue Basisklasse ersetzen (bzw. eine eigene Basisklasse dafür erzeugen, falls noch Anpassungen im Konstruktor vorgenommen werden müssen).

    Vielleicht auch erstmal zur Probe mit -DCWnd=NeueKlasse kompilieren und schauen, was einen erwarten würde 😁.

    Edit: Ja, vielleicht doch keine so elegante Idee wegen eingebundener Header, die CWnd deklarieren/definieren. Zu schnell geantwortet 😉



  • Dieser Beitrag wurde gelöscht!

Anmelden zum Antworten