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

VB.NET Discussion :

Forme Windows sans barre de titre


Sujet :

VB.NET

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 106
    Points : 67
    Points
    67
    Par défaut Forme Windows sans barre de titre
    Bonjour à tous,

    Connaissez-vous une méthode (avec une dll ou autre chose) pour enlever la
    barre de titre en gardant les boutons Minimiser, Agrandir et Fermé?

    Je voudrais être capable d'y insérer des objets (ex.: des onglets) comme le
    font les navigateurs web.

    Merci.




  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    C'est pas évident du tout...

    Cet article explique pas mal de choses, il faut utiliser des API Windows natives. En tous cas tu ne peux pas le faire directement en VB...

    http://msdn.microsoft.com/en-us/library/bb688195.aspx

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    319
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 319
    Points : 414
    Points
    414
    Par défaut
    Bonjour

    En VB c'est la misère a faire, mais si tu as la possibilité c'est très facile a faire en WPF!

    Nasty
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'TODO : trouver une signature mieux que celle la

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par nasty Voir le message
    En VB c'est la misère a faire, mais si tu as la possibilité c'est très facile a faire en WPF!
    Non, c'est pas plus facile en WPF... à la limite, ce serait même plutôt plus compliqué, parce que WPF ne repose pas sur Win32, il y a donc un peu plus de plomberie pour manipuler directement la fenêtre qui contient l'application et intercepter les messages qu'elle reçoit

    Et ça n'a pas de sens d'opposer VB à WPF : VB est un langage, WPF est une technologie d'interface graphique... tu peux très bien faire du WPF en VB. Je suppose que tu voulais parler de Windows Forms

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    319
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 319
    Points : 414
    Points
    414
    Par défaut
    Oui je comparais windows form au form proposé par WPF desolé pour l'erreur

    Et en WPF, lors de la création de la forme il est possible de définir le contour grâce a WindowsStyle (je crois que c'est ToolWindows qui permet d'avoir une fenetre avec juste max/min/close)

    Nasty
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'TODO : trouver une signature mieux que celle la

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par nasty Voir le message
    Et en WPF, lors de la création de la forme il est possible de définir le contour grâce a WindowsStyle (je crois que c'est ToolWindows qui permet d'avoir une fenetre avec juste max/min/close)
    ToolWindow ça fait une barre de titre plus petite avec juste un bouton Close, et ça permet pas de dessiner dans la barre de titre... Pour ça il faut forcément passer par l'API du DWM

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    319
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 319
    Points : 414
    Points
    414
    Par défaut
    Ah ok

    Merci pour le cours.

    Nasty
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'TODO : trouver une signature mieux que celle la

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 106
    Points : 67
    Points
    67
    Par défaut
    Bonjour et merci pour vos réponses.

    J'ai essayer de faire fonctionner le code mais je bloque à
    Removing the Standard Frame
    car le code est en C# en moi je suis en VB.NET et aussi car je ne suis pas sûre de tout comprendre..

    Pourriez-vous m'aider?

    Merci beaucoup.

  9. #9
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par Eric_M Voir le message
    car le code est en C# en moi je suis en VB.NET et aussi car je ne suis pas sûre de tout comprendre..
    Le code n'est pas en C#, il est en C... C'est des API natives de Windows, pour les appeler en .NET il faut utiliser l'interop (P/Invoke).

    Comme je le disais, c'est pas évident du tout, surtout si tu débutes... Il faut comprendre le langage C et connaître à peu près le fonctionnement de Win32 et GDI+. Je ne peux pas vraiment t'expliquer tout ça, je ne saurais même pas par où commencer... il y a assez à dire pour faire un bouquin

    Le plus simple c'est de chercher des exemples simples et d'essayer de comprendre petit à petit comment ça fonctionne.

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 106
    Points : 67
    Points
    67
    Par défaut
    Citation Envoyé par tomlev Voir le message
    Le code n'est pas en C#, il est en C... C'est des API natives de Windows
    Ouais, tu vois comment je m'y connais en ce qui est des autres languages que VB...

    En tout cas, merci quand même tomlev. Je vais essayer des choses et si je trouve de quoi, je vous en reparle.

    Merci

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 106
    Points : 67
    Points
    67
    Par défaut
    Bonjour,

    Après avoir recherché sur plusieurs sites, j'en suis venu à ces ligne de code VB:

    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    Imports System
    Imports System.Diagnostics
    Imports System.Runtime.InteropServices
    Imports System.ComponentModel
     
    Public Class Form1
        <DllImport("User32.dll")> Public Shared Function _
          MessageBox(ByVal hWnd As Integer, _
          ByVal txt As String, ByVal caption As String, _
          ByVal typ As Integer) As Integer
        End Function
     
        '  Public Shared GetWindowRect As Void = {rcClient}
        '   Public Shared SetWindowPos As Void = {rcClient.left, rcClient.top, RECTWIDTH(), RECTHEIGHT()}
        '  Public Shared fCallDWP As Boolean = True
        '  Public Shared lRet As Integer = 0
     
        Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Integer
        Private Declare Function GetWindowRect Lib "user32" Alias "GetWindowRect" (ByVal hwnd As Integer, ByVal lpRect As RECT) As Integer
     
        <DllImport("user32.dll", SetLastError:=True)> _
    Private Shared Function SetWindowPos(ByVal hWnd As IntPtr, ByVal hWndInsertAfter As IntPtr, ByVal X As Integer, ByVal Y As Integer, ByVal cx As Integer, ByVal cy As Integer, ByVal uFlags As SetWindowPosFlags) As Boolean
        End Function
        <Serializable(), Flags()> _
     Friend Enum SetWindowPosFlags
            NoSize = &H1
            NoMove = &H2
            NoZOrder = &H4
            NoRedraw = &H8
            NoActivate = &H10
            FrameChanged = &H20
            ' The frame changed: send WM_NCCALCSIZE 
            ShowWindow = &H40
            HideWindow = &H80
            NoCopyBits = &H100
            NoOwnerZOrder = &H200
            ' Don't do owner Z ordering 
            NoSendChanging = &H400
            ' Don't send WM_WINDOWPOSCHANGING 
     
            DeferErase = &H2000
            AsyncWindowPos = &H4000
        End Enum
     
     
     
        Structure RECT
            Public Left As Integer
            Public Top As Integer
            Public Right As Integer
            Public Bottom As Integer
        End Structure
     
     
     
     
        Public Sub New()
            InitializeComponent()
     
     
     
            Dim rcClient As RECT
            GetWindowRect(Me.Handle, rcClient)
     
            ' Inform the application of the frame change.
            SetWindowPos(Me.Handle, Nothing, rcClient.Left, rcClient.Top, rcClient.Right, rcClient.Bottom, _
             SetWindowPosFlags.FrameChanged)
     
        End Sub
     
     
     
     
    End Class
    Lors de l'ouverture, la fenêtre s'affiche en petit en haut à gauche.

    Je croix que c'est le Dim rcClient As RECT qui vaut rien (ou 0).

    Connaissez-vous les valeurs qu'il faut mettre pour pouvoir enlever le frame standard?

Discussions similaires

  1. [Débutant] Bordure d'un Form sans barre de titre
    Par noftal dans le forum VB.NET
    Réponses: 4
    Dernier message: 15/01/2014, 17h29
  2. window.open sans barre de titre
    Par lesultan2007 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 06/05/2009, 13h13
  3. Déplacer une Form sans barre de titre
    Par stigma dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 16/02/2006, 13h45
  4. Form en relief sans barre de titre
    Par Hy0ga dans le forum Langage
    Réponses: 15
    Dernier message: 02/08/2005, 10h59
  5. [FORM] Fenêtre Encadrée sans Barre de Titre
    Par princesse dans le forum C++Builder
    Réponses: 2
    Dernier message: 02/01/2004, 12h21

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