Fenster über den ganzen Bildschirm erstellen
Übersicht

![]() |
Der EisvogelBetreff: Fenster über den ganzen Bildschirm erstellen |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo
Ich würde gerne ein Fenster erstellen, das über den ganzen Bildschirm geht. Wie ich die Auflösung ermittle weis ich schon. Aber irgendwie wird bei meinem Fenster immer etwas in der Höhe abgezogen. Also ich habe eine Auflösung von 1280x1024, aber ich wenn ich ein solches Fenster erstellen will, bekomme ich nur eines mit 1280*1012. das ist nervig, weil dann immer so ein doofer Streifen von Window noch zu sehen ist. Wie kann ich es anstellen, dass dieses Fenster dann auch tatsächlich 1280x1024 groß ist? Ich habe auch keine Scheu vor der WinAPI, da ich sie eh schon für die Auflösung benutze. MfG Der Eisvogel |
||
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB Projekte: Window-Crasher Ich liebe es mit der WinAPI zu spielen. |
![]() |
Eingeproggt |
![]() Antworten mit Zitat ![]() |
---|---|---|
Befasse mich auch grad damit ![]() Wenn du mit GetMonitorInfo arbeiten willst dann würde das so gehen: Du übergibst als MonitorInfo-Struktur eine Bank mit der Größe 40 - und schreibst als Integer zuerst mal bei Offset 0 "40" rein ("DWORD cbSize;"). Dann hast du in den der ersten Rect-Struktur die Abmessungen die du suchst und in der zweiten die die du derzeit haben dürftest. Auf die Rect Struktu kannst du zugreifen indem du einfach aus deiner Blitz-Bank 4 Integers nacheinander ausliest (Bei Offset 4,8,12 und 16, da 0 ja die Größe der Bank ist) Du musst dazu noch ein Monitor-Handle angeben, welches ich mit MonitorFromRect ermittle. Ich würde selber gern an dieser Stelle wissen ob es ein besseres Mittel gibt, weil irgendwie kommt mir mein Vorgehen blöd vor... aber MonitorEnumProc will eine Callback-Funktion die ja in BB nicht möglich ist. mfG, Christoph. |
||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
![]() |
Der Eisvogel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja, da bekomme ich nicht das was ich will. Ich will ein Fenster erstellen, das der aktuellen Auflösung des Bildschirms gleicht. Aber das geht, nicht weil mein Fenster automatisch verkleinert wird. Das werde ich dann wahrscheinlich mit deiner Methode rausbekommen. Aber das bringt mich nicht zu meinem Ziel ![]() |
||
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB Projekte: Window-Crasher Ich liebe es mit der WinAPI zu spielen. |
![]() |
Eingeproggt |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also wenn ich bei einer Bildschirmauflösung von 1280*1024 ein Graphics Fenster mit eben dieser Größe erstelle, so überdeckt es die Windows-Taskbar.
Allerdings hat man dann oben noch die Fensterleiste von BB. Ich hab ein wenig rumgespielt, aber mehr probiet als geforscht - möglicherweise musst du die Höhe der Windows-Titelleiste noch zum Graphics-Bereich dazu addieren und / oder die Höhe der Taskbar die man ja aus der Differenz der beiden MonitorInfo-Abmessungen kriegen würde. Hab das jetzt nicht selber probiert, nur so n Verdacht der mir beim "rumspielen" gekommen ist. |
||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
![]() |
Der Eisvogel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Mh, ich glaube du verstehst das problem nicht so ganz. Wenn ich in meinem Code folgendes schreibe:
BlitzBasic: [AUSKLAPPEN] Graphics 1280,1024 dann bekomme ich nur ein Fenster mit 1280*1012. |
||
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB Projekte: Window-Crasher Ich liebe es mit der WinAPI zu spielen. |
![]() |
Eingeproggt |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das verstehe ich in der Tat nicht - denn wie im vorigen Beitrag geschrieben: Bei mir ist das nicht so? ![]() Sorry, dann muss ich aussteigen ![]() EDIT: Wirklich gut dass ich da ausgestiegen bin... Von dem Problem wußte ich ja gar nix - bei meinem WinXP gehts wie geschildert. Und ich kann hier auch Fenster erstellen so groß ich sie haben will, größerals der Desktop. Sinn macht das natürlich keinen aber bei mir ginge das. |
||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
- Zuletzt bearbeitet von Eingeproggt am Do, Jul 29, 2010 15:30, insgesamt einmal bearbeitet
![]() |
Der Eisvogel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Welches Betriebsystem hast du? Ich hab Windows 7. Vielleicht liegt das daran. | ||
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB Projekte: Window-Crasher Ich liebe es mit der WinAPI zu spielen. |
![]() |
ZaP |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich glaube, die meisten Spiele machen erstellen ein Fenster ohne den Fensterrand. Ich weiß jetzt aber nicht ob und wie das mit der WinAPI geht. | ||
Starfare: Worklog, Website (download) |
![]() |
Der Eisvogel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das ist garnicht das Problem. Wie das geht weis ich. Mein Problem ist, dass ich keine Fenster erstellt bekomme, dass 1280x1024 ist. Es ist maximal 1280x1012. Warum weis ich nicht. Egal welchen Wer >1012 ich bei height angebe. | ||
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB Projekte: Window-Crasher Ich liebe es mit der WinAPI zu spielen. |
![]() |
ZaP |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich sehe dein Problem. Interessanterweise ist der Backbuffer nach wie vor 1280x1024 Pixel groß (ist meine maximale Auflösung) aber das Fenster ist in der Tat zu klein. | ||
Starfare: Worklog, Website (download) |
Omenaton_2 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Komisches Problem, von sowas habe ich noch nie was gehört und würde mich ungemein stören.
Bei mir ist ein Fenster immer genauso groß, wie ich es einstelle: Graphics3D 1280, 1024 , 32, 1 Kann das sein, daß du vergessen hast den Flag (1) für Fullscreen anzugeben ? |
||
![]() |
ZaP |
![]() Antworten mit Zitat ![]() |
---|---|---|
Na ich glaube, da wäre er von selbst drauf gekommen ![]() Es geht darum, ein Fenster zu erstellen, was die Größe der Desktopauflösung hat; Versuch das doch auch mal, da fehlt wirklich unten was am Fenster. |
||
Starfare: Worklog, Website (download) |
![]() |
Chester |
![]() Antworten mit Zitat ![]() |
---|---|---|
Huch, war eben wirklich überrascht, dass da wirklich immer 12 Pixel fehlen.
Die einzige Möglichkeit diese Größe zu erreichen ist, wenn das Fenster ohne Titelleiste und Rahmen erstellt wird ( SetWindowLong(hWnd, GWL_STYLE , NULL) ). Da AFAIK die maximale Fenstergröße durch die Desktopgröße vorgegeben wird. Man müsste dem Programm also eine falsche Desktopgröße vorgaukeln. |
||
Rufus Serano |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Selbiges Problem hatte ich auch schonmal, hier die Lösung, zu der ich gekommen bin:
Code: [AUSKLAPPEN] ;Win32 Consts
Const GWL_STYLE = -16 Const WS_CAPTION = $C00000 Const WS_THICKFRAME = $40000 Const HWND_TOP = 0 Const SWP_NOZORDER = $4 ;Win32 Types Type APIRect Field Top Field Left Field Right Field Bottom End Type ;'Fake'-Fullscreen Function InitWindow() ;Int Local Fn_ScreenWidth,Fn_ScreenHeight Local Fn_Style,Fn_ExStyle,Fn_HWND ;APIRect Local Fn_Window.APIRect ;get Desktopwindow dimensions Fn_Window.APIRect=New APIRect api_GetClientRect(api_GetDesktopWindow(),Fn_Window.APIRect) Fn_ScreenWidth=Fn_Window\Right Fn_ScreenHeight=Fn_Window\Bottom Delete Fn_Window.APIRect ;set windowsize and graphicsmode 3 Graphics Fn_ScreenWidth,Fn_ScreenHeight,0,3 ;change windowstyle Fn_HWND=SystemProperty("AppHWND") Fn_Style=api_GetWindowLong(Fn_HWND,GWL_STYLE) Fn_Style=Fn_Style Xor WS_THICKFRAME Xor WS_CAPTION api_SetWindowLong(Fn_HWND,GWL_STYLE,Fn_Style) ;move and resize window api_SetWindowPos(Fn_HWND,HWND_TOP,0,0,Fn_ScreenWidth,Fn_ScreenHeight,SWP_NOZORDER) ;Done :) End Function ;Demonstration InitWindow() Color 255,255,255 Rect 0,0,GraphicsWidth(),GraphicsHeight(),0 WaitKey End Wichtig hierbei ist vor Allem der Graphicsmode 3, sonst kann man SetWindowPos nicht benutzen. Im Großen und Ganzen entfernt man einfach die Caption und den Rand. Die Caption entfernt man, da sie scheinbar zur Clientarea dazugerechnet wird (daher die 12 Pixel...), den Rand entfernt man, da man nicht weiß, wie breit er ist. auf verschiedenen Systemen existieren teilweise verschiedene Window-Styles bei denen die Breite des Rahmens variieren kann. Die Breite kann man zwar auch durch GetWindowRect/GetClientRect mühevoll rausfinden, das lohnt sich aber nur dann, wenn man den Rand denn unbedingt behallten möchte. Ich hoffe einfach mal, dass du schon ne Winapi Decls hasst, ansonsten kann ich die auch nachliefern. BtW, für was brauchst du das denn ![]() Du hasst nicht zufällig vor nen animierten Desktop zu proggen? ![]() MfG Rufus |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group