Seite 1 von 1

Änderung in der Transparentdarstellung

Verfasst: 15.05.2018 17:51
von Pelagio
Hallo,

ich habe jetzt das Funktionsupdate für Windows 10, Version 1803 bekommen und siehe ein kleine Programm von mir läuft nicht mehr korrekt.
Am Bildschirm soll ab und zu eine Zahl auftauchen und wieder verschwinden. Dieser Wert (Anzahl der Tage bis zu einem bestimmten Datum)
soll mit transparenten Hintergrund auftauchen was auch bis dato funktionierte. Jetzt allerdings wird der Hintergrund nur noch Schwarz angezeigt.
Ist zwar nicht schlimm sieht aber natürlich nicht so gut aus. Hier der Code

Code: Alles auswählen

EnableExplicit

ExamineDesktops()

Define lDate.i
Global gDCDesktop
Global gRect.RECT
Global gDeskX=DesktopWidth(0)
Global gDeskY=DesktopHeight(0)

Procedure Blink(vText.s, vFonthight, vFontwidht)
	Protected pWndDesktop, pFont, pPixX, pPixY

	pWndDesktop=FindWindowEx_(pWndDesktop, 0, "Progman", "Program Manager")
	pWndDesktop=FindWindowEx_(pWndDesktop, 0, "SHELLDLL_DefView", 0)
	pWndDesktop=FindWindowEx_(pWndDesktop, 0, "SysListView32", 0)
	gDCDesktop = GetDC_(pWndDesktop)

	SetTextColor_(gDCDesktop, #Red)
	SetBkMode_   (gDCDesktop, #TRANSPARENT)

	pFont = CreateFont_(vFonthight, vFontwidht, 0, 0,#FW_NORMAL,0,0,0,#ANSI_CHARSET,#OUT_DEFAULT_PRECIS,#CLIP_DEFAULT_PRECIS,#DEFAULT_QUALITY,#DEFAULT_PITCH|#FF_ROMAN,"Times New Roman")
	SelectObject_(gDCDesktop, pFont) 
	pPixX=Random(gDeskX - Len(vText)*30)
	pPixY=Random(gDeskY)

	gRect\top    = pPixY
	gRect\left   = pPixX
	gRect\right  = gRect\left + Len(vText) * 30
	gRect\bottom = gRect\top + 200

	DrawText_(gDCDesktop, vText, #PB_Any, gRect, #DT_SINGLELINE)
	DeleteObject_(pFont)
EndProcedure

Procedure Main(vDate.i)
	Protected pQuit.a, pEvent.i, pDummy.i, pValue.s = " TAGE"
	Protected pRestTage.i = (vDate - Date()) / (24*60*60) + 1

	If OpenWindow(0, 0, 0, 400, 300, "Vorruhestand", #PB_Window_Minimize|#PB_Window_NoActivate|#PB_Window_Invisible)
		AddWindowTimer(0, 123, 10000)
		Repeat
			pEvent=WaitWindowEvent(1000)
			Select pEvent
				Case #PB_Event_Timer
					If (EventTimer()=123)
						pDummy!1
						If (pDummy=1)
							If (pRestTage=1): pValue = " TAG": EndIf
							Blink("NUR NOCH " + Str(pRestTage) + pValue, 60, 20)
						Else
							InvalidateRect_(0, 0, 0)
						EndIf
					EndIf
				Case #PB_Event_CloseWindow
					Break
			EndSelect
		ForEver
		InvalidateRect_(0, 0, 0) 
		ReleaseDC_     (0, gDCDesktop)
	EndIf
EndProcedure

lDate = ParseDate("%dd.%mm.%yyyy", ProgramParameter())
If (lDate=>Date()): Main(lDate): EndIf

End
Vielleicht weiß ja jemand von Euch was sich geändert hat und wie man die transparente Darstellung wieder hinbekommt.

Re: Änderung in der Transparentdarstellung

Verfasst: 15.05.2018 18:57
von ccode_new
Vielleicht weiß ja jemand von Euch was sich geändert hat und wie man die transparente Darstellung wieder hinbekommt.
?

Bei mir funktioniert es mit transparentem Hintergrund.

Ich habe es mit:

Code: Alles auswählen

Main(Date())
getestet und die Timerzeit für Testzwecke etwas minimiert.

Dabei erscheint dann eine rote Schrift: "NUR NOCH 1 TAG" mit transparentem Hintergrund.

Der Fehler liegt wohl bei Microsoft.

???

Re: Änderung in der Transparentdarstellung

Verfasst: 16.05.2018 08:20
von Pelagio
Tatsächlich ccode_new,
es muss an Windows gelegen haben den heute funktionierte es wieder.
:bounce: