Ich möchte Mein Fenster wie das Startmenü handeln,
klickt man auf dem SysTrayIcon zeigt er es an, bei einen weiteren klick wird es wieder versteckt.
Ausserdem sobald es inactive wird.
Wenn ich nun aber die PB Befehle benutze wird das Fenster ja sofort inactive sobald ich im Systray klicke, verschwindet also, und taucht danach gleich wieder auf.
Oh Man, ich glaub ich schreibe zu viel^^
Sample
Code: Alles auswählen
EnableExplicit
Procedure.s ExePath()
Protected temp$ = Space(#MAX_PATH)
GetModuleFileName_(0, @temp$, #MAX_PATH)
ProcedureReturn GetPathPart(temp$)
EndProcedure
If OpenWindow(0, 0, 0, 0, 0, "", #PB_Window_Invisible)
DisableWindow(0, 1)
Else
End
EndIf
If OpenWindow(1, 0, 0, 200, 200, "TEST", #PB_Window_ScreenCentered|#PB_Window_SystemMenu, WindowID(0))
StickyWindow(1, 1)
Else
End
EndIf
Procedure WindowCallback(hWnd, Msg, wParam, lParam)
Protected Result.l, title$, len.l
Result = #PB_ProcessPureBasicEvents
Select Msg
Case #WM_ACTIVATE
If wParam = #WA_INACTIVE
If IsWindowVisible_(hWnd) = 1
Debug "Hide while Inactive"
ShowWindow_(hWnd, #SW_HIDE)
EndIf
EndIf
If wParam = #WA_ACTIVE Or wParam = #WA_CLICKACTIVE
SetForegroundWindow_(hWnd)
EndIf
EndSelect
ProcedureReturn Result
EndProcedure
Global hImg.l = LoadImage(#PB_Any, ExePath() + "icon.ico")
If hImg <> 0
AddSysTrayIcon(0, WindowID(1), ImageID(hImg))
Else
End
EndIf
SetWindowCallback(@WindowCallback(), 1)
Global WindowEvent.l
Repeat
WindowEvent = WindowEvent()
Select WindowEvent
Case #WM_ACTIVATE
Debug "inactive"
Case #PB_Event_SysTray
If EventType() = #PB_EventType_LeftClick
If IsWindowVisible_(WindowID(1))
Debug "Hide while Systrayicon Click"
HideWindow(1, 1)
Else
Debug "Show while Systrayicon Click"
HideWindow(1, 0)
EndIf
EndIf
Case #PB_Event_CloseWindow: End
Case #False: Delay(1)
EndSelect
ForEver