| 
				
					|  | Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
 |  
 
	
		| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |  
		| Autor | Nachricht |  
		| arduno 
 
 
 Anmeldungsdatum: 12.05.2011
 Beiträge: 252
 
 
 | 
			
				|  Verfasst am: 22.01.2016, 18:35    Titel: Consolefenster löschen...wie geht das? |   |  
				| 
 |  
				| Hallo, guten Tag. 
 Ich habe hier ein Consolenfenster und ein Screen.
 Mit welchen Befehl kann ich jetzt bitte  das Consolenfenster löschen ?
 
 Danke.
 Gruss
 
 
  	  | Code: |  	  | #include once "fbgfx.bi"
 #include once "vbcompat.bi"
 Using FB
 
 Declare Sub zeichnen(bild as Any Ptr, farbe as Integer, x as Integer, y as Integer)
 Dim DateiNr As Integer
 Dim AS Any Ptr meinBild
 
 DateiNr = FreeFile
 OPEN CONS FOR OUTPUT AS #DateiNr
 
 screenres (300,300,32)
 ScreenControl SET_WINDOW_POS, 600, 10
 
 meinBild = ImageCreate (100, 100)
 
 PRINT #DateiNr, "hallo, console und grafik funktioniert..."
 zeichnen( meinBild, &hFFFF00, 100, 100)
 Put (20, 50), meinBild
 
 CLOSE #DateiNr
 Sleep
 End
 
 Sub zeichnen(bild as Any Ptr, farbe as Integer, x as Integer, y as Integer)
 Circle bild, (x/2, y/2), 25, farbe
 End Sub
 
 | 
 |  |  
		| Nach oben |  |  
		|  |  
		| St_W 
 
  
 Anmeldungsdatum: 22.07.2007
 Beiträge: 958
 Wohnort: Austria
 
 |  |  
		| Nach oben |  |  
		|  |  
		| grindstone 
 
 
 Anmeldungsdatum: 03.10.2010
 Beiträge: 1283
 Wohnort: Ruhrpott
 
 | 
			
				|  Verfasst am: 23.01.2016, 20:29    Titel: |   |  
				| 
 |  
				| Hallo, 
 als einfachen, plattformübergreifenden Workaround hätte ich da diese Lösung anzubieten:
  	  | Code: |  	  | #include once "fbgfx.bi" #include once "vbcompat.bi"
 Using FB
 
 Declare Sub zeichnen(bild as Any Ptr, farbe as Integer, x as Integer, y as Integer)
 Dim DateiNr As Integer
 Dim AS Any Ptr meinBild
 
 DateiNr = FreeFile
 OPEN CONS FOR OUTPUT AS #DateiNr
 
 screenres (300,300,32)
 ScreenControl SET_WINDOW_POS, 600, 10
 
 meinBild = ImageCreate (100, 100)
 
 PRINT #DateiNr, "hallo, console und grafik funktioniert..."
 zeichnen( meinBild, &hFFFF00, 100, 100)
 Put (20, 50), meinBild
 
 '*********************************
 Sleep 3000
 For x As Integer = 0 To 25
 Print #DateiNr, String(80," ")
 Next
 '*********************************
 
 CLOSE #DateiNr
 Sleep
 End
 
 Sub zeichnen(bild as Any Ptr, farbe as Integer, x as Integer, y as Integer)
 Circle bild, (x/2, y/2), 25, farbe
 End Sub
 | 
 
 Unter Windows kannst du auch direkt auf den Konsolenpuffer zugreifen. Ich habe sowas mal programmiert, aber ich weiß nicht mehr genau, wo. Ich werde mal sehen, ob ich es finde...
 
 Gruß
 grindstone
 _________________
 For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
 |  |  
		| Nach oben |  |  
		|  |  
		| grindstone 
 
 
 Anmeldungsdatum: 03.10.2010
 Beiträge: 1283
 Wohnort: Ruhrpott
 
 | 
			
				|  Verfasst am: 23.01.2016, 21:55    Titel: |   |  
				| 
 |  
				| Wer sagt's denn? In einem ordentlichen Haushalt findet sich alles wieder...   
 
  	  | Code: |  	  | 
 #include once "fbgfx.bi"
 #include once "vbcompat.bi"
 #include once "windows.bi" '<<<<<<<<<<<<<<<<<<<
 Using FB
 
 Declare Sub zeichnen(bild as Any Ptr, farbe as Integer, x as Integer, y as Integer)
 Declare Sub ccls()
 Declare Sub clocate(clin As UShort, ccol As UShort)
 Declare Sub cprint(text As String)
 
 Dim DateiNr As Integer
 Dim AS Any Ptr meinBild
 
 DateiNr = FreeFile
 OPEN CONS FOR OUTPUT AS #DateiNr
 
 screenres (300,300,32)
 ScreenControl SET_WINDOW_POS, 600, 10
 
 meinBild = ImageCreate (100, 100)
 
 PRINT #DateiNr, "hallo, console und grafik funktioniert..."
 zeichnen( meinBild, &hFFFF00, 100, 100)
 Put (20, 50), meinBild
 CLOSE #DateiNr
 
 '*********************************
 Sleep 2000
 ccls
 Sleep 1000
 clocate(10,10)
 cprint("geloescht :-)")
 Sleep 2000
 ccls
 '*********************************
 
 Sleep
 
 Sub zeichnen(bild as Any Ptr, farbe as Integer, x as Integer, y as Integer)
 Circle bild, (x/2, y/2), 25, farbe
 End Sub
 
 Sub clocate(clin As UShort, ccol As UShort)
 Dim As HANDLE cha
 Dim As COORD cursorpos
 
 cha = CreateFile("CONOUT$",GENERIC_WRITE,FILE_SHARE_WRITE,0,OPEN_EXISTING,0,0)
 cursorpos.x = ccol - 1
 cursorpos.y = clin - 1
 SetConsoleCursorPosition(cha,cursorpos)
 CloseHandle(cha)
 End Sub
 
 Sub cprint(text As String)
 Dim As HANDLE cha
 Dim As Integer noc
 
 cha = CreateFile("CONOUT$",GENERIC_WRITE,FILE_SHARE_WRITE,0,OPEN_EXISTING,0,0)
 WriteConsole(cha,StrPtr(text),Len(text),@noc,0)
 CloseHandle(cha)
 End Sub
 
 Sub ccls()
 For x As Integer = 1 To 25
 clocate(x,1)
 cprint(String(80," "))
 Next
 clocate(1,1)
 End Sub
 | 
 
 Viel Spaß damit!
   
 Gruß
 grindstone
 _________________
 For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
 |  |  
		| Nach oben |  |  
		|  |  
		| arduno 
 
 
 Anmeldungsdatum: 12.05.2011
 Beiträge: 252
 
 
 | 
			
				|  Verfasst am: 24.01.2016, 19:46    Titel: |   |  
				| 
 |  
				| Hallo, danke für die Hilfe. 
 Ich wusste nicht, das man so tief rein greifen muss, was ich als Lai nicht beherrsche.  Hmmm..., kann man den Text auch Farbig darstellen ? Wenn ja, bitte wie ?
 
 Gruss
 |  |  
		| Nach oben |  |  
		|  |  
		| grindstone 
 
 
 Anmeldungsdatum: 03.10.2010
 Beiträge: 1283
 Wohnort: Ruhrpott
 
 | 
			
				|  Verfasst am: 25.01.2016, 00:30    Titel: |   |  
				| 
 |  
				| Du hast Wünsche...! 	  | Zitat: |  	  | kann man den Text auch Farbig darstellen ? Wenn ja, bitte wie ? | 
   
 Ja, kann man, das ist dann aber noch "tiefer". Ich hab mal ein paar Kommentare dazugeschrieben:
  	  | Code: |  	  | #include once "fbgfx.bi"
 #include once "vbcompat.bi"
 #include once "windows.bi"
 Using FB
 
 Enum 'alle konsolenfarben
 schwarz = 0
 blau
 gruen
 cyan
 rot
 magenta
 braun
 hellgrau
 grau
 hellblau
 hellgruen
 hellcyan
 hellrot
 pink
 gelb
 weiss
 End Enum
 
 Declare Sub zeichnen(bild as Any Ptr, farbe as Integer, x as Integer, y as Integer)
 Declare Sub ccls(farbe As UByte = schwarz)
 Declare Sub cprint(text As String = "", zeile As UShort = 1, spalte As UShort = 1, _
 zeichenfarbe As UByte = hellgrau, hintergrund As UByte = schwarz)
 
 Dim DateiNr As Integer
 Dim AS Any Ptr meinBild
 
 DateiNr = FreeFile
 OPEN CONS FOR OUTPUT AS #DateiNr
 
 screenres (300,300,32)
 ScreenControl SET_WINDOW_POS, 600, 10
 
 meinBild = ImageCreate (100, 100)
 
 PRINT #DateiNr, "hallo, console und grafik funktioniert..."
 zeichnen( meinBild, &hFFFF00, 100, 100)
 Put (20, 50), meinBild
 CLOSE #DateiNr
 
 '*********************************
 Sleep 1000
 ccls
 Sleep 1000
 ccls(hellgruen)
 Sleep 1000
 cprint("geloescht :-)",5,10,hellrot,hellblau)
 Sleep 2000
 ccls
 '*********************************
 
 Sleep
 
 Sub zeichnen(bild as Any Ptr, farbe as Integer, x as Integer, y as Integer)
 Circle bild, (x/2, y/2), 25, farbe
 End Sub
 
 Sub cprint(text As String = "", zeile As UShort = 1, spalte As UShort = 1, _
 zeichenfarbe As UByte = hellgrau, hintergrund As UByte = schwarz)
 
 Dim As HANDLE cha
 Dim As COORD BufferSize, BufferCoord
 Dim As SMALL_RECT WriteRegion
 Dim As CHAR_INFO quellpuffer(Len(text),0) '2 - dimensionales array
 
 'handle zum konsolenpuffer erstellen
 cha = CreateFile("CONOUT$",GENERIC_WRITE,FILE_SHARE_WRITE,0,OPEN_EXISTING,0,0)
 
 'text und farbattribute in quellpuffer schreiben
 For x As Integer = 0 To Len(text) - 1
 With quellpuffer(x,0)
 .char.asciichar = text[x] 'ASCII - zeichen (geht wahlweise auch mit unicode)
 .Attributes = zeichenfarbe + (hintergrund Shl 4) 'farbattribute
 End With
 Next
 
 BufferSize.x = Len(text) 'anzahl der zeichen (textlänge)
 BufferSize.y = 1 'anzahl der zeilen
 BufferCoord.x = 0 'beginn des quellpuffers oben links
 BufferCoord.y = 0 '
 WriteRegion.Left = spalte - 1 'beginn des bildschirmpuffers links (locate -> spalte)
 WriteRegion.Top = zeile - 1 'beginn des bildschirmpuffers oben (locate -> zeile)
 WriteRegion.Right = WriteRegion.Left + Len(text) 'ende des bildschirmpuffers rechts
 WriteRegion.Bottom = WriteRegion.Top 'ende des bildschirmpuffers unten
 
 'quellpuffer in bildschirmpuffer übertragen
 WriteConsoleOutput(cha,@quellpuffer(0,0),BufferSize,BufferCoord,@WriteRegion)
 CloseHandle(cha) 'handle freigeben
 End Sub
 
 Sub ccls(farbe As UByte = schwarz)
 For x As Integer = 1 To 25
 cprint(String(80," "),x,1,schwarz,farbe)
 Next
 End Sub
 | 
 Beachte bitte, daß es bei dieser Zugriffsmethode weder einen Zeilenumbruch noch einen Zeilenvorschub gibt. Was über den sichtbaren Fensterbereich hinausgeht, wird abgeschnitten.
 
 Auf ähnliche Weise kannst du übrigens auch Text (und Farben) vom Konsolenfenster lesen.
 
 Gruß
 grindstone
 _________________
 For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
 |  |  
		| Nach oben |  |  
		|  |  
		| arduno 
 
 
 Anmeldungsdatum: 12.05.2011
 Beiträge: 252
 
 
 | 
			
				|  Verfasst am: 25.01.2016, 14:49    Titel: |   |  
				| 
 |  
				| Hallo, vielen dank für die Consolenhilfe. 
 Da kann man ja doch einiges mit anstellen und die Console sehenswert gestalten.
 
 Danke.
 Gruss
 |  |  
		| Nach oben |  |  
		|  |  
		|  |  
  
	| 
 
 | Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten.
 Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
 Du kannst deine Beiträge in diesem Forum nicht löschen.
 Du kannst an Umfragen in diesem Forum nicht mitmachen.
 
 |  |