[Alt & Kaputt] Borderless Windowmode, Window Message...
Übersicht BlitzBasic DLLs und Userlibs
Xaymarehemals "Cgamer"Betreff: [Alt & Kaputt] Borderless Windowmode, Window Message... |
So, Aug 29, 2010 11:51 Antworten mit Zitat |
|
---|---|---|
Neue Userlib + DLL!
Zitat: Ich habe begonnen diese Funktionen öffentlich zu machen, bitte siehe weiter unten in diesem Thread.
Warum öffentlich? Einer DLL sieht man an wo, wie und wann diese erstellt wurde. Nehmen wir als Beispiel mal Starfare: Starfare nutzt(e) diese DLL um Borderless Windowmode zu haben, aber der Autor vergaß das DLLs einen Header besitzen. Somit liegt bei dem Projekt eine DLL bei die sich ffscreen.dll nennt, aber in wirklichkeit ColoredWorld.dll heißt(wie man es dem edata Header entlesen kann). Zusätzlich dazu kann Text nicht einfach verschwinden und man lernt etwas daraus. Zitat: Mit dieser DLL könnt ihr euch die Primären Monitordaten holen um wie im Titel beschrieben Fake-Fullscreen zu erschaffen. Zusätzlich dazu hat die DLL noch nen CloseHandler drin, der ist aber in etwa derselbe wie BlitzClose hat.
DLL: https://www.blitzforum.de/upload/file.php?id=9934 Decls:Code: [AUSKLAPPEN] .lib "ColoredWorld.dll"
InstallCloseHandler%(WindowName$):"InstallCloseHandler@4" GetWindowClose%():"GetWindowClose@0" UnInstallCloseHandler%():"UnInstallCloseHandler@0" GetMainMonitorSize(Bank*):"GetMainMonitorSize@4" CursorBounds(X%,Y%,W%,H%):"CursorBounds@16" .lib "user32.dll" api_GetWindowLong% (hwnd%, nIndex%) : "GetWindowLongA" api_SetWindowLong% (hwnd%, nIndex%, dwNewLong%) : "SetWindowLongA" api_SetWindowPos% (hwnd%, hWndInsertAfter%, x%, y%, cx%, cy%, wFlags%) : "SetWindowPos" api_GetWindowRect% (hwnd%, Rect*) : "GetWindowRect" api_GetClientRect% (hwnd%, Rect*) : "GetClientRect" api_GetActiveWindow% () : "GetActiveWindow" api_ClientToScreen% (hwnd%, Point*) : "ClientToScreen" BB:BlitzBasic: [AUSKLAPPEN] Function FakeFullscreen() Funktionen: InstallCloseHandler(WindowName$) Verändert den WindowCallback um das klicken auf [X] nicht zum beenden zu bringen. GetWindowClose() Gibt zurück wie oft bereits das [X] gedrückt wurde. Nützlich um z.b. bei 2-fachen draufklicken die Abfrage zu überspringen. UnInstallCloseHandler() Setzt den WindowCallback wieder zurück. GetMainMonitorSize(Bank) Führt EnumDisplayMonitors aus, um den Primären Monitor um seine echte größe zu finden. FakeFullscreen() Erstellt einen Fake-Fullscreen Graphics3D. LockPointerToWindow(Fenster%) Sperrt die Maus auf ein bestimmtes Fenster. Fenster ist optional ReleaseLock() Lässt die Maus wieder frei. CursorBounds(HWND,X,Y,W,H) Sperrt die Maus anhand eines Fenster in einen Bereich. So benutzt ihr es: BlitzBasic: [AUSKLAPPEN] FakeFullscreen() |
||
- Zuletzt bearbeitet von Xaymar am Do, Apr 30, 2015 1:34, insgesamt 7-mal bearbeitet
ToeB |
So, Aug 29, 2010 12:10 Antworten mit Zitat |
|
---|---|---|
Ähm hört sich zwar gut an aber wofür genau ist das bzw. was ist ein "fake - fullscreen" ?
mfg ToeB |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
Xaymarehemals "Cgamer" |
So, Aug 29, 2010 12:13 Antworten mit Zitat |
|
---|---|---|
Fake-Fullscreen ist ein Fenster das den ganzen Haupt-Bildschirm bedeckt(wie bei Fullscreen), nur das es ein Fenster ohne Rand, Titelleiste und sonstigem ist. Dadurch ermöglicht man es den Usern ohne Texturverlust zu Alt-Tabben. | ||
Warbseite |
ZaP |
So, Aug 29, 2010 12:15 Antworten mit Zitat |
|
---|---|---|
Wenn man ein Spiel minimiert, kann der Speicher dreckig werden, dann kommt es zu MAVs. Ich glaube, wenn man alles in den Grafikspeicher lädt, geht es aber ohne Probleme. Vielleicht wars auch umgedreht. | ||
Starfare: Worklog, Website (download) |
aMulSieger des Minimalist Compo 01/13 |
Mi, Sep 01, 2010 15:42 Antworten mit Zitat |
|
---|---|---|
Eine tolle Sache, danke für die Funktionen!
Benutze borderless windowmode bei allen Spielen die das anbieten, weil es viel einfacher ist, wenn man nebenbei chatten, oder das Spiel anderweitig eine Zeit im Hintergrund laufen lassen möchte. Und auch das Abfangen der Schließen-Taste kann man immer mal gebrauchen. |
||
Panic Pong - ultimate action mashup of Pong and Breakout <= aktives Spiele-Projekt, Downloads mit vielen bunten Farben!
advASCIIdraw - the advanced ASCII art program <= aktives nicht-Spiele-Projekt, must-have für ASCII/roguelike/dungeon-crawler fans! Alter BB-Kram: ThroughTheAsteroidBelt - mit Quelltext! | RGB-Palette in 32²-Textur / Farbige Beleuchtung mit Dot3 | Stereoskopie in Blitz3D | Teleport-Animation Screensaver |
Xaymarehemals "Cgamer" |
Mi, Dez 08, 2010 21:04 Antworten mit Zitat |
|
---|---|---|
Habe nun 3 neue Funktionen hinzugefügt und ein paar WinAPI Funktionen hinzugefügt. Sollten für die RTS ersteller nützlich sein. Wenn ihr die DLL dazu nicht benutzen wollt, sucht nach ClipCursor in der MSDN suchen. | ||
Warbseite |
ToeB |
Mi, Dez 08, 2010 22:12 Antworten mit Zitat |
|
---|---|---|
Aber mal ne Frage ... Wird das dann nicht langsamer ? Ich mein wenn ich Flip benutze wird ja auch das Fenster von Windows geupdatet (Wenn ich das richtig verstanden habe) und das ist langsamer ?
mfg ToeB |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
Xaymarehemals "Cgamer" |
Mi, Dez 08, 2010 22:52 Antworten mit Zitat |
|
---|---|---|
Wovon redest du und warum verstehe ich kein wort? | ||
Warbseite |
ToeB |
Mi, Dez 08, 2010 23:18 Antworten mit Zitat |
|
---|---|---|
Also nochmal für die etwas langsameren : Es bezog sich auf deine Angebotene DLL (worauf auch sonst), und darauf das diese DLL ein Fenster in Bildschirmgröße ohne Rand etc. erzeugt zur Verbeugung von Verlusten der im Grafikspeicher vorhandenen Texturen. Meine Frage ist, da wenn man ein Fenster startet (kein Vollbild) ja Windows teilweise das Updaten von diesem übernimmt, und das macht es langsam. Deshalb : Hat man durch diese DLL den selben Effekt oder kann man es wie ein "echten" Fullscreen handhaben nur halt ohne den Verlust ? mfg ToeB |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
Xaymarehemals "Cgamer" |
Mi, Dez 08, 2010 23:35 Antworten mit Zitat |
|
---|---|---|
Windows übernimmt nur das zeichnen des FensterBuffers. Alles andere macht Blitz's Window Callback. Ich habe bis jetzt keinen Geschwindigkeitsverlust bemerkt, eher eine steigerung bei manchen dingen, da VSync ja nun vom WindowCallback gemacht wird. | ||
Warbseite |
ZaP |
Sa, Dez 11, 2010 20:52 Antworten mit Zitat |
|
---|---|---|
Ich habe diese äußerst schöne Userlib in Starfare verwendet, weil es viele Beschwerden gab, dass man das Spiel nicht richtig minimieren kann.
Einziger Mängel ist, dass beim Windowstretching die Kantenglättung verloren geht, was im Gegensatz zum echten Vollbildmodus etwas unschön aussieht. Hast Du dafür zufällig einen Fix parat? Wenn nicht, ist es auch nicht so wild, die meisten werden wohl ohnehin in Desktopauflösung spielen. |
||
Starfare: Worklog, Website (download) |
Xaymarehemals "Cgamer" |
So, Dez 12, 2010 21:09 Antworten mit Zitat |
|
---|---|---|
Ich nehme an du meinst die Kantenglättung vom Text. Da kann ich denke ich mal nicht viel dran verändern, das ist Blitzintern.
Kannst du mir mal 2 Screenshots zeigen die das verdeutlichen? (PNG am besten) Eventuell kann ich einen DX7 Hook erstellen der das behebt. |
||
Warbseite |
ZaP |
So, Dez 12, 2010 22:10 Antworten mit Zitat |
|
---|---|---|
Nein, ich habe mich ungenau ausgedrückt. Vielleicht als Beispiel: Du hast ein Bild, und skalierst es, einmal mit Filter und einmal ohne/mit schlechterem, das verdeutlicht am besten, was ich meine.
Zwei Screenshots kann ich leider nicht posten, denn ich habe ja keine Chance, das von meinem Monitor vergrößerte Bild in einem Screenshot einzufangen. Mein Monitor ist 1280x1024, wenn ich das Spiel auf 1024x768 im echten Vollbild laufen lasse, und einen Screenshot mache, dann ist der ebenfalls so groß. Hier also mal 800 x 600 nach 1280 x 1024 skaliert. |
||
Starfare: Worklog, Website (download) |
Xaymarehemals "Cgamer" |
Mo, Dez 13, 2010 17:40 Antworten mit Zitat |
|
---|---|---|
Du solltest natürlich das Fake-Fullscreen nicht in der falschen Auflösung nehmen. Dazu hatte ich ja die Funktion mitgeliefert.
Es gibt ein paar Probleme mit Windows 7(Windows 7 kann die Monitore je nach Startzeit der Monitore verwechseln, wodurch GetMainMonitor(Interner Callback) auf einmal andere Werte liefert), aber dagegen kann ich recht wenig unternehmen. Ich hatte bisher noch keine Probleme mit der Funktion, wie man bei den CW Screenshots ja auch sieht. |
||
Warbseite |
Xaymarehemals "Cgamer" |
Fr, Okt 19, 2012 15:56 Antworten mit Zitat |
|
---|---|---|
Da Ich aus versehen die DLL aus dem Archiv löschte habe Ich die Funktionen der DLL nachgebaut:
Utility_LockPointerToWindow( hwnd=0 ) (BB) Was: Sperrt den Cursor('Maus') in den Bereich eines Fensters. Muss vor Programmende wieder aufgehoben werden(hwnd=0). BlitzBasic: [AUSKLAPPEN] ;---------------------------------------------------------------- Utility_EnumerateDisplays() (C++/DLL) Utility_GetDisplayCount() (C++/DLL) Utility_GetDisplay( id%, rectangle* ) (C++/DLL) Was: Benutzen sofern man Informationen über Bildschirme braucht. Nützlich für 'Borderless Window'. BlitzBasic: [AUSKLAPPEN] ;---------------------------------------------------------------- Utility_InstallCloseHandler( hwnd ) (C++/DLL) Utility_UninstallCloseHandler( hwnd ) (C++/DLL) Utility_GetCloseCount%( hwnd ) (C++/DLL) Was: Benutzen um den schließen Button abzufangen. BlitzBasic: [AUSKLAPPEN] ;---------------------------------------------------------------- Der einfachheit halber habe ich auch die komplette DLL kompiliert, hier könnt Ihr sie euch downloaden. |
||
Warbseite |
Übersicht BlitzBasic DLLs und Userlibs
Powered by phpBB © 2001 - 2006, phpBB Group