| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen   | 
	
	
	
		| Autor | 
		Nachricht | 
	
	
		noop
 
 
  Anmeldungsdatum: 04.05.2005 Beiträge: 259
 
  | 
		
			
				 Verfasst am: 07.09.2005, 20:56    Titel: Bildschirmauflösung ermitteln | 
				     | 
			 
			
				
  | 
			 
			
				Hallo
 
Wie kann ich in FB die Bildschirmauflösung unter WIndows des Benutzers ermitteln?
 
Geht das leicht oder ist das mal wieder was kompliziertes über die WIn-API?
 
mfg noop | 
			 
		  | 
	
	
		| Nach oben | 
		 | 
	
	
		  | 
	
	
		helpy
 
 
  Anmeldungsdatum: 22.03.2005 Beiträge: 17
 
  | 
		 | 
	
	
		| Nach oben | 
		 | 
	
	
		  | 
	
	
		ts-soft
 
  
  Anmeldungsdatum: 13.02.2005 Beiträge: 26 Wohnort: Berlin
  | 
		
			
				 Verfasst am: 08.09.2005, 00:23    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				
 
Wie ermittelt man damit welcher Screen und wieviele Sceens vorhanden sind. Inzwischen haben wohl ca. 15% aller User DualScreen.    | 
			 
		  | 
	
	
		| Nach oben | 
		 | 
	
	
		  | 
	
	
		MisterD
 
  
  Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
  | 
		
			
				 Verfasst am: 08.09.2005, 08:16    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				und screeninfo zeigt auch nur die Info über den screen an, der in FB aufgerufen wurde, oder funktioniert das auch wenn kein screen aufgerufen wurde? Normalerweise bei nem Konsolenprogramm was ja ohne screenabgabe und ohne gui-option zwangsläufig entsteht müsste er doch dann die daten für screen 0 ausgeben, oder? _________________ "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
 
Edsger W. Dijkstra | 
			 
		  | 
	
	
		| Nach oben | 
		 | 
	
	
		  | 
	
	
		helpy
 
 
  Anmeldungsdatum: 22.03.2005 Beiträge: 17
 
  | 
		
			
				 Verfasst am: 08.09.2005, 09:22    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				Ich hab' leider keinen Dual Screen.
 
 
Mit... 	  | Code: | 	 		  SCREENINFO w, h, depth
 
PRINT "Bildschirmauflösung: " + STR$(w) + " x " + STR$(h) + " x " + STR$(depth); 
 
sleep | 	  ... (compiliert mit "-s console") wird bei mir die aktuelle Auflösung angezeigt! | 
			 
		  | 
	
	
		| Nach oben | 
		 | 
	
	
		  | 
	
	
		helpy
 
 
  Anmeldungsdatum: 22.03.2005 Beiträge: 17
 
  | 
		 | 
	
	
		| Nach oben | 
		 | 
	
	
		  | 
	
	
		noop
 
 
  Anmeldungsdatum: 04.05.2005 Beiträge: 259
 
  | 
		
			
				 Verfasst am: 08.09.2005, 20:58    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				THX
 
Werds mir mal angucken.
 
Gleich mal 2 neue Fragen:
 
Wenn ich MULTIKEY mit SELECT CASE benutzen will funzt dat net.
 
 	  | Code: | 	 		  
 
DO
 
SELECT CASE MULTIKEY(&H)
 
CASE &H1:END
 
END SELECT
 
LOOP
 
 | 	  
 
Da kommt du die Meldung ob ich Microsoft die Fehlermeldung schicken will.
 
Wie kann ich das mit SELECT CASE machen?
 
Oda muss ich IF THEN benutzen(ist halt ein bisschen mehr arbeit-select case mag ich irgendwie mehr;))
 
2.
 
Wenn ich mit POKE BYTE, zahl, -1 z.b auf &H54(war doch Num...) schreibe müsste doch eigentlich das Lämpchen neben Num ausgehen.
 
Auch wenn ich dieses wieder mit PEEK auslese steht dort -1.
 
Warum klappt es aba doch nicht? | 
			 
		  | 
	
	
		| Nach oben | 
		 | 
	
	
		  | 
	
	
		MisterD
 
  
  Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
  | 
		
			
				 Verfasst am: 08.09.2005, 22:28    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				SELECT CASE -1
 
CASE MULTIKEY(scancode)
 
 tuwas
 
CASE MULTIKEY(andererscancode)
 
 tuwasanderes
 
END SELECT
 
 
multikey(&H) is schwachsinn, &H{hexzahl} gibt es, &H ist ein ungültiger ausdruck oihne hexzahl dahinter.. _________________ "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
 
Edsger W. Dijkstra | 
			 
		  | 
	
	
		| Nach oben | 
		 | 
	
	
		  | 
	
	
		d.j.peters Gast
 
 
 
 
 
  | 
		
			
				 Verfasst am: 09.09.2005, 05:15    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				 	  | ts-soft hat Folgendes geschrieben: | 	 		  
 
Wie ermittelt man damit welcher Screen und wieviele Sceens vorhanden sind. Inzwischen haben wohl ca. 15% aller User DualScreen.    | 	  
 
 
Hi Thomas das geht mit dem WIN API (GDI) und auch mit dem X11 API.
 
Mit EnumDisplayDevices kriegst Du den DEVICENAMEN per index 0=1 1=2 ...
 
wenn Du den Namen vom zweiten Dualdisplay hast kommt EnumDisplaySettings zum Einsats.
 
Die füllt dann folgene Struktur.
 
 	  | Code: | 	 		  Public Const CCHDEVICENAME = 32
 
Public Const CCHFORMNAME = 32
 
Public Type DEVMODE
 
  dmDeviceName        As String * CCHDEVICENAME
 
  dmSpecVersion       As Integer
 
  dmDriverVersion     As Integer
 
  dmSize              As Integer
 
  dmDriverExtra       As Integer
 
  dmFields            As Long
 
  dmOrientation       As Integer
 
  dmPaperSize         As Integer
 
  dmPaperLength       As Integer
 
  dmPaperWidth        As Integer
 
  dmScale             As Integer
 
  dmCopies            As Integer
 
  dmDefaultSource     As Integer
 
  dmPrintQuality      As Integer
 
  dmColor             As Integer
 
  dmDuplex            As Integer
 
  dmYResolution       As Integer
 
  dmTTOption          As Integer
 
  dmCollate           As Integer
 
  dmFormName          As String * CCHFORMNAME
 
  dmUnusedPadding     As Integer
 
  dmBitsPerPel        As Long
 
  dmPelsWidth         As Long
 
  dmPelsHeight        As Long
 
  dmDisplayFlags      As Long
 
  dmDisplayFrequency  As Long
 
End Type | 	  
 
 
Grüsse Joshy | 
			 
		  | 
	
	
		| Nach oben | 
		 | 
	
	
		  | 
	
	
		ts-soft
 
  
  Anmeldungsdatum: 13.02.2005 Beiträge: 26 Wohnort: Berlin
  | 
		
			
				 Verfasst am: 09.09.2005, 20:11    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				thx, Joshy
 
Ich dachte aber das sowas in einer neuen Programmiersprache gleich mit eingebracht wird, da diese Desktop-Enumeration ja inzwischen zur Pflichtübung gehört, wenn man seine Fensterkoordinaten sichert. Kenne viele, die immer schimpfen weil die Fenster sich immer nur auf Desktop 0 öffnen und extra verschoben werden müssen. Vielleicht wird SCREENINFO ja noch irgendwann erweitert    | 
			 
		  | 
	
	
		| Nach oben | 
		 | 
	
	
		  | 
	
	
		noop
 
 
  Anmeldungsdatum: 04.05.2005 Beiträge: 259
 
  | 
		
			
				 Verfasst am: 10.09.2005, 13:06    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				@helpy: Ja funzt bei mir auch. thx
 
@MisterD: Das klappt nicht:
 
 	  | Code: | 	 		  
 
DO
 
SELECT CASE -1
 
CASE MULTIKEY(&H1):PRINT "ESC"
 
CASE MULTIKEY(&H1C):PRINT "ENTER"
 
END SELECT
 
SLEEP 10
 
LOOP
 
 | 	  
 
Gibts auch was für meine 2. Frage? | 
			 
		  | 
	
	
		| Nach oben | 
		 | 
	
	
		  | 
	
	
		Dusky_Joe
 
  
  Anmeldungsdatum: 07.01.2005 Beiträge: 1007 Wohnort: Regensburg/Oberpfalz
  | 
		
			
				 Verfasst am: 10.09.2005, 15:26    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				Sieh dir doch bitte mal den Eintrag hier an:
 
 
http://www.freebasic.de/r.php?s=MULTIKEY
 
 
Generell:
 
 
 	  | Code: | 	 		  DO
 
 IF MULTIKEY(&H1) THEN PRINT "ESC"
 
 IF MULTIKEY(&H1C) THEN PRINT "ENTER"
 
 
 WHILE LEN(INKEY$): WEND   ' Tastaturpuffer leeren
 
LOOP | 	 
  _________________ fully biological degradable
 
 
Once, the big wave arrives, you've got two ways, you can go:
 
Either, you ride it, or you don't do.
 
But, if you don't ride, you'll never know wether you'd have gone wet. | 
			 
		  | 
	
	
		| Nach oben | 
		 | 
	
	
		  | 
	
	
		tilli
 
  
  Anmeldungsdatum: 10.09.2005 Beiträge: 73
 
  | 
		
			
				 Verfasst am: 10.09.2005, 19:37    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				Moin,
 
 
man sollte sich doch überlegen, ob man die Inkey$-Variante vorzieht - die funktioniert hervorragend mit case.
 
 
BTW: die Keyborad scancodes passen nicht immer: Thema QWERTZ und QWERTY - Tastatur - man sollte das im Tutorial erwähnen!!! (Scancodetabelle)
 
 
CU2
 
Tilli | 
			 
		  | 
	
	
		| Nach oben | 
		 | 
	
	
		  | 
	
	
		Dusky_Joe
 
  
  Anmeldungsdatum: 07.01.2005 Beiträge: 1007 Wohnort: Regensburg/Oberpfalz
  | 
		
			
				 Verfasst am: 11.09.2005, 15:20    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				Danke für den Hinweis!
 
 
Generell kannst du das aber auch selbst ändern!
 
Geh einfach auf www.freebasic.net
 
in der rechten unteren Ecke, ziemlich versteckt ist ein pi-Symbol. Klick darauf. Dann kannst du dich anmelden bzw. ein Benutzerkonto erstellen. Sobald du das getan hast, erscheint bei jedem Tutorial (außer den Referenz-Einträgen) ein Bearbeiten-Symbol (oder war es ein "Klick hier zum Bearbeiten"-Text?). Und schon kannst du das Tutorial nach belieben verändern.
 
 
Falls du dich mit WIKI-Code nicht auskennst: Das ist wie hier im Forum. Wenn Text fett gedruckt werden soll, musst du ihn zwischen 
 
 
setzen.
 
das selbe mit i statt b macht den Text kursiv.
 
dann gibts auch noch den sog. code-Tag, also eben code statt b einsetzen. Dann wird der Text so formatiert wie oben die Code-Box.
 
 
Ach, und falls das grade ein großer Witzbold lesen sollte: Mecki hat sich ein tolles Backup-System ausgedacht. Wenn also jemand einfach den gesamten Text löschen sollte, wird er einfach wieder hergestellt.
 
 
Und jetzt an die Arbeit   _________________ fully biological degradable
 
 
Once, the big wave arrives, you've got two ways, you can go:
 
Either, you ride it, or you don't do.
 
But, if you don't ride, you'll never know wether you'd have gone wet. | 
			 
		  | 
	
	
		| Nach oben | 
		 | 
	
	
		  | 
	
	
		tilli
 
  
  Anmeldungsdatum: 10.09.2005 Beiträge: 73
 
  | 
		
			
				 Verfasst am: 11.09.2005, 16:18    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				Moin nochmal,
 
 
Das Backupsystem ist wirklich toll: Ich komme gar nicht erst dazu etwas zu ändern  
 
Wenn ich auf den Button  - I-Hier klicken um etwas zu bearbeiten - klicke, dann kommt ein Verweis auf das Forum ... ist bestimmt 'ne ganz tolle Sache    scheint aber bei mir wieder nicht zu funken  
 
 
oder muss Mecki mich erst freischalten (persönlich)?
 
 
Ich poste da am besten einfach mal rein - mal sehen ob er sich da heute rumiegelt  
 
 
CU2
 
Tilli | 
			 
		  | 
	
	
		| Nach oben | 
		 | 
	
	
		  | 
	
	
		noop
 
 
  Anmeldungsdatum: 04.05.2005 Beiträge: 259
 
  | 
		
			
				 Verfasst am: 11.09.2005, 17:12    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				Also muss ich es mit IF THEN machen?
 
@tillt: Ich muss MULTIKEY benutzen, weil ich mehrere TAsten gleichzeitig abfragen will. | 
			 
		  | 
	
	
		| Nach oben | 
		 | 
	
	
		  | 
	
	
		Mecki Igel
  
  Anmeldungsdatum: 10.09.2004 Beiträge: 985 Wohnort: Niederbayern
  | 
		 | 
	
	
		| Nach oben | 
		 | 
	
	
		  | 
	
	
		jb
 
  
  Anmeldungsdatum: 14.01.2005 Beiträge: 2010
 
  | 
		
			
				 Verfasst am: 11.09.2005, 18:50    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				Also zu deinem Problem, noop:
 
Speichere zu erst alle Scancodes in einem Feld, z.B. mit Read & Data.
 
Dann kannst du bequem mit Select Case arbeiten, so wie du es vorhattest:
 
 	  | Code: | 	 		  
 
restore codes
 
 
' Das Feld dimensionieren
 
read anzahl
 
dim scancodes(100)
 
 
for i = 1 to anzahl step 1
 
 read scancodes(i)
 
next i
 
 
' Jetzt geht's los:
 
do
 
 
 for i = 1 to anzahl step 1
 
  if multikey(scancodes(i)) then 
 
  
 
   select case scancodes(i)
 
   
 
     case &H1
 
      [...]
 
 
     case &H2
 
      [...]  
 
 
   end select
 
 
  end if
 
 next i
 
 
codes:
 
 
' Die Anzahl an Scancodes:
 
data 2
 
 
' Jetzt kommen die Codes:
 
data &H1, &H2
 
 | 	   
 
 
Nicht getestet, sollte aber klappen.
 
 
jb | 
			 
		  | 
	
	
		| Nach oben | 
		 | 
	
	
		  | 
	
	
		noop
 
 
  Anmeldungsdatum: 04.05.2005 Beiträge: 259
 
  | 
		
			
				 Verfasst am: 11.09.2005, 19:46    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				danke
 
ic probiers mal aus | 
			 
		  | 
	
	
		| Nach oben | 
		 | 
	
	
		  | 
	
	
		 |