IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MFC Discussion :

empêcher mainframe sortir de l'écran


Sujet :

MFC

  1. #1
    Membre averti
    Inscrit en
    Février 2008
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 30
    Par défaut empêcher mainframe sortir de l'écran
    Comment faut-il faire pour empêcher la mainframe de sortir de l'écran?

    Pour l'instant je l'ai fait comme ça mais ça bugg légèrement : la mainframe n'est pas stable. C'est logique car lorsque je déplace la mainframe en dehors de l'écran, la position de celle ci est forcée à l'intérieur de l'écran.
    Voyez vous une autre manière de le faire?
    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
    void CMainFrame::OnMove(int x, int y) 
    {
    	CFrameWnd::OnMove(x, y);
    	int ScreenWidth ;
    	int ScreenHeight;
    	ScreenWidth  = GetSystemMetrics(SM_CXSCREEN);
    	ScreenHeight = GetSystemMetrics(SM_CYSCREEN);	
    	if(x<0)
    	{
    		SetWindowPos(NULL, 0,y-49, mainframe_size_height, mainframe_size_width, SWP_SHOWWINDOW);
    	}
    	if(x>ScreenWidth-550)
    //550*590 taille de la mainframe que j'ai fixé
    	{
    		SetWindowPos(NULL, ScreenWidth-550,y-49, mainframe_size_height, mainframe_size_width, SWP_SHOWWINDOW);
    	}
     
    	if(y>ScreenHeight-590+20)//20 : taille de la barre des tâches
    	{
    		SetWindowPos(NULL, x,ScreenHeight-590+20-50, mainframe_size_height, mainframe_size_width, SWP_SHOWWINDOW);
    	}
    }

  2. #2
    Membre averti
    Inscrit en
    Février 2008
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 30
    Par défaut
    "OnMoving indicates that the user is currently moving the window."

    Comment je peux faire pour savoir quand l'utilisateur a arrêté de bouger la fenêtre?

  3. #3
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Regarde plutôt du côte de WM_WINDOWPOSCHANGING (http://msdn.microsoft.com/en-us/libr...52(VS.85).aspx).

  4. #4
    Membre averti
    Inscrit en
    Février 2008
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 30
    Par défaut
    Je ne vois pas WM_WINDOWPOSCHANGING au niveau de ClassWizard de visual studio 6.0.
    Où est ce que je peux le récupérer?

  5. #5
    Membre chevronné Avatar de stephdim
    Profil pro
    Inscrit en
    Août 2007
    Messages
    462
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 462
    Par défaut
    salut,

    Je ne vois pas WM_WINDOWPOSCHANGING au niveau de ClassWizard de visual studio 6.0.
    Où est ce que je peux le récupérer?
    c'est pas parce que ça n'apparait pas dans le Wizzard que ça n'existe pas.
    un peu de recherche dans la MSDN, et tu serais tombé sur OnWindowPosChanging() ...

    utilise plutot WM_MOVING, donc OnMoving() . ça sera bcp plus simple

    tu as un LPRECT en paramètre à la fonction.
    tu modifies directement ce RECT, suivant tes contraintes (donc je ne veux pas voir de SetWindowPos() dans la fonction)

    exemple:

    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
     
    void CMaWnd::OnMoving(UINT nSide,LPRECT pRect)
    {
      LONG screenwidth=GetSystemMetrics(SM_CXSCREEN);
      LONG screenheight=GetSystemMetrics(SM_CYSCREEN);
     
      LONG dx=0,dy=0;
     
      if (pRect->right>screenwidth)
        dx=screenwidth-pRect->right;
     
      if (pRect->left<0)
        dx=-pRect->left;
     
      if (pRect->bottom>screenheight)
        dy=screenheight-pRect->bottom;
     
      if (pRect->top<0)
        dy=-pRect->top;
     
      pRect->left+=dx;
      pRect->top+=dy;
      pRect->right+=dx;
      pRect->bottom+=dy;
    }
    A essayer ...

    @+

  6. #6
    Membre averti
    Inscrit en
    Février 2008
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 30
    Par défaut
    Merci beaucoup...
    oui c'est vrai, je devrais faire plus de recherche sur msdn ; là j'étais en speed sur la fin d'un projet
    dorénavant je ferais + gaffe et j'essaierai d'aider lorsque mes compétences seront suffisantes
    encore merci à tous

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/03/2013, 10h03
  2. Empêcher l'application de sortir de l'écran
    Par cyr42 dans le forum PyQt
    Réponses: 3
    Dernier message: 26/06/2012, 13h41
  3. Centré constamment sans sortir de l'écran
    Par vulgate dans le forum Mise en page CSS
    Réponses: 7
    Dernier message: 07/09/2008, 13h28
  4. Empecher de sortir de l'écran ?
    Par lolyest dans le forum Windows Forms
    Réponses: 31
    Dernier message: 12/08/2008, 18h10
  5. Réponses: 9
    Dernier message: 29/11/2007, 19h37

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