Bonjour,

Je souhaite récupérer les dimensions de bordures d'un mdiparent pour l'adapter à la taille d'un form.
Au préalable j'ai essayé d'activer les fonctions Autosize et autosizemode sur le mdiparent, mais ça ne marche pas.


J'utilise donc l'api getsystemmetrics pour voir les dimensions des bordures.

Le problème, c'est que "MDIParent1.ClientSize.Width" ne correspond pas tout à fait à l'espace disponible pour le form, il y a une petite bordure de 2 pixels de large de chaque côté de l'écran qui empiète sur le form et fait apparaître les scrollbar.
Sur l'axe Y l'espace disponible pour le form est réduit par la barre de menu et du statusbar

Quel est le nom de cette bordure et comment trouver sa taille? En fonction des personnalisations de l'apparence windows cette valeur peut changer donc je ne peux pas simplement ajouter 4 pixels à la taille du mdiparent

Voir image ci-dessous:


Voici le code que j'utilise (dans un module):

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
Private Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Integer) As Integer
 
Sub redimmdiform()
 
 
        Dim bordurefenetre_x As Integer
        Dim bordurefenetre_y As Integer
        Dim interieurmdi_x As Integer
        Dim interieurmdi_y As Integer
        Dim exterieurmdi_x As Integer
        Dim exterieurmdi_y As Integer
        Dim barredetitre_y As Integer
        Dim menu_y As Integer
        Dim statusbar_y As Integer
        Dim form1_x As Integer
        Dim form1_y As Integer
 
 
        'Taille Bordure de fenêtre X
        bordurefenetre_x = GetSystemMetrics(7) 'SM_CXFIXEDFRAME
        'Taille Bordure de fenêtre Y
        bordurefenetre_y = GetSystemMetrics(8) 'SM_CYFIXEDFRAME
        'Taille Intérieur mdiparent X
        interieurmdi_x = MDIParent1.ClientSize.Width
        'Taille Intérieur mdiparent Y
        interieurmdi_y = MDIParent1.ClientSize.Height
        'Taille Extérieur mdiparent X
        exterieurmdi_x = MDIParent1.Width
        'Taille Extérieur mdiparent Y
        exterieurmdi_y = MDIParent1.Height
        'Taille barre de titre Y
        barredetitre_y = GetSystemMetrics(4)
        'Taille menu Y
        menu_y = MDIParent1.MenuStrip.Height
        'Taille statusbar Y
        statusbar_y = MDIParent1.StatusStrip.Height
        'Taille form1 X
        form1_x = Form1.Width
        'Taille form1 Y
        form1_y = Form1.Height
 
 
        'Redimensionne le mdiparent pour l'adapter à la taille de form1
        MDIParent1.Width = form1_x + (bordurefenetre_x * 2) 
        MDIParent1.Height = form1_y + (bordurefenetre_y * 2) + barredetitre_y + menu_y + statusbar_y
Merci pour votre aide