WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Fullscreen

 

Tieferschatten
Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 05.03.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.04.2013, 07:13     Titel: Fullscreen
  Antworten mit Zitat      
Hi,

kann ich mit der GUI einen echten Fullscreen Modus herstellen? Also Gui-Fenster ohne Windows-Leiste, ohne Matlab-Anzeige, nur meine gui auf dem Bildschirm?
Wie kann ich das machen?

Freundliche Grüße,

Tieferschatten
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 22.04.2013, 13:26     Titel: Re: Fullscreen
  Antworten mit Zitat      
Hallo Tieferschatten,

Mit reinen Matlab-mitteln geht das nicht. Aber man kann per MEX das Betriebssystem dazu auffordern: http://www.mathworks.com/matlabcent.....eexchange/31437-windowapi

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Tieferschatten
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 05.03.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.04.2013, 13:39     Titel:
  Antworten mit Zitat      
Hallo Jan,

vielen Dank für Deine Antwort!

Leider funktioniert bei mir die Installation der MS SDK nicht (???) und daher kann ich keine mex-files compilieren.

Kannst Du nicht vielleicht einfach ein compiliertes file zur Verfügung stellen? Ich hätte Windows 7 64 bit...

Gruß,

Tieferschatten
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 23.04.2013, 14:26     Titel:
  Antworten mit Zitat      
Hallo

Auf der Jan's Seite
Unter dem Punkt Other requirements ist bereits das Link zu kompilierten MEX-Files hinterlegt: http://www.n-simon.de/mex/

Zuletzt bearbeitet von denny am 23.04.2013, 15:02, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
Tieferschatten
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 05.03.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.04.2013, 14:59     Titel:
  Antworten mit Zitat      
HI denny,

super, das funktioniert bestens, vielen Dank!

Gruß,

Tieferschatten
Private Nachricht senden Benutzer-Profile anzeigen
 
Bluesmaster
Forum-Century

Forum-Century



Beiträge: 203
Anmeldedatum: 13.11.11
Wohnort: Gera
Version: 2012a
     Beitrag Verfasst am: 23.04.2013, 21:29     Titel:
  Antworten mit Zitat      
Es geht übrigens auch Plattformübergreifend und ohne Extrafiles:

Code:
j = get( handle(figure) , 'javaframe' );
drawnow;
w = j.fHG1Client.getWindow();
w.setMaximized( 1 );



dafür könnte es mit geringer Wahrscheinlichkeit irgendwann in
Zukunft mal nicht mehr gehen.

Gruß

Blues
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 23.04.2013, 22:44     Titel:
  Antworten mit Zitat      
Hallo Bluesmaster,

Das trifft nicht die Frage:
Zitat:
Also Gui-Fenster ohne Windows-Leiste, ohne Matlab-Anzeige,...

Mit Java's setMaximized ist die Windows-Taskbar noch sichtbar. Ich interpretiere "ohne Matlab-Anzeige" so, dass auch der Fenster-Rahmen und die Titel-Leiste ausgeblendet sind. Und genau dafür hat WindowAPI 4 verschiedene "FullScreen"-Arten:
1. Figure mit Rahmen, Taskbar sichtbar
2. Figure ohne Rahmen, Taskbar sichtbar
3. Figure mit Rahmen, ohne Taskbar
4. Figure ohne Rahmen, ohne Taskbar
Allerdings ist die Version 3 unter Windows7 nicht machbar.

Unter Java ist das meines Wissens nach nicht möglich, weil immer Matlab ResizeFcn aufgerufen wird, die zumindest bis R2011b die Größe der Figure immer beschränkt.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Bluesmaster
Forum-Century

Forum-Century



Beiträge: 203
Anmeldedatum: 13.11.11
Wohnort: Gera
Version: 2012a
     Beitrag Verfasst am: 24.04.2013, 10:00     Titel:
  Antworten mit Zitat      
Du hast Recht, da habe ich ja vollkommen geträumt.


Für den beschriebenen Fall funktioniert aber diese Lösung bei mir gut:


Code:
f = figure( 'units' , 'normalized' , 'Position' , [0 0 1 1] );



zumindest wenn man verschmerzen kann, dass auf den anderen
Monitoren der Rahmen etwas durchlugt.

(R2012b)


Gruß

Blues
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 24.04.2013, 10:39     Titel:
  Antworten mit Zitat      
Hallo Bluesmaster,

Den Rahmen kann man dann ja per WindowAPI wieder abschneiden ;-)
Unter R2011b und vorher erzeugt das Setzen der (Inner)Position auf [0,0,1,1] ein maximiertes Fenster mit sichtbarem Rand.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Tieferschatten
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 05.03.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.04.2013, 10:46     Titel:
  Antworten mit Zitat      
Hallo,

die WindowAPI funktioniert soweit gut wenn ich sie außerhalb der GUI aufrufe. Allerdings kommt beim Aufruf innerhalb der GUI immer die Fehlermeldung

Error using WindowAPI
*** WindowAPI[mex]: Cannot get HWND for figure handle.

Aber ich brauche doch die WindowAPI in der Openingfcn ...

Was kann ich da tun?

Gruß,

Tieferschatten
Private Nachricht senden Benutzer-Profile anzeigen
 
Bluesmaster
Forum-Century

Forum-Century



Beiträge: 203
Anmeldedatum: 13.11.11
Wohnort: Gera
Version: 2012a
     Beitrag Verfasst am: 24.04.2013, 11:03     Titel:
  Antworten mit Zitat      
Ich verstehe. Hm... und geht das dann? :


Code:
s = get( 0 , 'Screensize' )
f = figure( 'Position' , [ 0 0 s( 3: 4 ) ] );



Bei Multimonitor müsste man halt noch ein wenig anpassen,
aber es ist lightweight und plattformunabhängig.


Kann es leider gerade nicht testen.


Gruß

Blues
Private Nachricht senden Benutzer-Profile anzeigen
 
Tieferschatten
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 05.03.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.04.2013, 11:19     Titel:
  Antworten mit Zitat      
Hi Blues,

also das ist ja wieder ohne WindowAPI. Also nur der "kleine" Fullscreen. Außerdem wird damit eine figure erzeugt, die dann im "kleinen" Fullscreen zu sehen ist. Es ist nicht die GUI selbst, die im Fullscreen zu sehen ist.

Was aber auch geht ist
Code:
WindowAPI(figure, 'Position','full')

womit auch eine figure erzeugt wird, die dann im "großen" Fullscreen zu sehen ist.
Aber
Code:
WindowAPI(hObject, 'Position','full')

geht leider nicht. Jedenfalls nicht in der Gui_Openingfcn. Sonst schon.
Ich bin ziemlicher GUI-Neuling (ist meine erste GUI, leider gleich etwas ganz kompliziertes Wink) und habe vielleicht einen ganz einfachen GUI-Fehler gemacht?

Grüße vom Tieferschatten
Private Nachricht senden Benutzer-Profile anzeigen
 
Bluesmaster
Forum-Century

Forum-Century



Beiträge: 203
Anmeldedatum: 13.11.11
Wohnort: Gera
Version: 2012a
     Beitrag Verfasst am: 24.04.2013, 11:33     Titel:
  Antworten mit Zitat      
Du musst natürlich die 'Position' vom Figure von DEINER Gui setzen.
Eine Figure ist IMMER im Spiel wenn du eine Matlab-GUI hast.


So richtig verstehe ich nicht was mit "kleinem" Fullscreen gemeint ist.
Es kommt auf deine Anforderungen an:

1. Lösung mit Winapi entfernt auch den Rahmen noch falls du
mehrere Monitor hast ist das vielleicht interessant. Dafür geht
es nur unter windows und mit zusätzlichen Files

2. Lösung mit 'Position' ist auf einem Monitor optisch identisch,
bei mehreren Monitoren sieht man den Fensterrand auf den anderen Monitoren


Gruß

Blues
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 24.04.2013, 12:46     Titel:
  Antworten mit Zitat      
Hallo Tieferschatten,

Ich muss unbedingt eine neuere Version ins Netz stellen, die bessere Fehlermeldungen enthält: Windows kann die Fenster nur dann verwalten, wenn sie nicht unsichtbar sind. Dafür können sie ausserhalb des sichtbaren Bereiches stehen, aber Matlab's 'Visible'-Eigenschaft muss 'on' sein. Andernfalls haben die Fenster nämlich keinen "Handle".

Man muss also in der Opening-Funktion zunächst setzen
Code:
set(FigureHandle, 'Visible', 'on');
drawnow;

Oder wie der figure-Handle auch immer gespeichert ist.

Man muss dann entweder mit dem kurzzeitigen Flackern leben, oder das Fenster zuerst "weit weg" schieben:
Code:
set(FigureHandle, 'Units', 'pixels', 'Position', [0, 10000, 100, 100], ...
   'Visible', 'on');
drawnow;
WindowAPI(FigureHandle, 'Position', 'full');

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Tieferschatten
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 05.03.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.04.2013, 14:14     Titel:
  Antworten mit Zitat      
Hi,

Wenn ich das mache (set visible ect.) ist die GUI zum Bildschirm ein bisschen verschoben. Genau das gleiche passiert auch wenn ich ohne WindowsAPI versuche, die figure groß zu machen...

Was mache ich falsch???

LG,

Tieferschatten
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  Weiter

Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum 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.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.