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

  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

  7. #7
    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
    Il y a t'il un crack qui pourrait me traduire en VC++ 2005.NET le code en C# ci dessus ?

    Merci par avance

  8. #8
    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
    qu'est-ce que tu n'arrives pas � traduire ?

  9. #9
    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

    En fait lorsque j'�cris le code ci-dessous :
    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;
                }        
            }
    J'ai �a en erreur � la compilation:
    d:\pinter\projets\r&d\contacts\contacts\Form1.h(193) : error C2144: erreur de syntaxe*: 'void' doit �tre pr�c�d� de ';'
    1>d:\pinter\projets\r&d\contacts\contacts\Form1.h(193) : error C4430: sp�cificateur de type manquant - int est pris en compte par d�faut. Remarque*: C++ ne prend pas en charge int par d�faut
    1>d:\pinter\projets\r&d\contacts\contacts\Form1.h(193) : error C2061: erreur de syntaxe*: identificateur 'ref'
    1>d:\pinter\projets\r&d\contacts\contacts\Form1.h(195) : error C2065: 'm'*: identificateur non d�clar�
    1>d:\pinter\projets\r&d\contacts\contacts\Form1.h(195) : error C2228: la partie gauche de '.Msg' doit avoir un class/struct/union
    1> le type est ''unknown-type''
    1>d:\pinter\projets\r&d\contacts\contacts\Form1.h(198) : error C2065: 'base'*: identificateur non d�clar�
    1>d:\pinter\projets\r&d\contacts\contacts\Form1.h(198) : error C2228: la partie gauche de '.WndProc' doit avoir un class/struct/union
    1> le type est ''unknown-type''
    1>d:\pinter\projets\r&d\contacts\contacts\Form1.h(198) : error C2065: 'ref'*: identificateur non d�clar�
    1>d:\pinter\projets\r&d\contacts\contacts\Form1.h(198) : error C2146: erreur de syntaxe*: absence de ')' avant l'identificateur 'm'
    1>d:\pinter\projets\r&d\contacts\contacts\Form1.h(198) : error C2059: erreur de syntaxe*: ')'
    1>d:\pinter\projets\r&d\contacts\contacts\Form1.h(199) : error C2228: la partie gauche de '.Result' doit avoir un class/struct/union
    1> le type est ''unknown-type''
    1>d:\pinter\projets\r&d\contacts\contacts\Form1.h(200) : error C2228: la partie gauche de '.Result' doit avoir un class/struct/union
    1> le type est ''unknown-type''
    1>d:\pinter\projets\r&d\contacts\contacts\Form1.h(203) : error C2228: la partie gauche de '.WndProc' doit avoir un class/struct/union
    1> le type est ''unknown-type''
    1>d:\pinter\projets\r&d\contacts\contacts\Form1.h(203) : error C2146: erreur de syntaxe*: absence de ')' avant l'identificateur 'm'
    1>d:\pinter\projets\r&d\contacts\contacts\Form1.h(203) : error C2059: erreur de syntaxe*: ')'
    Je ne sais pas si c'est assez clair pour toi

    merci de faire attention aux balises / nico-pyright(c) mod�rateur visual c++

  10. #10
    Membre Expert Avatar de Mose
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 143
    D�tails du profil
    Informations personnelles :
    �ge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 143
    Par d�faut
    Citation Envoy� par fpinter
    Je ne sais pas si c'est assez clair pour toi
    Ce qui est clair c'est que tu as besoin de r�viser la syntaxe du langage C++ (sans vouloir t'offenser).

    * Enl�ve d�j� les ':' apr�s ton 'protected', �a devrait soulager ton compilo.
    * 'ref' c'est du C#, en C++ pour les passage par r�f�rence on utilise des pointeurs.
    * Du coup il faut revoir toute la suite, car la syntaxe avec les pointeurs, c'est pas la m�me.

  11. #11
    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 Mose

    Tu ne m'offense pas du tout et tu as tout � fait raison pour la r�vision. Pour en rajouter encore plus, je ne connais pas du tout le c# et je suis en train d'apprendre (d�butant) le visual C++2005.NET.
    Pour ce qui est des ":" apr�s le protect je les ai rajout�s car le "compilo" me les demandes. (alors, comme pour le moment je suis encore un "nul", je les ai mis)
    Je sais que j'ai tout � apprendre, mais parfois un bon exemple de r�solution pour un probl�me donn�, aide � aborder les solutions pour d'autres soucis. En ce qui me concerne personnellement j'arrive mieux � comprendre � travers des exemples qu'avec des cours ultra th�oriques. (Personne n'est parfait)
    En fait, je voulais juste savoir si quelqu'un pouvait me donner le bout de code en en m'expliquant comment l'impl�menter en VC++.NET 2005 qui permettait de maintenir une form (avec un border) fixe � l'�cran (ind�pla�able avec la souris)

    Encore merci pour l'int�r�t que vous m'accordez.

  12. #12
    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
    bon, la traduction c'est ca
    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: virtual void WndProc(Message %m) override 
    {
            switch (m.Msg)
            {
                    case 0x84:    //message WM_NCHITTEST
                            Form::WndProc(m);
                            if (m.Result == (IntPtr)2)        // 2 =  barre de titre
                                    m.Result = (IntPtr)0;     //0 = fond de la fenetre
                            break;
                    default:
                            Form::WndProc( m );
                            break;
            }        
    }

  13. #13
    Membre Expert Avatar de Mose
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 143
    D�tails du profil
    Informations personnelles :
    �ge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 143
    Par d�faut
    Citation Envoy� par fpinter
    Bonjour Mose

    Tu ne m'offense pas du tout et tu as tout � fait raison pour la r�vision. Pour en rajouter encore plus, je ne connais pas du tout le c# et je suis en train d'apprendre (d�butant) le visual C++2005.NET.
    Pour ce qui est des ":" apr�s le protect je les ai rajout�s car le "compilo" me les demandes. (alors, comme pour le moment je suis encore un "nul", je les ai mis)
    Je sais que j'ai tout � apprendre, mais parfois un bon exemple de r�solution pour un probl�me donn�, aide � aborder les solutions pour d'autres soucis. En ce qui me concerne personnellement j'arrive mieux � comprendre � travers des exemples qu'avec des cours ultra th�oriques. (Personne n'est parfait)
    En fait, je voulais juste savoir si quelqu'un pouvait me donner le bout de code en en m'expliquant comment l'impl�menter en VC++.NET 2005 qui permettait de maintenir une form (avec un border) fixe � l'�cran (ind�pla�able avec la souris)

    Encore merci pour l'int�r�t que vous m'accordez.
    Bon, d�sol� pour le ':', je ne connais que le C++ "normal" et pas le C++ manag�. (visiblement, je me suis plant�).
    Pour les passage par r�f�rence, effectivement le '%' est mieux que les pointeurs.
    Dsl, je me tais, �a fait trop longtemps que j'ai pas touch� � C++

  14. #14
    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
    Mose, Il n'y a pas de probl�me !!!

    C'est d�j� un honneur pour moi quand les gens du forum me r�pondent, et je te remercie de tes avis et conseils.

  15. #15
    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

    Merci pour la solution je savais tr�s bien que pour toi cela �tait un jeu d'enfant.

    Encore grands bravos et grands mercis

+ 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