Deutsch
Forum

Farbe von Fenstern (bzw. Dialogen) ändern

Vielen Dank für Eure Hilfe!

 

Torben
Nissen


Beim SubClassing ist nur das Problem, dass der Text dann wieder einen beigen Hintergrund (Windows XP) hat - siehe Grafik.
Gibt es da eine Möglichkeit das "Textproblem" hinzubekommen?

Die XFrame.dll sieht sehr vielversprechend aus. Die werde ich mir mal genauer ansehen...

Vielen Dank für Eure Tipps!
Vielleicht hat jemand ja noch eine Idee, wie der Hintergrund vom Text beim SubClassing unverändert bleibt?

4 kB
Hochgeladen:30.01.2013
Ladeanzahl0
Herunterladen
 
30.01.2013  
 



Bleibt nur den Text auch subclassen -

da lautet die Message WM_CTLCOLORSTATIC -

und dann SetBkMode( wParam , TRANSPARENT )
 
30.01.2013  
 




ByteAttack
Schau mal [...] 
 
30.01.2013  
 




Torben
Nissen
Vielen Dank! Das ist auch super! Ich muss mich mal mehr mit dll's beschäftigen... !
 
31.01.2013  
 




Julian
Schmidt
Wie ich finde die einfachste Lösung ist die FaControl.dll von Frank Abbing. [...] 
 
XProfan X2
Win7 Professional, SP1, AMD FX(tm)-8350 Eight-Core Processor

˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
31.01.2013  
 




Torben
Nissen
Hallo,
heute habe ich (endlich) wieder Zeit, um zu programmieren. Dabei beschäftige ich mich immer noch mit der Gestaltung von den Fenstern. Trotz der tollen dll's möchte ich es selbst mit SubClassing probieren. Anhand des Beispiels von Andreas Miethe und der Hilfedatei, bekomme ich es hin, die Hintergrundfarbe nun zu ändern.
iF war so nett und hat mir den Hinweis gegeben, dass man den Text auch subclassen muss, wenn der beige Hintergrund nicht durchscheinen soll. Ich habe jedoch noch nicht die Sache mit "SetBkMode( wParam , TRANSPARENT )" verstanden. In der Hilfe finde ich zu "wParam":

&sWParam: Der WParam-Wert der Message.

Wie setzte ich "SetBKMode" und "wParam, Transparent" um? (SendMessage?)
 
02.02.2013  
 




Jörg
Sellmeyer
Grundsätzlich funktioniert es so:
KompilierenMarkierenSeparieren
 $H windows.ph
Cls
Var Ctrl& = Create("Text",%hwnd,"",100,100,200,24)
WaitInput
~SetBkMode(Ctrl&,~TRANSPARENT)
WaitInput

Was genau du da jetzt beim Subclassing machen musst weiß ich aber im Moment auch nicht.
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
02.02.2013  
 



Imho einfach WM_CTLCOLORSTATIC Nachricht in wProc und dann den bkmode auf hdc == wparam.
 
02.02.2013  
 




Andreas
Miethe


Hier mal ein kleines Beispiel.



Ich hoffe es ist ausreichend kommentiert.
KompilierenMarkierenSeparieren
'######################
'Header-Dateien
'######################
 $H Windows.ph
 $H Messages.ph
'######################
Set("FastMode",1)'FastMode einschalten
Windowstyle 543
WindowTitle "Test"
window 480,140
cls $993333
UseIcon "A"
Declare Ende&,TextControl&,EditControl&
Declare BackGroundBrush&
SetStyle %hWnd,1,(GetStyle(%hWnd,1) | ~WS_CLIPCHILDREN)'verhindert das Flackern der Conrrols
SubClass %HWnd,1
TextControl& = Create("TEXT",%hwnd,"Farbiger Text",10,10,120,24)
EditControl& = Create("EDIT",%hwnd,"Edit mit Farbverlauf",10,40,400,24)
'einen Farbverlauf für den Hintergrund des Edit-Controls
BackGroundBrush& = CreateGradientBrush(EditControl&)

Whilenot Ende&

    Waitinput

Endwhile

~DeleteObject(BackGroundBrush&)
End

SubClassProc

    If SubClassMessage(&sWnd,~WM_CLOSE)

        Ende& = 1
        Set("WinProc", 1)

    ElseIf SubClassMessage(&sWnd,~WM_CTLCOLOREDIT)'Edit-Controls

        Set("WinProc", 0)
        'SetBkMode setzt den Hintegrund-Modus des gewählten Device-Contextes (HDC)
        ~SetBkMode(&swparam,~Transparent)
        'SetTextColor setzt die Textfarbe des Device-Contextes (HDC)
        ~SetTextColor(&swparam,$00FFFF)
        Return BackGroundbrush&'Rückgabe ist der Brush

    ElseIf SubClassMessage(&sWnd,~WM_CTLCOLORSTATIC)'Static-Controls

        Set("WinProc", 0)
        'SetBkMode setzt den Hintegrund-Modus des gewählten Device-Contextes (HDC)
        ~SetBkMode(&swparam,~Transparent)'&swparam ist der Device-Context des Controls
        'SetTextColor setzt die Textfarbe des Device-Contextes (HDC)
        ~SetTextColor(&swparam,$0099FF)
        Return ~GetStockObject(~NULL_BRUSH)'Rückgabe ist der Brush

    EndIf

EndProc

Proc GradientRect

    Parameters DC&,x%,y%,w%,h%,Color1&,Color2&,HV&
    Declare GradRect#,Trivertex#
    Dim GradRect#,8
    Dim Trivertex#,32
    Long Gradrect#,0 = 0,1
    Long Trivertex#,0=x%,y%
    word Trivertex#,8=GETRVALUE(Color1&) << 8,GETGVALUE(Color1&) << 8,GETBVALUE(Color1&) << 8,0
    Long Trivertex#,16=w%,h%
    word Trivertex#,24=GETRVALUE(Color2&) << 8,GETGVALUE(Color2&) << 8,GETBVALUE(Color2&) << 8,0
    External("Msimg32.dll","GradientFill",DC&,Trivertex#,2,Gradrect#,HV&,0)
    Dispose Trivertex#
    Dispose Gradrect#

EndProc

Proc CreateGradientBrush

    Parameters tControl&
    Var Result& = 0
    Var BMP& = Create("hNewPic", Width(tControl&),1,0)
    StartPaint BMP&
    GradientRect(%hdc,0,0,Width(tControl&),1,$404000,$CAFFCA,1)
    EndPaint
    Result& = ~CreatePatternBrush(BMP&)
    ~DeleteObject(BMP&)
    Return Result&

EndProc


4 kB
Hochgeladen:02.02.2013
Ladeanzahl158
Herunterladen
 
Gruss
Andreas
________ ________ ________ ________ _
Profan 3.3 - XProfanX2
Win 95,98,ME,2000,XP,Vista - Win 7 32 / 64 Bit
ASUS X93S - Intel Core I7-NVIDIA GForce 540M 8GB Arbeitsspeicher
Homepage :  [...] 
02.02.2013  
 




Torben
Nissen
Vielen Dank, Andreas! Damit werde ich jetzt erstmal arbeiten können!

... Ich habe es geschafft! Das Beispiel von Andreas ist super! Danke!!!
 
02.02.2013  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

9.482 Betrachtungen

Unbenanntvor 0 min.
Erasmus.Herold19.11.2018
Alibre06.01.2018
Wilfried28.05.2016
Torben Nissen04.08.2014
Mehr...

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


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