Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Grafikausgabe auf separatem Bildschirm

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Windows-spezifische Fragen
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2507
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 26.10.2012, 10:23    Titel: Grafikausgabe auf separatem Bildschirm Antworten mit Zitat

Seit Längerem einmal von mir selber eine Frage an all Euch Spezialisten: Ein Präsentationsprojekt für eine örtliche Veranstaltung steht bei mir vor der Tür, bei welcher ein Beamer auf eine Grossleinwand projiziert.

Für die Bilderzeugung kommt ein Notebook zum Einsatz, bei welchem wie unter

http://beilagen.dreael.ch/QB/Screenshots_Doppelbildschirm/Einstellung_2_Bildschirme.png

gezeigt, zwei unabhängige Bildschirme aktiviert werden, so dass auf dem lokalen Notebook-Bildschirm eine kleine Benutzeroberfläche für den Bediener im Technik-Team erscheint, während die Inhalte für die Zuschauer auf dem Bildschirm 2 erscheinen.

Grundsätzlich erfolgt der Hauptteil via PowerPoint, dort ist es übrigens auch kein Problem, wie unter

http://beilagen.dreael.ch/QB/Screenshots_Doppelbildschirm/PowerPoint_2_Bildschirm.png

gezeigt die Präsentation auf Bildschirm 2 anzeigen zu lassen.

Weil es sich beim Anlass um ein Live-Wettkampfspiel handelt, werden einige Effekte wie rückwärtszählende Stoppuhr, Punkte einblenden, rote "X" anzeigen usw. benötigt, wofür ich passende kleine FreeBasic-Programme entwickeln möchte, welche von einem auch PowerPoint-steuernden .VBS aus dann mit WScript.Shell.Run aufgerufen werden und diese Effekte ad hoc im richtigen Moment erzeugen.

So, und jetzt die Frage an Euch Cracks: Wie lässt sich FB anweisen, mir einen "Screen"-Bildschirm in Anzeigebereich 2 als Vollbild einzublenden (Auflösung wie Windows-Anzeigeeinstellungen, d.h. üblicherweise Beamer-Auflösung) und idealerweise noch ein kleines Fenster (Textkonsole ausreichend) in Anzeige 1, so dass ich im kleinen Fenster Steuerbefehle mit Inkey entgegennehmen kann, mit Line, Circle usw. aber im Anzeigebereich 2 zeichnen kann? Geht dies mit FB-Bordmitteln oder muss ich da bereits direkt auf Win32-APIs via .DLL-Aufrufe zurückgreifen?

=> Kurzes Codebeispiel (z.B. diese zwei Fenster, Kreis zeichnen und auf Tastendruck warten) ist willkommen.
_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1837
Wohnort: [JN58JR]

BeitragVerfasst am: 26.10.2012, 10:36    Titel: Antworten mit Zitat

Prinzipiel wir das Fenster unter windows dort geöffnet, wo das programm gestartet wurde.

Willst du speziell auf einen Schirm das fenster öffnen, musst du auch WinAPI zurückgreifen.

Du nutzt hierfür EnumDisplayMonitors http://msdn.microsoft.com/en-us/library/windows/desktop/dd162610(v=vs.85).aspx um die informationen der entsprechenden Monitore zu erhalten.

Daraufhin kannst du dann ein Fenster mit den entsprechenden Koordinaten und Größen erzeugen. Wenn nötig im TOP-Z.


MfG
TPM

EDIT: Das URL BBCode Tag macht massive probs!
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 26.10.2012, 12:55    Titel: Antworten mit Zitat

Eventuell ist es möglich, mit den passenden WinAPI-Aufrufen auch einfach das Fenster nach der Erstellung zu verschieben. Man könnte dann z.B. einfach ein Fenster in der Größe des Desktops erstellen, dabei das Borderless-Flag angeben und dieses Fenster dann verschieben. Macht eventuell weniger Probleme als direkt mit Vollbild-Fenstern zu hantieren, auch wenn diese sich im Prinzip wohl ähnlich verhalten sollten.

ThePuppetMaster hat Folgendes geschrieben:
EDIT: Das URL BBCode Tag macht massive probs!

Klammern gehören auch nicht zu den erlaubten Zeichen in einer URL und müssen durch die passenden Entities %28 und %29 ersetzt werden.
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2507
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 26.10.2012, 15:04    Titel: Antworten mit Zitat

Inzwischen vorhin einmal selber etwas aktiv geworden. ;-) Ergebnis siehe

http://beilagen.dreael.ch/QB/Sep_Bildschirmtest.bas

Ist sehr simpel gehalten und kommt sogar vollständig mit FB-Boardmitteln aus, denn es nutzt die Tatsache vom sog. erweiterten Desktop zu diesem Zweck aus, da sich bekanntlich beliebige Windows-Anwendungen einfach rechts rüber in den zweiten Bildschirm schieben lassen und Fenster sogar überlappend stehen dürfen.

Grundprinzip: Einfach ein rahmenloses Fenster in der Grösse vom Bildschirm bzw. sogar übergross gewählt, so dass ich rechts in Bildschirm 1 ein Teil vom Screen-Fenster (aus Sicht von FB der linke Bereich) gleich als Bedienpanel (hier rudimentär ein Menü) verwenden kann.

Bei den grossen Zeichen hat dies sogar noch den Vorteil, dass ich dort auch etwas temporär mit PRINT ausgeben kann, um es mit POINT() dann pixelweise auslesen zu können.

Im Moment muss man die Bildschirmauflösung vom "Nachbar"-Bildschirm 2 (Beamer) noch manuell als Kommandozeilenparameter mitgeben (in meinem Fall kann ich aber mit einer solchen Lösung bereits leben!), ausser ich würde noch den von ThePuppetMaster vorgeschlagenen API-Aufruf dafür verwenden (wer von Euch Lust hat, kann eine Initialisierung der beiden Variablen bs2breite und bs2hoehe implementieren).

Für diejenigen, die es ausprobieren möchten: Einfach separater Bildschirm ans Notebook anschliessen, erweiterter Desktop wie in den Screenshots oben aktivieren und dann FB-Applikation starten. Desktop-PC mit Grafikkarte, welche zwei Anschlüsse besitzt und an jedem Anschluss je ein Bildschirm (oder sogar Heimkino-Beamer) funktioniert natürlich ebenfalls.

An dieser Stelle vielleicht als interessante Frage: PRINT vor dem Screen-Aufruf benützt die Konsole => Lässt sich der PRINT-Fokus auch wieder auf die Konsole zurücknehmen nach einem separaten Screen-Grafikfenster? Vermutlich muss ich mich da einmal noch schlau machen, stdin und stdout passend zu benützen... Aber dank der Möglichkeit vom übergrossen Fenster würde es grundsätzlich auch so schon gehen wie im Beispiel demonstriert... ;-)
_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1837
Wohnort: [JN58JR]

BeitragVerfasst am: 26.10.2012, 15:07    Titel: Antworten mit Zitat

Code:

Open Cons for output as #1
print #1, "das is immer konsolentext"


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2507
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 16.11.2012, 12:51    Titel: Antworten mit Zitat

Inzwischen mehrere Tage voll an dieser Veranstaltungspräsentation gearbeitet, heute und morgen Abend gilt es dann ernst. :-)

Das Gesamtprojekt für die Beamerprojektion inkl. Ton ist nun eine Kombination aus PowerPoint (Folien nicht von mir, aber bestimmte Bedingungen im Aufbau gestellt), VLC Player (Videos und Musikstück/Trailer auch nicht von mir), VBScript und FreeBasic. Die beiden letzten Dinge kommen von mir und FreeBasic handhabt nun sämtliche Arten von Spielrunden-Anzeigen wie Stoppuhr, Countdown, Zähler für Punkte, Treffer, richtige Quiz-Antworten usw. als spezielle Modul-Applikation, die jeweils beim Abruf von bestimmten PowerPoint-Folien durch VBScript aktiviert werden.

Mehr Details und sogar Quellcode soll es dann nach der Veranstaltung geben. :-)
_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Windows-spezifische Fragen Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
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.

 Impressum :: Datenschutz