Supprimer barre de Titre sur MDI Form

bmwz3tds Messages postés 11 Date d'inscription jeudi 20 novembre 2003 Statut Membre Dernière intervention 11 mars 2013 - 12 janv. 2006 à 11:01
Flocreate Messages postés 300 Date d'inscription lundi 17 juillet 2006 Statut Membre Dernière intervention 27 mai 2012 - 10 sept. 2010 à 14:23
Bonjour à tous.

J'utilise une Form MDI. Et je souhaiterais enlever la barre de titre de ma Form. En cherchant par moi meme sur le site, j'ai trouvé comment "enlever" le bouton Min et Max de la barre de titre, comment grisé le bouton Fermer, et comment vérouillé le Déplacer/Redimensionner, tout ça grace à des API ( au passage merci Dark Sidious )

Le probleme est que la barre de titre reste...

Quelqu'un aurait il une solution pour supprimer complètement la barre de titre de ma MDI Form ?

Pour rappel :
Les propriétés BorderStyle et ControlBox n'existent pas pour les MDI Form...

Mercià ceux qui pourront m'aiguiller un peu...

8 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
12 janv. 2006 à 11:47
Salut,

Content de voir que je t'ai été utile ;)

pour les feuille MDI, la seule solution que je connait est de "découper" la feuille en utilisant des régions pour ne pas afficher la barre de titre (je sais, c'est bourrin, mais je vois pas d'autres solutions !).

Il te suffit donc de faire une région rectangulaire (fonction de l'API CreateRectRgn) de la taille de ta fenêtre, mais dont la position commence à la hauteur de la barre de titre (regarde la fonction de l'API GetSystemMetrics pour récupèrer cà) puis de l'appliquer à la fenêtre (fonction de l'API SetWindowRgn).

Pour plus d'info sur les regions, je peux te conseiller d'aller voir mes sources nommées Horloge Systeme et Découpage rapide de form.

_____________________________________________________________________
0
fduchamp Messages postés 13 Date d'inscription jeudi 27 mars 2003 Statut Membre Dernière intervention 10 avril 2006
12 janv. 2006 à 14:05
Bonjour,

dans les proprietes de la form tu as un attribut FormBorderStyle (ou a peu pres ca)et dedans tu as une liste deroulante avec des valeurs du genre FixedSingle,Fixed3D...
Si tu choisi None la barre de titre disparaitra ainsi que le contour de la fenetre. Essai de voir a ce niveau si cela te conviens.
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
12 janv. 2006 à 14:16
Pas pour les feuille mdi fduchamp !

_____________________________________________________________________
0
adamo901 Messages postés 139 Date d'inscription mardi 18 janvier 2005 Statut Membre Dernière intervention 8 décembre 2008
10 avril 2006 à 13:45
Voilà, J'ai retrouvé une source interessante sur le sujet :

Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
'
Private Const WS_CAPTION = &HC00000
Private Const GWL_STYLE = (-16)
Private Sub Command1_Click()
'*** Cache la barre de Titre (caption) ***
'***
'***


Dim RetV As Long
'
RetV = GetWindowLong(Me.hwnd, GWL_STYLE)
RetV = RetV And Not WS_CAPTION
SetWindowLong Me.hwnd, GWL_STYLE, RetV
'
'*** Pour que l'effet prenne cours , il faut
'*** redimensionner la feuille.
Me.Width = Me.Width + Screen.TwipsPerPixelX
End Sub


Private Sub Command2_Click()
Unload Me
End Sub


Private Sub Command3_Click()
'*** Ceci suffit pour faire réapparaitre
'*** la barre de titre (caption)
'***
Me.Caption = "Test"
End Sub


Elle marche très bien avec les MDI.
Seulement, je cherche à cacher difinitivement les bouttons ( Réduire, Restaurer et Fermer). Est ce que vous en avez une idée.

A +
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
threadom Messages postés 101 Date d'inscription mardi 8 avril 2003 Statut Membre Dernière intervention 1 novembre 2007
1 nov. 2007 à 00:44
Bonsoir,

Je remercie darksidious d'avoir posé la question et adamo901 d'y avoir répondu.
Cependant en utilisant cette méthode il me reste toujours les contours de la fenêtre pour redimensionnement... est ce normal ?
Y'a t'il un moyen de retirer cela ?

Mon code actuel :

mdiMain :

Private Sub MDIForm_Load()
Dim aWindow As New clsWindow

    aWindow.Init Me
    aWindow.SetPos HWND_BOTTOM, SWP_NOSIZE Or SWP_NOMOVE Or SWP_NOACTIVATE
    aWindow.SetTransparent RGB(0, 0, 0)
    aWindow.HideTitle
   
    Me.Left = 0
    Me.Top = 0
    Me.Width = Screen.Width
    Me.Height = Screen.Height

Set aWindow = Nothing
End Sub

clsWindow :

Option Explicit

Private M_aForm As Form

Public Sub Init(ByRef aForm As Form)
    Set M_aForm = aForm
End Sub

Public Sub SetPos(ByVal hWndInsertAfter As Long, ByVal wFlags As Long)
    Call SetWindowPos(M_aForm.hwnd, hWndInsertAfter, 0, 0, 0, 0, wFlags)
End Sub

Public Sub SetTransparent(ByVal lngRGB As Long)
Dim lngAttrib As Long

    M_aForm.BackColor = lngRGB
    lngAttrib = GetWindowLong(M_aForm.hwnd, -20)
    SetWindowLong M_aForm.hwnd, -20, lngAttrib Or &H80000
    SetLayeredWindowAttributes M_aForm.hwnd, lngRGB, 0, 1
End Sub

Public Sub HideTitle()
Dim lngAttrib As Long

    lngAttrib = GetWindowLong(M_aForm.hwnd, GWL_STYLE)
    lngAttrib = lngAttrib And Not WS_CAPTION
    SetWindowLong M_aForm.hwnd, GWL_STYLE, lngAttrib
End Sub

Cordialement.
Eric
0
threadom Messages postés 101 Date d'inscription mardi 8 avril 2003 Statut Membre Dernière intervention 1 novembre 2007
1 nov. 2007 à 00:56
Oula il est vraiment trop tard ... tellement l'habitude de voir darksidious partout que je le vois même poser les questions a cette heure ci ... donc merci a bmwz3tds pour la question ^^
0
threadom Messages postés 101 Date d'inscription mardi 8 avril 2003 Statut Membre Dernière intervention 1 novembre 2007
1 nov. 2007 à 01:03
Réponse a moi même ... cette fois je vais me coucher et désolé....

Public Sub HideTitle()
Dim lngAttrib As Long

    lngAttrib = GetWindowLong(M_aForm.hwnd, GWL_STYLE)
    lngAttrib = lngAttrib And WS_BORDER And Not WS_CAPTION
    SetWindowLong M_aForm.hwnd, GWL_STYLE, lngAttrib
End Sub

avec

Public Const WS_BORDER = &H800000
0
Flocreate Messages postés 300 Date d'inscription lundi 17 juillet 2006 Statut Membre Dernière intervention 27 mai 2012 3
10 sept. 2010 à 14:23
Bonjour,
Je me permet de poser ma question à la suite de la votre car elles se rejoignent.

La solution donnée permet de cacher la barre de titre de la feuille mère.
Y Aurrait-il moyen d'utiliser la même solution pour cacher la bare (grise) présente lorsque les enfants sont maximizés ?
0
Rejoignez-nous