| |
|
|
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? |
|
|
| |
|
|
|
| Bleibt nur den Text auch subclassen -
da lautet die Message WM_CTLCOLORSTATIC -
und dann SetBkMode( wParam , TRANSPARENT ) |
|
|
| |
|
|
|
ByteAttack | |
|
| |
|
|
|
Torben Nissen | Vielen Dank! Das ist auch super! Ich muss mich mal mehr mit dll's beschäftigen... ! |
|
|
| |
|
|
|
Julian Schmidt | Wie ich finde die einfachste Lösung ist die FaControl.dll von Frank Abbing. [...] |
|
|
| |
|
|
|
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?) |
|
|
| |
|
|
|
Jörg Sellmeyer | Grundsätzlich funktioniert es so: KompilierenMarkierenSeparieren 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. |
|
|
| |
|
|
|
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
|
|
|
| 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!!! |
|
|
| |
|
|