Screen Minimieren?

Anfängerfragen zum Programmieren mit PureBasic.
D4uS1
Beiträge: 268
Registriert: 02.09.2006 12:16

Screen Minimieren?

Beitrag 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?
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
a14xerus
Beiträge: 1440
Registriert: 14.12.2005 15:51
Wohnort: Aachen

Beitrag von a14xerus »

sollte nicht auch ein setforegroundwindow_() gehen, doer ein ebenbürtiger befhel, um den screen zu deaktivieren?
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Scarabol
Beiträge: 1427
Registriert: 30.11.2005 21:00

Beitrag 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
Abgeschlossen Projekte:
Schreibmaschine, Bildschirmlupe, Wings3DtoOgreMeshConverter
Watch: PureArea

PB-V: 4
WinXP
a14xerus
Beiträge: 1440
Registriert: 14.12.2005 15:51
Wohnort: Aachen

Beitrag 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)
Benutzeravatar
Scarabol
Beiträge: 1427
Registriert: 30.11.2005 21:00

Beitrag von Scarabol »

Danke funktioniert auf anhieb. :)

Wo liegt der Unterschied zwischen GetAsyncKeyState_() und GetKeyState_()?
Abgeschlossen Projekte:
Schreibmaschine, Bildschirmlupe, Wings3DtoOgreMeshConverter
Watch: PureArea

PB-V: 4
WinXP
Benutzeravatar
Scarabol
Beiträge: 1427
Registriert: 30.11.2005 21:00

Beitrag 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 :o

Kann das wer erklären?

Hab Version 4.00

Gruß
Scarabol
Abgeschlossen Projekte:
Schreibmaschine, Bildschirmlupe, Wings3DtoOgreMeshConverter
Watch: PureArea

PB-V: 4
WinXP
Benutzeravatar
#NULL
Beiträge: 2238
Registriert: 20.04.2006 09:50

Beitrag 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.
my pb stuff..
Bild..jedenfalls war das mal so.
a14xerus
Beiträge: 1440
Registriert: 14.12.2005 15:51
Wohnort: Aachen

Beitrag 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
Antworten