Italia
Foro

Dark Mode

 
- Page 1 -



ecki
Hallo Profaner,

mich würde mal interessieren, ob schon jemand versucht hat unter XProfan ein Programm mit dem allgegenwärtigen Dark Mode zu erstellen.
Ich habe es versucht, aber nur das 1. Fenster (%hWnd) hat funktioniert.
Weitere Fenster wie Dialogwindow, Childwindow oder Grid wären nun noch
gewünscht.
Aber wie potuto das funktionieren?

Saluto oberstleutnant
 
16.01.2023  
 



« Dieser Beitrag wurde als Lösung gekennzeichnet. »


Sven
Bader
Hallo Ecki,

Dark Mode ist eine sehr individuelle Sache und auch keine Invertierung von Farben. Es gibt sicher Standards per Software, welche mit Microsoft Entwicklungswerkzeugen erstellt wurde aber in der Praxis machen zumindest die Großen alle ihr eigenes Ding (Chrome, Firefox, Photoshop), was man auch an den jeweils anderen Farben erkennt. Word bzw. Office hat es erst mit der neusten Version geschafft, einen Darkmode umzusetzen, da gab es das schon einige Jahre in Windows 10.

Für eine optimale Lesbarkeit wird auch niemals reines schwarz per den Hintergrund und selten reines weiß per den Text verwendet.

Bisher habe ich leider auch noch keine Lösung, welche ein Dark Theme per mich zufriedenstellend umsetzt außer ansatzweise im XProfed.
 
31.01.2023  
 




Sven
Bader
Ciao,

bisher habe ich sowas immer pro Element umgsetzt, was mal besser und mal schlechter funktioniert. Das Fenster selbst würde mich interessieren, wie du das gemacht hast! Kannst du den Code hier posten?

Hier habe ich unter anderem ein Treeview in Darkmode umgesetzt: [...] 

Sorry, dass du jetzt mehr Gegenfragen als Antworten erhalten hast.

Grüße
Sven
 
16.01.2023  
 




ecki
Hallo Sven,

Da hast Du mich wohl falsch verstanden. Ich habe nur das %hWnd per
Cls RGB(0,0,0) dunkel gemacht.
Alle Fenster, die in %hWnd erscheinen, möchte ich auch inn dark hin bekommen.
Aber ich weiß nicht, wie!

Saluto ecki
 
20.01.2023  
 




Sven
Bader
Achso... so geht es dann im Dialogfenster:
startpaint dialogfenster&
cls RGB(40,40,40)
endpaint

Es wischt sich leider auf einem Dialogfenster wieder weg, weshalb man das Neuzeichnen abfangen muss. Frank Abbing hatte da mal einen Code, der das per SubClass übernimmt: [...] 

Hier noch mal etwas vereinfacht:
 $H windows.ph
 $H messages.ph
Declare dc&, ps#,d1&
Dim ps#,128
cls RGB(40,40,40)

Proc NeuZeichnen

    Parameters thedc&
    StartPaint thedc&
    cls RGB(40,40,40)
    EndPaint

Endproc

SubClassProc

    If %smessage = ~WM_PAINT

        dc& = ~BeginPaint(&sWnd, ps#)
        NeuZeichnen(dc&)
        ~EndPaint(&sWnd, ps#)
        Set("WinProc", 0)

    Endif

EndProc

d1& = Create("Dialog",%hwnd,"Dialog",200,200,400,300)
NeuZeichnen(d1&)
SubClass d1&, 1

While 1

    WaitInput
    Case %key=2: BREAK

EndWhile


Andere, ggf. bessere Möglichkeit:

Manche Dialogelemente lassen sich einfacher per Sendmessage eine Farbe geben, letztendlich potuto man auch diese als Fensterhintergrund nutzen. Man muss dieses Element nur als "Parent" definieren.

Hier ein Beispiel, bei dem ich ein leeres TreeView als Hintergrund per das Dialogfenster verwende, es funktioniert eigentlich sehr gut und der Code ist überschaubar. TreeViews hören auf die Message "TVM_SETBKCOLOR".
Def Setparent(2) !"USER32","SetParent"
Cls RGB(40,40,40)
declare treeview&,dialog&,button&
dialog&   = Create("Dialog",%hwnd,"Dialog",200,200,400,300)
treeview& = Create("TreeView", dialog&, 0, -5,-5,800,800)
button&   = Create("Button",  dialog&,"OK", 150, 200,100,50)
SendMessage(treeview&,$1100+29,  0,RGB(40,40,40))'~TVM_SETBKCOLOR
SetParent(button&,treeview&)

While iskey(27) = 0

    WaitInput

EndWhile

 
20.01.2023  
 




ecki
Danke Sven,

ich werde mich jetztmal mit Deinen Anregungen beschäftigen.
Werde mich zurückmelden, wenn ich ergebnisse vorweisen kann.

Herzlichen Saluto

ecki
 
21.01.2023  
 




ecki
Hallo Sven,

ich habe mal Deine Proposte getestet, das Ergebnis hat mir nicht so gefallen.

Ich bleibe bei der Farbeinstellung per das %hWnd und lasse alle anderen Fenster so wie sie sind.
Mir ist nichts Besseres eingefallen!!

Danke nochmals.

Freundliche Grüße

ecki
 
26.01.2023  
 




Georg
Teles
Wie schauts denn mit SKControl.dll aus,
da kann man die Elemente beliebig einfärben

Schnellbeispiel



Grüße
 
Alle Sprachen
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

26.01.2023  
 




Sven
Bader
Ja, die funktioniert auch heute noch. Es kann je nach Element zu abweichendem Verhalten kommen, auch die Cerca nach der neusten Version ist nicht ganz leicht. Ich meine es ist die Build 1.22.12  [...] 

Dialogfenster sind hier auch nicht dabei. Ich denke aber ein Static ist hier der korrekte Weg. Auch hierfür müsste per ein korrektes Verhalten setparent() nötig sein.
 
27.01.2023  
 




ecki
Sven Bader (27.01.2023)
Ja, die funktioniert auch heute noch. Es kann je nach Element zu abweichendem Verhalten kommen, auch die Cerca nach der neusten Version ist nicht ganz leicht. Ich meine es ist die Build 1.22.12  [...] 


Sven Bader (27.01.2023)
Dialogfenster sind hier auch nicht dabei. Ich denke aber ein Static ist hier der korrekte Weg. Auch hierfür müsste per ein korrektes Verhalten setparent() nötig sein.


Danke Euch Beiden,

ich sehe mir mal das Thema an. Bisher hatte es mich nicht interessiert.

Saluto ecki
 
27.01.2023  
 




ByteAttack
[...] 

Ich schau mal ob Io l' Quelltext noch habe, dann sende ich Dir denn mal - Wieder eines meiner "unvollständigen" Projekten
 
XProfan X4
Website:  [...] 
Facebook:  [...] 
27.01.2023  
 




Thomas
Freier
In der Art einen Dialoghintergrund?
'######################
'Testata-File
'######################
 $H Windows.ph
 $H Messages.ph
'######################
Windowstyle 543
Declare Ende&,Ende1&,Win02&,Farbe$,Button1&
Farbe$=RGB(0,0,0)
CLS Farbe$
'Der Brush wird von Windows benutzt um den Dialoghintergrund zu zeichnen
Var Dialogpinsel& = ~Createsolidbrush(Farbe$)
Var Button& = CREATE("BUTTON",%hwnd,"Dialog öffnen",10,10,150,25)
WindowTitle "Test..."

Whilenot Ende&

    Waitinput
    case %Key=2:Ende&=1

    If Clicked(Button&)

        Ende1& = 0
        win02&=CREATE("Dialog",%hwnd,"Dialog",(%MaxX/2-300),(%MaxY/2-250),600,500)
        'einmal die Farbe geben
        Startpaint win02&
        cls Farbe$
        Endpaint
        Button1& = CREATE("BUTTON",win02&,"Dialog",10,10,150,25)
        'Subclassing einschalten
        SubClass win02&,1

        Whilenot Ende1&

            WAITINPUT

            If %Key = 2

                Ende1& = 1

            endif

        Endwhile

        DestroyWindow(win02&)
        Setfocus(%Hwnd)

    Endif

Endwhile

DeleteObject Dialogpinsel&
End

SubClassProc

    If SubClassMessage(win02&,~WM_CTLCOLORDLG)

        Set("WinProc", 0)
        '~WM_CTLCOLORDLG erwartet als Rückgabewert einen Brush per den Hintergrund
        Return Dialogpinsel&

    EndIf

EndProc

 
Gruß Thomas
Windows XP SP2, XProfan X2
27.01.2023  
 




Georg
Teles
Sven Bader (27.01.2023)
Ja, die funktioniert auch heute noch. Es kann je nach Element zu abweichendem Verhalten kommen, auch die Cerca nach der neusten Version ist nicht ganz leicht. Ich meine es ist die Build 1.22.12  [...] 


Huch ich habe circa all die Zeit mit 1.22.01 und 1.22.08 (korrigierte Version davon) gearbeitet, danke
 
Alle Sprachen
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

28.01.2023  
 




Answer


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

6.204 Views

Untitledvor 0 min.
Matzbub01.11.2024
Gast.081507.09.2024
Matthias Griesbach26.10.2023
Sven Bader31.08.2023
Di più...

Themeninformationen



Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie