Seite 1 von 2
Screen Minimieren?
Verfasst: 22.12.2006 23:38
von D4uS1
kann man nen Screen nur Minimieren, ohne das Programm beenden zu müssen?
Hab ma im Referenshandbuch geguggt und IsScreenActive() geufunden, doch irgentwie will dat nit so.
Code: Alles auswählen
If MouseX() > 100 And MouseX() < 100 + 200 And MouseY() > 200 And MouseY() < 200+50 And MouseButton(1)
RunProgram("setup.exe")
IsScreenActive() = 0
EndIf
Was is daran falsch?
Verfasst: 23.12.2006 03:38
von Kaeru Gaman
IsScreenActive meldet dir nur, ob der Screen aktiv ist oder ob er den focus verloren hat.
bei Fullscreen nur mittels Alt-Tab, ein windowedscreen kann auch den
fokus verlieren, wenn man ein anderes fester aktiviert.
aber das "Referenshandbuch" läßt eigentlich keinen zweifel daran, dass
der befehl nicht dazu gedacht ist, etwas zuzuweisen.
wenn du das programmseitig bewerkstelligen willst, geht das einfacher
wenn du einen windowedscreen in einem rahmenlosen maximierten
fenster benutzt, das kannst du einfach deaktivieren.
Verfasst: 23.12.2006 16:23
von a14xerus
sollte nicht auch ein setforegroundwindow_() gehen, doer ein ebenbürtiger befhel, um den screen zu deaktivieren?
Verfasst: 23.12.2006 16:44
von Kaeru Gaman
hm.. könnte sein..
...muss man mal antesten...
...aber dann bräuchtest du am besten ein eigenes menüfenster,
das du in den vordergrund pushen kannst...
ein eigenes fensterle müßte man auch per DisableWindow(Nr, 0) aktivieren können....
ich würde nicht einfach irgendeines nehmen...
höchstens den desktop selber...
wär ja schon komisch:
"oh kagge, der chef kommt, schnell das game wegklicken"
und PLOP ist der browser mit der pornoseite vorne...
Verfasst: 07.01.2007 13:54
von Scarabol
@Kaeru Gaman
Die Idee mit dem maximierten Fenster ist gut, bringt nur leider ein Problem mit sich, dass Fenster wird immer an die Desktopauflösung angepasst, die mitunter sehr krumme Werte haben kann.
Gibt es keine andere Möglichkeit, mit der man eine feste Größe z.B. 1024*768 öffnen kann und trotzdem noch den Screen minimieren kann?
Gruß
Scarabol
Verfasst: 07.01.2007 14:11
von a14xerus
Code: Alles auswählen
Procedure ScreenMinimieren()
SetForegroundWindow_(GetDesktopWindow_())
EndProcedure
Bsp:
Code: Alles auswählen
InitSprite()
InitKeyboard()
OpenScreen(800,600,16,"")
Procedure ScreenMinimieren()
SetForegroundWindow_(GetDesktopWindow_())
EndProcedure
Repeat
ClearScreen(0)
ExamineKeyboard()
If KeyboardPushed(#PB_Key_M)
ScreenMinimieren()
EndIf
While Not IsScreenActive()
Delay(10)
FlipBuffers()
Wend
FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape)
Verfasst: 07.01.2007 15:47
von Scarabol
Danke funktioniert auf anhieb.
Wo liegt der Unterschied zwischen GetAsyncKeyState_() und GetKeyState_()?
Verfasst: 07.01.2007 18:27
von Scarabol
Sorry muss meine obere Aussage korrigieren, sobald man ein Sprite mit #PB_Any, lädt liefert Flipbuffers einen Invalid memory access beim reaktivieren, weißt man dem Sprite eine Zahl zu ist alles in Ordnung
Kann das wer erklären?
Hab Version 4.00
Gruß
Scarabol
Verfasst: 08.01.2007 11:32
von #NULL
das wurde zumindest schon festgestellt, mehr aber vermutlich auch nicht.
http://www.purebasic.fr/german/viewtopic.php?t=9043
mit dem fullscreen<->desktop wechsel gabs schon immer probleme.
Verfasst: 08.01.2007 18:05
von a14xerus
#NULL hat geschrieben:blbltheworm's problem scheint ein pb-bug zu sein.
nach dem wechsel vom fullscreen zum desktop mit Alt-Tab, erhält man bei der rückkehr zum vollbildschirm einen "invalid memory access" bei FlippBuffers(), insofern zuvor LoadSprite() oder CreateSprite() mit #PB_ANY benutzt wurde, unabhängig davon, ob das sprite später angezeigt wird oder nicht. ohne #PB_ANY, also mit Konstanten, funktioniert alles. wobei LoadImage() sowohl mit Konstanten, als auch mit #PB_ANY funktioniert