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

C++/CLI Discussion :

[C++/CLI] Maintenir une form fixe à l'écran


Sujet :

C++/CLI

Vue hybride

fpinter [C++/CLI] Maintenir une form... 25/07/2006, 10h10
nico-pyright(c) l'astuce la plus simple,... 25/07/2006, 10h25
fpinter Bonjour Nico-pyright(c) ... 25/07/2006, 10h34
The_badger_man Windows envoie le message... 25/07/2006, 11h29
fpinter Bonjour "the badger man" ... 25/07/2006, 19h25
Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 35
    Par défaut [C++/CLI] Maintenir une form fixe à l'écran
    Bonjour à tous.

    Je travaille avec visual c++2005 et je voudrais savoir comment faire pour qu'on ne puisse pas déplacer une form à l'écran.
    J'ai déjà joué sur les "border styles" qui évite d'agrandir la form, j'ai aussi modifié la propriété "locked" de false à true et inversement sans succès.
    Quelq'un connaît t'il l'astuce ?

    Merci par avance.

    Francis

  2. #2
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par défaut
    l'astuce la plus simple, c'est d'enlever les bordures

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 35
    Par défaut
    Bonjour Nico-pyright(c)

    J'avoue que c'est radical et efficace. Mais sur l'aspect design c'est moins "top".

    Je sais qu'en VB (VB6) il y a la propiété "MOVEABLE" qu'on passe de true à false et qui fonctionne quelle que soit la bordure de la fenêtre. Il y a t'il quelque chose de similaire en VC++ (même s'il faut écrire du code) ?

  4. #4
    Rédacteur
    Avatar de The_badger_man
    Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2005
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 745
    Par défaut
    Windows envoie le message NCHITTEST à la fenetre pour déterminer où se trouve le curseur de la souris. En traitant ce message, l'application peut tromper Windows en lui faisant croire par exemple que le curseur ne se trouve pas sur la barre de titre mais dans la zone client. Ainsi lorsqu'on voudra déplacer la fenetre en cliquant avec la souris sur la barre titre, rien ne se passera car Windows croira que la souris se trouve au dessus de l'air client.
    Pour obtenir ce comportement il suffit d'écrire la procédure suivante (en C#) dans le code de la Form concernée :
    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
     
    protected override void WndProc(ref Message m)
            {
                switch (m.Msg)
                {
                    case 0x84:    //message WM_NCHITTEST
                        base.WndProc(ref m);
                        if (m.Result == (IntPtr)2)        // 2 =  barre de titre
                                m.Result = (IntPtr)0;     //0 = fond de la fenetre
                        break;
                    default:
                        base.WndProc(ref m);
                        break;
                }        
            }
    Les règles du forum
    Le trio magique : FAQ + Cours + fonction rechercher
    Mes articles
    Pas de questions par messages privés svp

    Software is never finished, only abandoned.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 35
    Par défaut
    Bonjour "the badger man"

    Quand tu écrit que c'est du code C# fonctionne t'il aussi en C++ ?

  6. #6
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par défaut
    bien sur, il faut juste le traduire

    c'est pas trop compliqué à adapter

    sinon, une autre solution serait d'intercepter WM_SYSCOMMAND et SC_MOVE

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

Discussions similaires

  1. Ajuster des composants dans une Form en plein écran
    Par jalalnet dans le forum Windows Forms
    Réponses: 2
    Dernier message: 06/06/2011, 10h15
  2. Cherche comment mettre une forme en plein écran
    Par lou_delphdev dans le forum Débuter
    Réponses: 10
    Dernier message: 17/04/2011, 23h28
  3. centrer une form sur l'écran
    Par diam's dans le forum Delphi
    Réponses: 10
    Dernier message: 31/07/2006, 15h52
  4. dimension centimètrique d'une forme, d'un écran
    Par Patrice Henrio dans le forum Graphisme
    Réponses: 4
    Dernier message: 23/02/2006, 18h38

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