Seite 2 von 4
Verfasst: 17.07.2005 23:07
von vonTurnundTaxis
Es ist gut, einen Account beim englischen Forum zu haben.
Ich habe dort das gefunden:
Code: Alles auswählen
; Original code by Danilo and Num3 (thanks, guys).
; Modified by PB to get a transparent TextGadget.
Global TextGadgetBackground,TextGadgetForeground
TextGadgetBackground=GetStockObject_(#HOLLOW_BRUSH)
TextGadgetForeground=RGB($FF,$00,$00)
Procedure WinProc(hWnd,Msg,wParam,lParam)
If Msg=#WM_CTLCOLORSTATIC And lParam=GadgetID(0)
SetBkMode_(wParam,#TRANSPARENT)
SetTextColor_(wParam,TextGadgetForeground)
ProcedureReturn TextGadgetBackground
Else
ProcedureReturn #PB_ProcessPureBasicEvents
EndIf
EndProcedure
OpenWindow(0,0,0,250,100,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"test")
SetWindowCallback(@WinProc()) : CreateGadgetList(WindowID())
TextGadget(0,0,0,225,13,"This TextGadget has a transparent background")
r=LoadImage(1,"Babe.bmp") : ImageGadget(1,0,0,0,0,r)
Repeat : Until WaitWindowEvent()=#PB_EventCloseWindow
DeleteObject_(TextGadgetBackground)
(Ich habe den Code nicht getestet; er ist allerdings von Danilo und müsste also funktionieren

)
Verfasst: 17.07.2005 23:11
von Konne
JUHU es geht!!!
Getestet mit Skinwin^^
Sowas gehört doch ins Codearchiv.
Verfasst: 18.07.2005 00:08
von Andre
Konne hat geschrieben:Sowas gehört doch ins Codearchiv.
Wird schon...

Re: Textgadget
Verfasst: 26.03.2014 00:20
von Moxl
Hallo
habe eben nach nem Code gesucht den Hintergrund von einem TextGadget transparent zu machen und da bin ich auf den Code von vonTurnundTaxis gestoßen
Jetzt habe ich aber 4 Textgadget, mit 2 verschiedenen schriftfarben, die transparent gemacht werden müssen und mit dem Code funktioniert das bei mir leider immer nur mit einem textgadget :/
kann mir das jemand so umschreiben das sich die transparenz auf alle 4 textgadget auswirkt?
kenn mich leider keinen meter mit callbacks aus
danke schonmal im vorraus

Re: Textgadget
Verfasst: 26.03.2014 00:27
von RSBasic
Code: Alles auswählen
; Original code by Danilo and Num3 (thanks, guys).
; Modified by PB to get a transparent TextGadget.
Global TextGadgetBackground,TextGadgetForeground
TextGadgetBackground=GetStockObject_(#HOLLOW_BRUSH)
TextGadgetForeground=RGB($FF,$00,$00)
Procedure WinProc(hWnd,Msg,wParam,lParam)
If Msg=#WM_CTLCOLORSTATIC
Select lParam
Case GadgetID(0), GadgetID(1), GadgetID(2)
SetBkMode_(wParam,#TRANSPARENT)
SetTextColor_(wParam,TextGadgetForeground)
ProcedureReturn TextGadgetBackground
EndSelect
Else
ProcedureReturn #PB_ProcessPureBasicEvents
EndIf
EndProcedure
OpenWindow(0,0,0,250,100,"",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
SetWindowCallback(@WinProc()); : CreateGadgetList(WindowID(0))
TextGadget(0,0,0,225,13,"This TextGadget has a transparent background")
TextGadget(1,0,20,225,13,"This TextGadget has a transparent background")
TextGadget(2,0,40,225,13,"This TextGadget has a transparent background")
;r=LoadImage(1,"Babe.bmp") : ImageGadget(1,0,0,0,0,r)
SetWindowColor(0,65000)
Repeat : Until WaitWindowEvent()=#PB_Event_CloseWindow
DeleteObject_(TextGadgetBackground)
Re: Textgadget
Verfasst: 26.03.2014 00:48
von Moxl
Vielen Dank
also funktionieren tut es nur leider hab ich noch das problem das ich 2 verschiedene schriftfarben in einem fenster habe.
und in dem code wird ja nur eine farbe definiert.
Re: Textgadget
Verfasst: 26.03.2014 11:14
von RSBasic
Code: Alles auswählen
EnableExplicit
Define EventID
Global TextGadgetBackground = GetStockObject_(#HOLLOW_BRUSH)
Procedure WinProc(hWnd, Msg, wParam, lParam)
Protected GadgetNr
Select Msg
Case #WM_CTLCOLORSTATIC
GadgetNr = GetProp_(lParam, "PB_ID")
Select GadgetNr
Case 0, 1, 2
SetBkMode_(wParam, #TRANSPARENT)
SetTextColor_(wParam, GetGadgetColor(GadgetNr, #PB_Gadget_FrontColor))
ProcedureReturn TextGadgetBackground
EndSelect
EndSelect
ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure
If OpenWindow(0, 0, 0, 500, 400, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
TextGadget(0, 10, 10, 250, 20, "This TextGadget has a transparent background")
TextGadget(1, 10, 30, 250, 20, "This TextGadget has a transparent background")
TextGadget(2, 10, 50, 250, 20, "This TextGadget has a transparent background")
SetGadgetColor(1, #PB_Gadget_FrontColor, RGB(0, 0, 255))
SetGadgetColor(0, #PB_Gadget_FrontColor, RGB(255, 0, 0))
SetWindowColor(0, RGB(255, 255, 0))
SetWindowCallback(@WinProc())
Repeat
EventID = WaitWindowEvent()
If EventID = #PB_Event_CloseWindow
DeleteObject_(TextGadgetBackground)
End
EndIf
ForEver
EndIf
Re: Textgadget
Verfasst: 26.03.2014 12:39
von Moxl
sehr schön funktioniert bestens
jetzt hab ich nur noch ein einziges problem
und zwar wenn ein string angezeigt wird wo ein "&" <--- zeichen drin vorkommt, dann zeigt er mir nur ein " _" <--- an :/ string hab ich schon mit debug überprüft und ist aber soweit korrekt.
Re: Textgadget
Verfasst: 26.03.2014 12:42
von RSBasic
Das ist ein Windows-Standardverhalten. Das Zeichen wird u.a. für Tastenkombination in Menüs verwendet, damit der Benutzer weiß, dass er die Taste mit diesem Zeichen drücken muss, um es aufzurufen.
Wenn du das Und-Zeichen darstellen möchtest, dann schreibe das Und-Zeichen doppelt.
Re: Textgadget
Verfasst: 26.03.2014 12:54
von Moxl
ah okay danke
aber jetzt hat sich noch ein problem eingeschlichen
und zwar wenn ich den text mittels GetGadgetText() wieder ermitteln will bekomme ich nichts raus
Also einen leeren string..
