Frame3D Gadgets Farbe ändern?
Frame3D Gadgets Farbe ändern?
Hallo,
eigentlich kam ich nur durch zufall drauf, bei meinem XP wurden beim selbstgeschriebenen PB Programm die Schriftfarben der Frame3D Gadgetschrift immer in Blau dargestellt. Irgendwann, vielleicht haben die Kinder bei den Windowseinstellungen was verändert, waren die Schriftfarben bei den Frame3D Gadgets auf einmal schwarz.
Frage: Kann man die Schriftfarbe bei den Frame3D Gadget schon beim Programmieren einstellen ?
eigentlich kam ich nur durch zufall drauf, bei meinem XP wurden beim selbstgeschriebenen PB Programm die Schriftfarben der Frame3D Gadgetschrift immer in Blau dargestellt. Irgendwann, vielleicht haben die Kinder bei den Windowseinstellungen was verändert, waren die Schriftfarben bei den Frame3D Gadgets auf einmal schwarz.
Frage: Kann man die Schriftfarbe bei den Frame3D Gadget schon beim Programmieren einstellen ?
- unix
- Beiträge: 361
- Registriert: 15.02.2005 19:25
- Wohnort: Zwischen Coburg und Bamberg :-)
- Kontaktdaten:
Ja ich hab da mal was gesehen mit dem man sowas machen kann auf www.purearea.net war glaub ich mal ne Userlib muss nochmal schauen wie die geheißen hat
[EDIT]
ich hab den Namen PBOSL_SkinWin
hab aber noch keinen Link gefunden Stell sie aber auf meiner Page ich hoffe ich hab alles schau mal in den nächsten 5min auf meiner Page da kannst du sie downloaden.
[EDIT]
kannst Downloaden
http://harry555.ha.funpic.de/index.php?site=files&cat=1
[EDIT]
Help musste mal Googeln da findet mal immer was ^^
[EDIT]
ich hab den Namen PBOSL_SkinWin
hab aber noch keinen Link gefunden Stell sie aber auf meiner Page ich hoffe ich hab alles schau mal in den nächsten 5min auf meiner Page da kannst du sie downloaden.
[EDIT]
kannst Downloaden
http://harry555.ha.funpic.de/index.php?site=files&cat=1
[EDIT]
Help musste mal Googeln da findet mal immer was ^^
Hier steht normalerweise die Putzfrau drin,
die hat aber Urlaub.
MfG : Unix
die hat aber Urlaub.
MfG : Unix
Hallo unix,
danke für die Antwort, muß aber erst mal sehen, ob ich mit deiner lib umgehen kann,hihi. Ja, aber komisch ist, ich weiß jetzt, daß die Veränderungen im Quelltext selbst (wahrscheinlich unwissentlich) vorgenommen wurden, denn nach dem Start eines anderen PB Programmes sind die Frame3D Überschriften noch BLAU. Sehr komisch.
Also vielen Dank, ich versuche mal, mit dieser Lib zurechtzukommen
danke für die Antwort, muß aber erst mal sehen, ob ich mit deiner lib umgehen kann,hihi. Ja, aber komisch ist, ich weiß jetzt, daß die Veränderungen im Quelltext selbst (wahrscheinlich unwissentlich) vorgenommen wurden, denn nach dem Start eines anderen PB Programmes sind die Frame3D Überschriften noch BLAU. Sehr komisch.
Also vielen Dank, ich versuche mal, mit dieser Lib zurechtzukommen
Code: Alles auswählen
; German forum: http://robsite.de/php/pureboard/viewtopic.php?t=973&highlight=
; Author: Feri
; Date: 11. May 2003
;******************************************************************************
;* Beispiel zum Einfärben von Gadgets *
;******************************************************************************
;
Global HintergrundFarbe1
Global HintergrundFarbe2
HintergrundFarbe1=CreateSolidBrush_(RGB(0,0,0)) ; schwarz
HintergrundFarbe2=CreateSolidBrush_(RGB(255,255,255)) ; weiß
;
Procedure COL_STRINGGADGET(WindowID,Message,wParam,lParam)
;:::::FÄRBT STRINGGADGET UM:::::
Result=#PB_ProcessPureBasicEvents
Select Message
Case #WM_CTLCOLOREDIT
; ::: #WM_CTLCOLOREDIT funktioniert für alle SkinGadget und StringGadget :::
Select lParam
Case GadgetID(1) ; hier die Gadget-Nummer angegeben
SetBkMode_(wParam,#TRANSPARENT)
SetTextColor_(wParam,RGB(0,255,0)) ; Schriftfarbe (grün)
Result=HintergrundFarbe1 ; Hintergrundfarbe (schwarz)
EndSelect
Case #WM_CTLCOLORSTATIC
; ::: #WM_CTLCOLORSTATIC funktionert für alle Frame3DGadget, OptionGadget, :::
; ::: TextGadget und TrackBarGadget :::
Select lParam
Case GadgetID(2) ; das ist die GadgetID für das TextGadget(2,...)
SetBkMode_(wParam,#TRANSPARENT)
SetTextColor_(wParam,RGB(0,0,0)) ; Schriftfarbe (schwarz)
Result=HintergrundFarbe2 ; Hintergrundfarbe (weiß)
Case GadgetID(3) ; das ist die GadgetID für das TextGadget(3,...)
SetBkMode_(wParam,#TRANSPARENT)
;SetTextColor_(wParam,RGB(0,255,0)) ; Schriftfarbe (grün)
Result=CreateSolidBrush_($FF) ; Hintergrundfarbe (schwarz)
EndSelect
; Case #WM_CTLCOLORLISTBOX
; ::: #WM_CTLCOLORLISTBOX funktioniert für alle ListBoxGadget :::
EndSelect
ProcedureReturn Result
EndProcedure
;
OpenWindow(0,100,300,400,200,"Testfenster",#PB_Window_SystemMenu)
SetWindowCallback(@COL_STRINGGADGET())
;
CreateGadgetList(WindowID(0))
StringGadget(1,10,10,90,20,"StringGadget")
TextGadget(2,10,40,300,100,"TextGadget 2",#PB_Text_Border)
Frame3DGadget(3,10,160,300,30,"TextGadget 3")
;
Repeat
Until WaitWindowEvent() = #PB_Event_CloseWindow
DeleteObject_(HintergrundFarbe1)
DeleteObject_(HintergrundFarbe2)
End
; ExecutableFormat=Windows
; EOF
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Einfach in den Compiler-Einstellungen den XP-Style wieder aktivieren, dann wirds BLAU
Gruß
Thomas

Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

#PB_Frame3D_Flat macht's schwarz, egal welcher Skin;
#PB_Frame3D_Borderless macht's sogar UNSICHTBAR!!!!

#PB_Frame3D_Borderless macht's sogar UNSICHTBAR!!!!


PB 4.30
Code: Alles auswählen
Macro Happy
;-)
EndMacro
Happy End
- Fluid Byte
- Beiträge: 3110
- Registriert: 27.09.2006 22:06
- Wohnort: Berlin, Mitte
- Fluid Byte
- Beiträge: 3110
- Registriert: 27.09.2006 22:06
- Wohnort: Berlin, Mitte
Probier mal das hier gerdra. Funktioniert auch mit XP Themes:
Den optionalen Style Parameter habe ich weggelassen da diese eh keinen Text darstellen. Außerdem sehen die Stile mit oder ohne XP Theme identisch aus.
Code: Alles auswählen
; Title: Ownerdraw Frame3D Control
; Author: Fluid Byte
; Date: December 31, 2006
; Compiler: PureBasic v4.02
Structure FRAME3DEX
lpPrevFunc.l
clrText.l
bThemeXP.b
EndStructure
Procedure Frame3DExProc(hWnd.l,uMsg.l,wParam.l,lParam.l)
Protected hDC.l,ps.PAINTSTRUCT,*frmex.FRAME3DEX,Title.s,fts.SIZE,wrc.RECT,lpBuffer.l,hThemeButton.l
*frmex = GetWindowLong_(hwnd,#GWL_USERDATA)
Select uMsg
Case #WM_DESTROY
*frmex\lpPrevFunc = -1
ProcedureReturn 0
Case #WM_PAINT
hdc = BeginPaint_(hwnd,ps)
SelectObject_(hdc,SendMessage_(hwnd,#WM_GETFONT,0,0))
Title = GetGadgetText(GetDlgCtrlID_(hwnd))
GetTextExtentPoint32_(hdc,Title,Len(Title),fts)
GetClientRect_(hWnd,wrc)
SetRect_(wrc,wrc\left,wrc\top+fts\cy/2,wrc\right,wrc\bottom)
If OSVersion() = #PB_OS_Windows_XP And IsThemeActive_() And IsAppThemed_() And *frmex\bThemeXP
lpBuffer = AllocateMemory(13) : PokeS(lpBuffer,"Button",-1,1)
hThemeButton = OpenThemeData_(WindowID(0),lpBuffer)
DrawThemeBackground_(hThemeButton,hdc,4,1,wrc,0)
CloseThemeData_(hThemeButton)
FreeMemory(lpBuffer)
Else
DrawEdge_(hdc,wrc,#EDGE_ETCHED,#BF_RECT)
EndIf
SetBkColor_(hdc,GetSysColor_(#COLOR_3DFACE))
SetTextColor_(hdc,*frmex\clrText)
TextOut_(hdc,9,0,Title,Len(Title))
EndPaint_(hwnd,ps)
ProcedureReturn 0
Default
If *frmex\lpPrevFunc = -1 : FreeMemory(*frmex) : Else
ProcedureReturn CallWindowProc_(*frmex\lpPrevFunc,hWnd,uMsg,wParam,lParam)
EndIf
EndSelect
EndProcedure
Procedure Frame3DGadgetEx(GadgetID.w,X.w,Y.w,Width.w,Height.w,Text.s,Color.l=0)
Frame3DGadget(GadgetID,X,Y,Width,Height,Text)
Protected *frmex.FRAME3DEX,Filename.s,HINSTANCE.l
*frmex.FRAME3DEX = AllocateMemory(SizeOf(FRAME3DEX))
*frmex\lpPrevFunc = SetWindowLong_(GadgetID(GadgetID),#GWL_WNDPROC,@Frame3DExProc())
*frmex\clrText = Color
Filename = Space(#MAX_PATH) : GetModuleFileName_(0,Filename,#MAX_PATH)
HINSTANCE = LoadLibrary_(Filename)
*frmex\bThemeXP = FindResource_(HINSTANCE,1,24)
FreeLibrary_(HINSTANCE)
SetWindowLong_(GadgetID(GadgetID),#GWL_USERDATA,*frmex)
ProcedureReturn GadgetID(GadgetID)
EndProcedure
OpenWindow(0,0,0,400,300,"Ownerdraw Frame3D Control",#WS_OVERLAPPEDWINDOW | 1)
CreateGadgetList(WindowID(0))
SetGadgetFont(#PB_Default,LoadFont(0,"Arial",9))
Frame3DGadgetEx(101,10,5,200,90,"Frame3DGadgetEx #1",#Red)
Frame3DGadgetEx(102,10,100,200,90,"Frame3DGadgetEx #2",RGB(40,180,70))
Frame3DGadgetEx(103,10,195,200,90,"Frame3DGadgetEx #3",#Blue)
While WaitWindowEvent() ! 16 : Wend