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

Windows Forms Discussion :

Avoir les mêms bordures de fenêtres que Windows Live Messenger


Sujet :

Windows Forms

  1. #1
    Membre régulier
    Inscrit en
    Avril 2002
    Messages
    190
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 190
    Points : 97
    Points
    97
    Par défaut Avoir les mêms bordures de fenêtres que Windows Live Messenger
    Bonjour,

    Je voudrais créer des fenêtres ayant les mêmes bordures de fenêtres que celle de Windows Live Messenger.

    Si ma question est trop spécifique vous pouvez toujours m'aiguiller vers la customisation de fenêtre.

    Merci.

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 26
    Points : 19
    Points
    19
    Par défaut
    Je peux me tromper mais j'ai surtout l'impression que les bordures de la fenêtre LIVE Messenger sont cachés par défaut au profit d'un PAINT un peu bleuté sur la fenêtre...

    Ce qui est confirmé par l'option Afficher la barre de menus que tu trouveras dans le petit bouton avec la flèche vers le bas.

    Donc je parierais plus sur du dessin sur evenement PAINT à l'intérieur de la zone cliente

  3. #3
    Membre régulier
    Inscrit en
    Avril 2002
    Messages
    190
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 190
    Points : 97
    Points
    97
    Par défaut
    intéressant, mais comment fait-on pour cacher les bordures sans cacher la barre de titres?

  4. #4
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 194
    Points
    5 194
    Par défaut
    tu pourrais essayer un truc du genre :

    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
     
     
    Pour masquer :
     
    FormBorderStyle = FormBorderStyle.None;
                int x = Location.X + SystemInformation.BorderSize.Width + 2;
                int y = Location.Y + SystemInformation.CaptionHeight + SystemInformation.BorderSize.Height + 3;
                Location = new Point(x, y);
     
    et pour afficher :
     
    FormBorderStyle = FormBorderStyle.Sizable;
                int x = Location.X - SystemInformation.BorderSize.Width - 2;
                int y = Location.Y - (SystemInformation.CaptionHeight + SystemInformation.BorderSize.Height + 3);
                Location = new Point(x, y);
    Ca le fait bien sauf qu'au niveau du redraw.. ca "flick" un peu

  5. #5
    Membre régulier
    Inscrit en
    Avril 2002
    Messages
    190
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 190
    Points : 97
    Points
    97
    Par défaut
    j'essaierai, merci!

  6. #6
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 194
    Points
    5 194
    Par défaut
    un petit complément


    Pour "masquer la barre de caption" :

    je fais ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    LockWindowUpdate(this.Handle);
                FormBorderStyle = FormBorderStyle.None;
                int x = Location.X + SystemInformation.BorderSize.Width + 2;
                int y = Location.Y + SystemInformation.CaptionHeight + SystemInformation.BorderSize.Height + 3;
                Location = new Point(x, y);
                LockWindowUpdate(IntPtr.Zero);
    et pour la remettre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    LockWindowUpdate(this.Handle);            
                int x = Location.X - SystemInformation.BorderSize.Width - 2;
                int y = Location.Y - (SystemInformation.CaptionHeight + SystemInformation.BorderSize.Height + 3);
                Location = new Point(x, y);
                FormBorderStyle = FormBorderStyle.Sizable;
                LockWindowUpdate(IntPtr.Zero);
    Evidemment, il faudrait juste rajouter le fait de "refuser" l'activation
    si on est déja en mode "no caption".. (histoire d'éviter d'avoir sa fenetre
    qui descend

    Heureux ?

    The Monz, TOulouse

  7. #7
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 194
    Points
    5 194
    Par défaut
    En mettant une checbox de "basculement", ca ferait cela :

    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
            private void checkBox1_CheckedChanged(object sender, EventArgs e)
            {
                if (FormBorderStyle == FormBorderStyle.None)
                {
                    LockWindowUpdate(this.Handle);
                    int x = Location.X - SystemInformation.BorderSize.Width - 2;
                    int y = Location.Y - (SystemInformation.CaptionHeight + SystemInformation.BorderSize.Height + 3);
                    Location = new Point(x, y);
                    FormBorderStyle = FormBorderStyle.Sizable;
                    LockWindowUpdate(IntPtr.Zero);
                }
                else if (FormBorderStyle == FormBorderStyle.Sizable)
                {
                    LockWindowUpdate(this.Handle);
                    FormBorderStyle = FormBorderStyle.None;
                    int x = Location.X + SystemInformation.BorderSize.Width + 2;
                    int y = Location.Y + SystemInformation.CaptionHeight + SystemInformation.BorderSize.Height + 3;
                    Location = new Point(x, y);
                    LockWindowUpdate(IntPtr.Zero);
                }
            }
    Allez, promis, j'arrete là

    The Monz, Toulouse

  8. #8
    Membre régulier
    Inscrit en
    Avril 2002
    Messages
    190
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 190
    Points : 97
    Points
    97
    Par défaut
    Vraiment merci!
    Promis je ferais des retours!

  9. #9
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 194
    Points
    5 194
    Par défaut
    derniere précision...

    SI tu as un menu dans ta form, il faut penser à le cacher.. (genre menuStrip1.Visible = false)

    et à changer la taille de ta fenetre... pour enlever la "hauteur du menu"

    Ce genre d'info sont souvent disponible dans la classe SystemInformation...

    (une vraie "mine d'or" cette classe d'ailleurs

    The Monz, Toulouse

  10. #10
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 194
    Points
    5 194
    Par défaut
    Bonjour, un petit update de ce thread...

    J'ai reflechi un peu plus longuement au problème hier soir (environ 3 minutes pour etre précis) et j'ai réussi à faire quelque chose de similaire à msn..

    La technique, simple :

    Utiliser 2 fenetres.

    La premiere sans bordure ni caption est la fenetre msn bleue sans les menus ni la barre bleue (barre de caption Non Client Area pour les pros )
    Sur cette fenetre, je gere le deplacement via l'appui sur la souris

    Puis une deuxième fenetre qui est affichée sur demande (genre touche "alt"
    ou un bouton).. et au moment de l'afficher (enfin, juste avant de l'afficher)
    je "transfere" la fenetre MSN dans la liste des controles de la fenetre
    Mere (celle qui est autour de la fenetre msn)... Bien sur, je positionne
    le TopLEvel à false pour que la fenetre msn est le droit d'etre integrée dans
    un controle.... Bien sur, je positionne le Location de la fenetre mere de façon à ce que la fenetre msn ne bouge pas (grosso modo, la location de la fenetre mere est "au dessus" et "à gauche" de la fenetre msn... et basta
    le tour est joué...

    Evidemment, j'utilise le processus reciproque pour cacher la fenetre mere...

    Ci joint le code que j'ai mis au point hier soir rapidemment

    C'est artisanal mais cela montre bien qu'il s'agit "vraissemblablement" de la technique de microsoft

    Astuce : lors que j'affichais la fenetre mere, il fallait que j'appuie 2 fois sur ma touche "alt" pour que celle ci soit recuperer par la fenetre mere... donc, j'ai rajouté un SendKeys("a"), (la touche choisie est arbitraire bien sur) pour palier
    à ce problème...

    Cela dit, si quelqu'un sait la raison de ce comportement qui m'a obligé à une "telle ruse".. j'en serais ravi

    Allez, encore un cadeau

    The Monz, Toulouse
    Fichiers attachés Fichiers attachés

  11. #11
    Membre régulier
    Inscrit en
    Avril 2002
    Messages
    190
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 190
    Points : 97
    Points
    97
    Par défaut
    Vraiment ingénieux, merci!

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

Discussions similaires

  1. Probleme d'ajout de contact sur Windows Live Messenger
    Par maadadi dans le forum Messagerie instantanée
    Réponses: 6
    Dernier message: 20/09/2009, 10h08
  2. [windows live messenger] disparition ascenseur de fenêtre
    Par mouton_afteux dans le forum Messagerie instantanée
    Réponses: 0
    Dernier message: 31/05/2009, 01h14
  3. [Windows Live Messenger] Plantage du routeur
    Par Machjaghjolu dans le forum Windows XP
    Réponses: 1
    Dernier message: 06/07/2006, 11h10
  4. [Windows Live Messenger] Impossible de lancer l'installation.
    Par damien99 dans le forum Messagerie instantanée
    Réponses: 7
    Dernier message: 29/06/2006, 15h32
  5. [Windows Live Messenger]question sur les messages hors connexion
    Par jmclej dans le forum Messagerie instantanée
    Réponses: 9
    Dernier message: 21/06/2006, 14h34

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