Änderung in der Transparentdarstellung

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Pelagio
Beiträge: 423
Registriert: 11.11.2004 17:52
Computerausstattung: Intel Core i3-4170 CPU 3,70 GHz
8,00 GB Arbeitsspeicher
WIN 10 Pro 64 Bit Betriebssystem
Wohnort: Bremen

Änderung in der Transparentdarstellung

Beitrag 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.
Ohne Zeit kein Fleiß
Auf neustem Stand zu sein ist eine Kunst die nicht jeder perfektioniert [Win10Pro(64); PB6.03 LTS]. :allright:
ccode_new
Beiträge: 1214
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Re: Änderung in der Transparentdarstellung

Beitrag 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.

???
Betriebssysteme: div. Windows, Linux, Unix - Systeme

no Keyboard, press any key
no mouse, you need a cat
Benutzeravatar
Pelagio
Beiträge: 423
Registriert: 11.11.2004 17:52
Computerausstattung: Intel Core i3-4170 CPU 3,70 GHz
8,00 GB Arbeitsspeicher
WIN 10 Pro 64 Bit Betriebssystem
Wohnort: Bremen

Re: Änderung in der Transparentdarstellung

Beitrag von Pelagio »

Tatsächlich ccode_new,
es muss an Windows gelegen haben den heute funktionierte es wieder.
:bounce:
Ohne Zeit kein Fleiß
Auf neustem Stand zu sein ist eine Kunst die nicht jeder perfektioniert [Win10Pro(64); PB6.03 LTS]. :allright:
Antworten