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

Visual C++ Discussion :

Interdire déplacement d'une fenetre


Sujet :

Visual C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 54
    Par défaut Interdire déplacement d'une fenetre
    Bonjour,

    Je voudrais vérouiller une fenetre maximizé en ayant également les boutons minimize Box et maximize Box supprimé.

    Si je suis maximisé avec le bouton maximise box non présent, je peux déplacer ma fenetre avec la souris.

    Si je laisse le bouton maximise Box et que je suis maximisé, la fenetre est vérouillé (pas de déplacement possible).

    Comment faire pour que dans le premier ma fenetre soit vérouillé (ne pas autoriser les dépalcement) ?

    Merci de votre aide.

  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    salut,
    essaye d'intervenir sur le message WM_WINDOWPOSCHANGING
    comme dans ce post de la faq: http://c.developpez.com/faq/vc/?page...dWnd#MDINoMove

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 54
    Par défaut
    Je veux l'appliquer à une CDialog.

    J'arrive à intercepter un WM_WINDOWPOSCHANGING par WindowProc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    LRESULT CProductionDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) 
    {
    // TODO: Add your specialized code here and/or call the base class
        switch(message)
        {
            case WM_WINDOWPOSCHANGING :
                           s.Format("message : %d, wParam : %d, lParam : %d\n",message,LOWORD (wParam),LOWORD (lParam));
            TRACE(s);
     
    ...
    la prochaine fois pense à mettre la balise de code, Merci Farcape

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 54
    Par défaut
    Wparam vaut 0, lparam vaut e19C, je ne sais pas l'interpreter et quoi faire pour interdire le mouvement.

  5. #5
    Membre éprouvé
    Inscrit en
    Avril 2004
    Messages
    122
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 122
    Par défaut
    Salut,
    lparam est un pointeur sur une structure de type WINDOWPOS. Récupère cette structure et modifie flags en y ajoutant SWP_NOMOVE, ceci empêchera ta fenêtre de bouger.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 54
    Par défaut Résolu
    Merci pour vos aides.

    Pour que cela fonctionne correctement, j'ai ajouté un flag (pas glop) pour que le blocage de ma fenetre ne se fasse qu'après mon OnInitDialog qui positionne ma fenetre maximisé (ShowWindow(SW_SHOWMAXIMIZED)).

    Mon code pour bloquer la fenetre :

    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
     
    LRESULT CProductionDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) 
    {
    	// TODO: Add your specialized code here and/or call the base class
    	switch(message)
    	{
    		case WM_WINDOWPOSCHANGING :
    			if(m_bInitialised)
    			{
    				WINDOWPOS *pwndpos;
    				pwndpos= (WINDOWPOS *) lParam;
     
    				pwndpos->flags |= SWP_NOMOVE;
     
    				lParam= (LPARAM) pwndpos;
    			}
    			break;
    	}
    	return CDialog::WindowProc(message, wParam, lParam);
    }

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

Discussions similaires

  1. interdire a une fenetre d'etre dans la barre des taches
    Par d'Oursse dans le forum Windows
    Réponses: 3
    Dernier message: 01/10/2007, 18h53
  2. Excel - Interdire le déplacement d'une feuille
    Par JesuhsXVII dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 14/09/2007, 15h24
  3. Réponses: 3
    Dernier message: 25/06/2007, 17h03
  4. [VB6] [Système] Récupérer le contenu d'une fenêtre DOS
    Par Nounours666 dans le forum VB 6 et antérieur
    Réponses: 16
    Dernier message: 18/11/2004, 16h38
  5. gérer les jpg dans une fenetre directdraw???
    Par Anonymous dans le forum DirectX
    Réponses: 1
    Dernier message: 14/06/2002, 13h39

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