Seite 1 von 1
Reaktion wenn Fenster minimiert ist
Verfasst: 17.12.2006 23:04
von fastbit
Hallo Leute,
ich habe ein Problem:
Ich hab n kleines chat programm geschrieben und nun soll mein Client auf eingehende Nachrichten ragieren, wenn das Fenster minimiert in der Taskleiste liegt.
Ich hab schon mit IsIconic_ aus der WIN API herumexperimentiert aber es geht nicht.
Hat mir vieleicht jemann n tip oder n codeschnipsel wie das geht?
Also wenn das Fenster minimiert ist oder den Fokus nicht hat, dann soll es wieder aufgehen oder einen Sound spielen, wenn eine Mess reinkommt.
Vielen Dank an Alle
Andi
Verfasst: 17.12.2006 23:12
von Kaeru Gaman
nuja.. du musst das ganze schon richtig ansetzen...
eine möglichkeit ist, in jedem schleifendurchlauf erstmal zu checken, ob dein fenster den fokus hat.
Code: Alles auswählen
If GetFocus_()<>WindowID(MeinFensterNr)
Focus = 0
Else
Focus = 1
EndIf
und du wirst ja in deiner hauptschleife irgendwo darauf reagieren, dass ne nachricht reinkommt...
wenn also ne nachricht reinkommt, und dein Flag Focus ist 0,
dann spielste nen sound ab....
PS:
vielleicht hat das mit IsIconic_() nicht geklappt, weil du nicht
das Handle sondern die PB-Nummer des Fensters angegeben hast?
sollte funktionieren.
Verfasst: 17.12.2006 23:33
von ts-soft
Code: Alles auswählen
If OpenWindow(0, 100, 100, 640, 480, "", #PB_Window_MaximizeGadget|#PB_Window_MinimizeGadget|#PB_Window_SystemMenu|#PB_Window_SizeGadget)
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow : Break
Case #PB_Event_MoveWindow, #PB_Event_SizeWindow
Iconic = GetWindowState(0)
Select Iconic
Case #PB_Window_Normal : Debug "Normal"
Case #PB_Window_Minimize : Debug "Minimiert"
Case #PB_Window_Maximize : Debug "Maximiert"
EndSelect
Case #PB_Event_ActivateWindow
Debug "wurde aktiviert"
EndSelect
ForEver
EndIf
Bin gerade unter Linux, bzw. gibt ja keinen Grund API zu nehmen
Verfasst: 17.12.2006 23:38
von Kaeru Gaman
@ts
hast du auch ne non-api lösung für gotfocus/lostfocus?
viele chat-maschinen piepen auch, wenn ihr fenster normal ist,
aber im hintergrund, also, nicht den fokus hat...
Verfasst: 17.12.2006 23:42
von ts-soft
Kaeru Gaman hat geschrieben:@ts
hast du auch ne non-api lösung für gotfocus/lostfocus?
lostfocus geht zur Zeit wohl nicht.
Was heißt hier Lösung, das steht alles in der Hilfe

Verfasst: 17.12.2006 23:46
von Kaeru Gaman
> lostfocus geht zur Zeit wohl nicht.
ja eben das ist das problem..
ich bin damit nur deshalb ohne API klargekommen, weil ich nen windowedscreen hatte,
da reagiert IsScreenActive() auf das lostfocus....
aber ohne screen hat man probleme mit nem focuscheck...
eigentlich widersinnig, dass GotFocus einen Eventbezeichner hat,
LostFocus jedoch nicht.
Verfasst: 17.12.2006 23:55
von ts-soft
Naja, #PB_Event_ActivateWindow ist ein normalles Windows-Ereignis,
welches man fast immer braucht. Z.B. ein Editor, dann kann man dort prüfen
ob die Zwischenablage etwas enthält.
Bei lostfocus wüßte ich nicht, wozu das nütze sein soll, abgesehen von Chat,
sowas progg ich nicht

Verfasst: 18.12.2006 00:06
von edel
GetActiveWindow duerfte dafuer doch reichen .
Beispiel :
Code: Alles auswählen
[...]
net_event = NetworkClientEvent()
If net_event = #PB_NetworkEvent_Data
ReceiveNetworkData([...])
If GetActiveWindow() <> #fenster
MessageRequester("Willkommen!","Sie haben Post")
EndIf
EndIf
[...]
Verfasst: 18.12.2006 00:46
von Kaeru Gaman
@edel
hm... hatte ich das jetzt übersehen, oder hatte es nicht richtig funktioniert?
muss ich mal austesten, thnx
> Bei lostfocus wüßte ich nicht, wozu das nütze sein soll, abgesehen von Chat,
> sowas progg ich nicht
z.b. wenn du in deinem fenster ne kontinuierliche datenausgabe hast,
sowas wie z.b. Martin66xxx mit seiner meßvorrichtung...
dieses aufwendige aktualisieren muss man eigentlich nur dann vornehmen,
wenn das fenster auch den fokus hat.
klar, bei GotFocus schalte ich es ein... aber ich muss es ja zuvor abschalten können...

Vielen Dank!!!
Verfasst: 18.12.2006 10:28
von fastbit
Vielen Dank an Euch alle!!!
Ich denke damit kriege ich es hin!!1
Keep on coding!
Andi