Seite 1 von 1

StatusBarIcon weg, wenn Window verdeckt wurde?

Verfasst: 13.06.2007 16:46
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)