StatusBarIcon weg, wenn Window verdeckt wurde?

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Kurzer
Beiträge: 1617
Registriert: 25.04.2006 17:29
Wohnort: Nähe Hamburg

StatusBarIcon weg, wenn Window verdeckt wurde?

Beitrag von Kurzer »

Ist vielleicht nen Peanut, aber evtl. stolpert der ein oder andere auch drüber.

Ich wunderte mich, daß mein Icon in der Statusbar des Windows nicht refreshed wurde, wenn das Fenster von anderen verdeckt wurde.
Ich habe eine kleine grüne LED als Icon... und die war danach jedes mal wech.

Initialisiert habe ich das ganze so:

Code: Alles auswählen

CatchImage(0, ?LedGreen) : StatusBarIcon(#StatusBar_Main, 0, ImageID(0) ) : FreeImage(0)

...

LedGreen: IncludeBinary "C:\Mein_Datenpfad\LedGreen.ico"
Ich ging nämlich davon aus, daß der Befehl StatusBarIcon sich eine Kopie des Icons anlegt und ich das ursprüngliche Icon wieder freigeben kann.

Dem ist nicht so! Richtig wäre es also so:

Code: Alles auswählen

CatchImage(0, ?LedGreen) : StatusBarIcon(#StatusBar_Main, 0, ImageID(0) )  
[... Programmcode...]

Exit:
; Und erst am Ende des Programmes 
FreeImage(0)
; Wobei PB das ja auch von selbst freigibt.
Gruß Markus

PS: Ach so, weshalb ich überhaupt darauf gekommen bin das Icon gleich wieder zu free'n. Weil: Ein Icon in das Systray gepackt, bleibt auch nach dem Freigeben des Icons dort - auch wenn die Trayleiste zwischenzeitlich überdeckt war. Tja, und da habe ich es danach für das StatusBarIcon genauso machen wollen. :-) :

Code: Alles auswählen

AddSysTrayIcon (1, WindowID(#Window_Main), CatchImage(#TempPic, ?Icon)) : FreeImage(#TempPic)
"Never run a changing system!" | "Unterhalten sich zwei Alleinunterhalter... Paradox, oder?"
PB 6.12 x64, OS: Win 11 24H2 x64, Desktopscaling: 150%, CPU: I7 12700 H, RAM: 32 GB, GPU: Intel(R) Iris(R) Xe Graphics | NVIDIA GeForce RTX 3070
Useralter in 2025: 57 Jahre.