p
u
b
l
i
c
i
t
é
publicité
  1. #1
    Invité de passage
    Inscrit en
    novembre 2008
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : novembre 2008
    Messages : 6
    Points : 0
    Points
    0

    Par défaut Mode plein écran pour une application

    Bonjour

    J'espère que j'ai choisi la bonne catégorie
    J'ai un mode plein écran pour une application sur laquelle je bosse (une sorte de SIG). ça marche bien, sauf si la fenêtre est maximisee, là la fenetre n'est pas en plein écran il reste la barre des taches.
    Ma solution est d'enlever le mode maximisé avec un ShowWindow(..., SW_RESTORE), mais du coup on voit la fenêtre bouger ce n'est pas très joli, meme avec le HIDE/SHOW.

    Y a t'il un autre moyen de procéder? J'ai aussi essayé un LockWindowUpdate mais ça n'apporte rien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
     
    void
        FenetreSrv::SwitchFullScreen(void)
        {
     
          HWND hwnd = (HWND)getSystemView();
     
     
        //Si la fenetre est maximisee on la reduit
       ::ShowWindow(hwnd, SW_RESTORE);
     
          //on commence par cacher la fenetre
          ::ShowWindow(hwnd, SW_HIDE);
     
          long style = ::GetWindowLong(hwnd, GWL_STYLE);
     
          if(_fullScreen)
          {
     
    	updatePanes(IlTrue);
     
     
        	//restaure le style par defaut
          	style &= ~WS_POPUP;
          	style |= WS_OVERLAPPEDWINDOW;
     
          	::SetWindowLong(hwnd,GWL_STYLE,style);
     
          	//restaure la position sauvegardee
          	::SetWindowPos(hwnd,
          			HWND_TOP,
          			_previousRect.left,
          			_previousRect.top,
          			_previousRect.right-_previousRect.left,
          			_previousRect.bottom-_previousRect.top,
          			SWP_FRAMECHANGED);
     
     
          }
          else
          {
     
     
        	  //sauve la taille actuelle.
        	  ::GetWindowRect(hwnd,&_previousRect);
     
        	  //passe en style popup, et degage la barre de titre
        	  style &= ~WS_OVERLAPPEDWINDOW;
        	  style |= WS_POPUP;
     
     
    	  //  prise en compte du multi écran
        	  //occupe la totalite de l'ecran courant (ou par defaut le 1er)
    	  HMONITOR monitor;
    	  monitor =  MonitorFromWindow( hwnd, MONITOR_DEFAULTTOPRIMARY);
     
    	  MONITORINFO monitorInfo;
     
    	  monitorInfo.cbSize = sizeof(MONITORINFO); //obligatoire de fixer la valeur avant l'appel à GetMonitorInfo
     
    	  ::GetMonitorInfo(monitor,  // handle to display monitor
    			   &monitorInfo );  // display monitor information 
     
    	  int mx = monitorInfo.rcMonitor.left; 
    	  int my = monitorInfo.rcMonitor.top; 
    	  int mw = monitorInfo.rcMonitor.right; 
    	  int mh = monitorInfo.rcMonitor.bottom; 
     
     
     
     
    	  //ne pas employer le style topmost, qui va creer des problemes avec les boites de dialogue
    	  //::SetWindowPos(hwnd,HWND_TOPMOST,0,0,mx,my,SWP_FRAMECHANGED);
     
     
    	  ::SetWindowPos(hwnd,HWND_TOP,mx,my,mw-mx,mh-my,SWP_ASYNCWINDOWPOS);
     
     
     
    	  ::SetWindowLong(hwnd,GWL_STYLE,style);
          }
     
     
          _fullScreen = !_fullScreen;
     
     
         ::ShowWindow(hwnd, SW_SHOW);
     
     
     
        }

  2. #2
    Membre régulier Avatar de Piet
    Inscrit en
    décembre 2004
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 33

    Informations forums :
    Inscription : décembre 2004
    Messages : 111
    Points : 96
    Points
    96

    Par défaut

    Bonjour,

    Avez-vous déjà testé ceci au niveau de la form :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    this.Bounds = Screen.PrimaryScreen.Bounds;
    this.TopMost = true;
    Elle devrait passer au dessus de la barre des tâches et être en véritable plein écran.

    Bonne journée.

    EDIT : Je pense que la fenêtre ne doit pas être dans un état maximisé pour que ce soit fonctionnel.
    Piet

Discussions similaires

  1. mode d'interclassement des caractères pour une application jquery mobile
    Par souhir1987 dans le forum Mon application mobile
    Réponses: 0
    Dernier message: 05/11/2014, 22h32
  2. [PPT-2007] comment affecter une macro "ouvrir en mode plein écran" à un diaporama PPSX?
    Par jerky1 dans le forum VBA PowerPoint
    Réponses: 3
    Dernier message: 12/04/2011, 12h06
  3. Application intranet mode plein écran
    Par Flynt dans le forum JavaScript
    Réponses: 4
    Dernier message: 04/06/2008, 12h04
  4. Réponses: 3
    Dernier message: 24/10/2006, 18h36
  5. Réponses: 17
    Dernier message: 17/10/2002, 20h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo