Desktopauflösung auslesen?

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

 

OldSkool90

Betreff: Desktopauflösung auslesen?

BeitragFr, Feb 26, 2010 20:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
Gibt es eine Möglichkeit, die Desktopauflösung auszulesen, sodass ich diese dann in Variablen speichern kann?
Das wäre tausendmal komfortabler, als für jede Auflösung eine Auswahlmöglichkeit zu programmieren.^^

DaysShadow

BeitragFr, Feb 26, 2010 21:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Das Modul sollte helfen: http://www.chaos-interactive.d...extension/

MfG DaysShadow
Blessed is the mind too small for doubt

D2006

Administrator

BeitragFr, Feb 26, 2010 21:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Da gibt's ein supi dupi Modul von Chaos Interactive! *werb*

http://www.chaos-interactive.d...extension/
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard
Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium
Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2
 

OldSkool90

BeitragFr, Feb 26, 2010 21:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielen dank euch beiden. Da bleibt nur die Frage, welcher der Funktionen im Modul was genau macht.^^
Denn auf der Website steht, dass der Befehlssatz >>demnächst folgt<<. Und ich persönlich finde die Wortwahl im Quellcode sehr verwirrend und auch nicht wirklich elegant. Very Happy

Midimaster

BeitragFr, Feb 26, 2010 21:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Da brauchst du nicht gleich ein ganze Modul! So sollte es auch gehen:

BlitzMax: [AUSKLAPPEN]
Extern "win32"
Function GetDesktopWindow%()
Function GetWindowRect%(hWnd%, lpRect:Byte Ptr)
End Extern

Type TWindow
Field Links%, Oben%, Rechts%, Unten%
End Type

Local DesktopHandle% = GetDesktopWindow()
Local Desktop:TWindow = New TWindow
GetWindowRect DesktopHandle, Desktop:TWindow

Print Desktop.Links + "/" + Desktop.Oben + " - " + Desktop.Unten + "/" + Desktop.Rechts
 

OldSkool90

BeitragFr, Feb 26, 2010 21:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich sehe grad in der Funktionsauflistung die Befehle DesktopWidth etc. Werde diese mal ausprobieren.

@Midimaster:
Sieht kompliziert aus Very Happy
werde es mal testen und meinen Befehlshorizont erweitern Very Happy

EDIT:
Nochmals danke Midimaster, dein Code funktioniert wunderbar, jedoch Frage ich mich wozu Links und Oben verwendet werden soll. Ist das nur dazu da, um das "Rect" zu initialisieren? Denn für die Auflösung reicht ja Rechts und Unten.^^

d-bug

BeitragFr, Feb 26, 2010 21:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Besonders gelungen ist dieser Weg natürlich für die Kompatibilität zu anderen Betriebssystemen... -.-

Na dann versuch das mal auf Multi-Display Systemen, Oldshool dann weist du wofür links/oben sein muss.
Wobei das in dem, von Midimaster gezeigtem Weg auch nicht berücksichtigt wird, also doch ziemlich sinnlos ist...
*schwafel*
  • Zuletzt bearbeitet von d-bug am Fr, Feb 26, 2010 21:24, insgesamt 2-mal bearbeitet
 

OldSkool90

BeitragFr, Feb 26, 2010 21:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Wieso andere Betriebssysteme? Momentan reicht es mir aus, meinen Code für Windows zu schreiben. Ich hege keinen Mainstream-groll gegen Windows...Finde eher Linux eklig Very Happy und MacOS...naja...ich sag nichts^^

hamZta

Administrator

BeitragFr, Feb 26, 2010 22:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Es ist trotzdem grundsätzlich guter Stil, plattformunabhängig zu bleiben. Solltest du später mal für alle Plattformen entwickeln wollen hilfts dir, wenn du dich jetzt schon daran hälst.

Außerdem ist es wohl besser eine erprobte und vollständige Lösungen zu verwenden als irgendein Code der womöglich auf System XY nicht funktioniert (oder bei Systemen mit mehreren Bildschirmen, wie d-bug schon sagte).
Blog.
 

OldSkool90

BeitragFr, Feb 26, 2010 22:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Naja mal sehen. Bisher Programmiere ich nur für mich selbst, einfach um mich zu fordern und meine Logik auf Vordermann zu bringen. Und man kann auch hinterher noch alles andere lernen...Types hab ich in B3D auch erst gelernt, nachdem ich mich mit der 3D Engine beschäftigt habe Wink

Midimaster

BeitragSa, Feb 27, 2010 3:13
Antworten mit Zitat
Benutzer-Profile anzeigen
@OldSchool90

naja, die Windowsfunktion GetWindowRect() benötigt einen Memory-Block von genau dieser Größe und schreibt dort 4 Integer-Werte rein. Also erstellen wir ihn genauso. Das kannst du als Type realisieren. Der Funktion wird dabei der Zeiger auf den Anfang des Blocks übergeben.


@D2006 und hamZta
Die Lösung, die Desktop-Auflösung über ein fertiges Modul abzufragen, dass auf allen drei Systeme Windows, Mac und Linux funktioniert, ist natürlich vorzuziehen. Natürlich ist soetwas erst dann als "Modul" akzeptierbar, wenn es die Funktionen, die es anbietet auch wirklich in allen drei Systemen leisten kann. Sorry, aber ohne diese Fleißaufgaben ist es zunächst nur eine "Code-Beispiel".

d-bug

BeitragSa, Feb 27, 2010 9:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Mal so am Rande:
D2006 != d-bug

Die Unterstützung von Linux-Derivaten, auf die du dich da beziehst, ist alles andere als eine reine Fleißarbeit.
Wie dem auch sei, wenn du meinst, dieses Modul sei eine Art Codeschnipsel, von dem du abpinnen kannst, steht dir das selbstredend frei. Allerdings würde ich trotzdem versuchen Multi-Display Systeme einbeziehen zu wollen, denn diese sind mittlerweile mehr als nur Randgruppen-Systeme, die sich nur die Freaks auf den Schreibtisch stellen. Smile

Du solltest übrigens mal deine Einstellung zu Modulen überdenken. Ganz BlitzMax besteht aus einem modularem Aufbau. Wenn du dich also davor ekelst Module zu importieren ist BlitzMax nicht das richtige für dich. Ich hoffe du benutzt wenigstens ein Framework.
 

OldSkool90

BeitragSa, Feb 27, 2010 10:21
Antworten mit Zitat
Benutzer-Profile anzeigen
So schön und gut euer Modul sein mag....Ich wollte es grade testen und siehe da: Ich kanns nicht importieren. Mit dem Befehl "Import Chaos.Desktopext" erzählt mir der Compiler, dass er für das Modul kein Interface findet...und da kann ich probieren was ich will.

BladeRunner

Moderator

BeitragSa, Feb 27, 2010 10:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Hast Du das Modul gebuilded?
(Dafür muss MinGW installiert sein)
Hast Du die Vollversion von Bmax?
(Sonst kannst Du keine externen Module einbinden, das ist eine der Demobeschränkungen)
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

OldSkool90

BeitragSa, Feb 27, 2010 10:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Man muss Module noch builden? o.O
Oha...Dachte das funktioniert unkompliziert...na toll
Ja ich hab die Vollversion.

BladeRunner

Moderator

BeitragSa, Feb 27, 2010 10:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Man muss nicht jedes Modul builden, nein. Man kann sie auch vorkompiliert liefern, was sich aber nicht als Standard durchgesetzt hat.
Dadurch das d-bug den Quelltext liefert kann jeder das Modul jederzeit mit der aktuellsten Compilerversion für sein System erstellen. Mit installiertem MinGW ist das ein Tastendruck.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

OldSkool90

BeitragSa, Feb 27, 2010 10:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich dachte es wäre wie in bb....Quellcode einfügen und Functionen nutzen

BladeRunner

Moderator

BeitragSa, Feb 27, 2010 10:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Nicht ganz.
Mit Import werden vorher erstellte Befehlsbibliotheken eingebunden. Der Vorteil ist dass diese nicht jedes mal neu mit kompiliert werden müssen. Das erstellen deines Projektes insgesamt geht also wesentlich flotter von statten.
Include gibt es in Max ja auch - hier wird dann auch weiter alles kompiliert.

Module sind eine sehr sinnvolle und mächtige Erweiterung der Sprache. Und der Aufwand sie einmalig neu zu compilieren bevor man sie nutzen kann ist nicht wirklich einer und lohnt sich daher sofort.

Ich kann dir wirklich nur empfehlen dich dafür zu öffnen, weil es viele wirklich geniale Funktionen als Modul gibt.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

OldSkool90

BeitragSa, Feb 27, 2010 10:55
Antworten mit Zitat
Benutzer-Profile anzeigen
okay okay ich hab das mit dem compilieren jetz verstanden. Werde aber möglichst wenig module verwenden, sonst komm ich mir noch wie ein scripter vor o.O

BladeRunner

Moderator

BeitragSa, Feb 27, 2010 10:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Das hat mit scripten wenig zu tun.
Es ist nur einfach sinnvoll solche Funktionalitäten zu kapseln und für späteren Gebrauch auszulagern. Man sollte nicht für jedes Programm das Rad neu erfinden müssen, meinst Du nicht?
Zudem kannst Du Dir ja auch eigene Module erstellen, mit dem Inhalt der Dir zusagt.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group