bubbathemaster
Messages postés339Date d'inscriptiondimanche 26 janvier 2003StatutMembreDernière intervention25 mars 2009
-
1 mai 2006 à 15:14
bubbathemaster
Messages postés339Date d'inscriptiondimanche 26 janvier 2003StatutMembreDernière intervention25 mars 2009
-
1 mai 2006 à 19:46
J'ai une application qui est sensé se mettre en plein écran via ce ptit code :
FullScreen est une variable globale de type boolean qui determine si l'application est en mode plein écran ou pas.
Le code est sensé etre très simple :
Pour passer en plein écran :
Je passe les toolbars, menus et status bar sur visible=false
Je passe la forme en maximized, pas de border et en TopMost
Pour revenir en mode fenêtré, je fais l'inverse.
Ce qui est étrange, c'est que la première fois que l'on lance le plein écran, ca marche.
Quand on ferme le plein écran, la statusbar ne réapparrait pas.
La deuxième fois qu'on lance le plein écran, et pour les fois suivantes aussi, la barre des tâches reste visible et la fermeture du plein écran fonctionne comme prévu.
Le debugging stetp by step ne me donne pas grand chose. Je commence à m'arracher les cheveux :<
//void ToggleFullScreen()
/*
* KNOWN ISSUES :
* + fullscreen works correcly the first time you launch it
* afterward, the taskbar stays on top
* + the first time you close the fullscreen mode, the statusbar
* doesnt come back
*/
void ToggleFullScreen()
{
if (!FullScreen)
{ //activate fullscreen
menuStrip1.Visible = false;
toolStrip1.Visible = false;
statusStrip1.Visible = false;
this.TopMost = true;
this.FormBorderStyle = FormBorderStyle.None;
this.WindowState = FormWindowState.Maximized;
CurrentPictureStyle = 1;
RefreshPictureStyle();
RefreshForm();
}
else
{
statusStrip1.Visible = true;
menuStrip1.Visible = true;
toolStrip1.Visible = true;
this.TopMost = false;
this.FormBorderStyle = FormBorderStyle.Sizable;
CurrentPictureStyle = 1;
RefreshPictureStyle();
RefreshForm();
}
FullScreen = !FullScreen;
}
Voilà comment c'est codé du coup : les règles utilisateurs de la fenetre (maximisé ou pas) sont stockées puis restaurées quand on quitte le fullscreen. Bref, ca reste "sale" je pense, mais en attendant ca marche.
bubbathemaster
Messages postés339Date d'inscriptiondimanche 26 janvier 2003StatutMembreDernière intervention25 mars 20094 1 mai 2006 à 19:18
Effectivement, ca semble régler le problème, mais pas tout en fait.
Si on part d'une fenetre deja maximisé, le problème reste entier. Le hack consiste donc en un
if (this.WindowState == FormWindowState.Maximized)
this.WindowState = FormWindowState.Normal;
Que j'ai rajouté au début de "activate fullscreen". Mais ce n'est pas très propre. De meme, si l'utilisateur etait en maximised, en quittant le fullscreen, il s'attend à revenir en maximised, mais à la place il revient en normal ...