Screen erkennen

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Benutzeravatar
Olafmagne
Beiträge: 130
Registriert: 07.12.2017 17:30
Wohnort: Sete/Frankreich

Screen erkennen

Beitrag von Olafmagne »

Hallo an Alle

Ich habe eine Frage was den Screen betrift

Und zwar wurde ich gerne wissen,ob es möglich ist,irgendwie zu erkennen,
ob es sich um einen 'FullScreen' oder einen 'WindowedScreen' handelt.

Grund ist,das ich dabei bin ein Modul zu schreiben,und dies sowohl im vollbild als auch im 'Window'
laufen soll,aber ein paar Dinge eben im Fenster anders,Windows-Mässig erledigt werden kann,
während im VollBild eine andere Option gewählt werden muss.

Merci

Olaf
Unsinnige Anweisungen von Seiten des Chef's lösen grundsätzlich ein "Syntax Error" bei mir aus
OS=Windows 11
PB=5.31/5.73/6 <> BlitzPlus/Blitz3D <> FreeBasic
Benutzeravatar
Mijikai
Beiträge: 754
Registriert: 25.09.2016 01:42

Re: Screen erkennen

Beitrag von Mijikai »

Evtl.:

Code: Alles auswählen

Procedure.i IsFullscreenWindow(hwnd.i); 1 = Fullscreen / 2 = Windowed / -1 = Error
  Protected hm.i
  Protected mi.MONITORINFOEX
  Protected wr.RECT
  mi\cbSize = SizeOf(MONITORINFOEX)
  hm = MonitorFromWindow_(hwnd,#MONITOR_DEFAULTTOPRIMARY)
  If GetMonitorInfo_(hm,@mi)
    If IsWindowVisible_(hwnd)
      If GetWindowRect_(hwnd,@wr)
        wr\right - wr\left
        wr\bottom - wr\top
        mi\rcMonitor\right - mi\rcMonitor\left
        mi\rcMonitor\bottom - mi\rcMonitor\top
        CloseHandle_(hm)
        If wr\right = mi\rcMonitor\right And wr\bottom = mi\rcMonitor\bottom
          ProcedureReturn 1  
        Else
          ProcedureReturn 0
        EndIf    
      EndIf
    EndIf
  EndIf
  CloseHandle_(hm)
  ProcedureReturn -1
EndProcedure
Benutzeravatar
Olafmagne
Beiträge: 130
Registriert: 07.12.2017 17:30
Wohnort: Sete/Frankreich

Re: Screen erkennen

Beitrag von Olafmagne »

Salut
wenn ich das jetzt richtig interpretiere,ist das Win-Api?

gibt's da auch was Ohne?

bin zZt mit Win nicht so freund,daher suche ich ein Linux-Lösung
kenne mich aber mit der Api da garnicht aus
werde es aber für Win auf jeden Fall speichern!

Merci erst mal dafür

Olaf

Edit:
Sorry,ich hab meinen ersten Beitrag grade noch mal durchgelesen,
ist ein wenig irreführend!
mit Windowmässig meinte ich,dass in einem Fenster Events generiert werden,
im Screen eben nicht,so dass ich zB bei WindowedScreen ein TimerEvent nutzen kann,
bei einen FullScreen nicht...
Olaf
Unsinnige Anweisungen von Seiten des Chef's lösen grundsätzlich ein "Syntax Error" bei mir aus
OS=Windows 11
PB=5.31/5.73/6 <> BlitzPlus/Blitz3D <> FreeBasic
Demivec
Beiträge: 49
Registriert: 22.02.2008 20:49
Wohnort: Utah, USA

Re: Screen erkennen

Beitrag von Demivec »

Olafmagne hat geschrieben:mit Windowmässig meinte ich,dass in einem Fenster Events generiert werden,
im Screen eben nicht,so dass ich zB bei WindowedScreen ein TimerEvent nutzen kann,
bei einen FullScreen nicht...
Mit FullScreen kann weiterhin ein verstecktes Fenster geöffnet werden, um Timer zu verwenden.

Code: Alles auswählen

keinFenster = OpenWindow(#PB_Any, 0, 0, 50, 50, ##PB_Window_Invisible |  #PB_Window_BorderLess | #PB_Window_NoGadgets | #PB_Window_NoActivate)
 ;Timer können jetzt auch mit WindowEvent () in FullScreen verwendet werden.
 ;AddWindowTimer(keinFenster, Timer, Timeout)
Bild
Benutzeravatar
Olafmagne
Beiträge: 130
Registriert: 07.12.2017 17:30
Wohnort: Sete/Frankreich

Re: Screen erkennen

Beitrag von Olafmagne »

Ich steh im Wald und seh die Bäume nicht!!!

Na klar ein invisible window is nu aber auch zu einfach,da kommt mann nich drauf!

bis ich die Linux-Api kappiert hab,muss es so gehen!


Danke

Olaf
Unsinnige Anweisungen von Seiten des Chef's lösen grundsätzlich ein "Syntax Error" bei mir aus
OS=Windows 11
PB=5.31/5.73/6 <> BlitzPlus/Blitz3D <> FreeBasic
Antworten