(vb6) redimmensionner la 'zone client' d'une form en pixels

Description

-----------------------------------------------------------
ATTENTION :
Cette source est inutile car une solution directe a été suggéré par klok et donné par Post'It, la voici :

MaForm.Width = (300 * Screen.TwipsPerPixelX) + (MaForm.Width - MaForm.ScaleWidth)
MaForm.Height = (300 * Screen.TwipsPerPixelY) + (MaForm.Height - MaForm.ScaleHeight)

Je laisse tout de même cette source, elle pourra peut-être être utile pour la théorie... (sik!)
-----------------------------------------------------------
La 'zone client' d'une form est la zone sans les bords ni la barre de titre, celle ou sont réellement disposer les contrôles.

J'ai réalisé les 2 fonctions 'MetFrmWidthPixels' et 'MetFrmHeightPixels' pour un projet d'éditeur de dialogue pour mirc. ( version 0.13 (en cours de dev) http://isoat.free.fr/Isoat Editeur de dialog mIRC.exe pour ceux que ca interesse)
Dans ces dialog mirc, les dimensions du dialog 'size -1 -1 300 300' (par exemple) représente une form dont la zone client est un carré de 300 pixels.

Je met ces fonctions ici, si elles peuvent aider quelqu'un, tant mieux.

Je dois remercier Mix78 pour sa précieuse source : GetClientHeight, sans laquelle j'aurai été bien coincé ! ( http://www.vbfrance.com/code.aspx?ID=5094 )

Source / Exemple :


Private Type RECT
        Left As Long
        Top As Long
        Right As Long
        Bottom As Long
End Type

'---------------------------------------------------------------------------------------
' APIs pour mesure de la 'zone client' d'une form
'---------------------------------------------------------------------------------------
Const Mutliplicateur = 15.005
Private Declare Function GetClientRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long

'---------------------------------------------------------------------------------------
' Procedure : GetClientHeight
' Date      : 17/11/2002
' Auteur(s) : Mix78 (vbfrance.com)
'---------------------------------------------------------------------------------------
' Donne la hauteur (en twips) d'une form sans les bords ni la barre de titre
'---------------------------------------------------------------------------------------
Public Function GetClientHeight(Frm As Form)
    Dim MyRect As RECT
    GetClientRect Frm.hwnd, MyRect
    GetClientHeight = MyRect.Bottom * Mutliplicateur
End Function

'---------------------------------------------------------------------------------------
' Procedure : GetClientWidth
' Date      : 17/11/2002
' Auteur(s) : d'après 'GetClientHeight' Mix78 (vbfrance.com)
'---------------------------------------------------------------------------------------
' Donne la largeur (twips) d'une form sans les bords
'---------------------------------------------------------------------------------------
Public Function GetClientWidth(Frm As Form)
    Dim MyRect As RECT
    GetClientRect Frm.hwnd, MyRect
    GetClientWidth = MyRect.Right * Mutliplicateur
End Function

'---------------------------------------------------------------------------------------
' Procedure : MetFrmWidthPixels
' Date      : 16/06/2004 05:06
' Auteur(s) : Isoat - Brice C. Huelce
'---------------------------------------------------------------------------------------
' Redimmensionne la largeur de la 'zone client' d'une form en pixels
'---------------------------------------------------------------------------------------
Public Sub MetFrmWidthPixels(Frm As Form, IntPixels As Integer)
'-- On chope la largeur des bords de la form en pixels :
'largeur de la form - largeur de la 'zone client' de cette form
'qu'on passe en pixels grace à ScaleX
Dim TempSng As Single
TempSng = Frm.ScaleX(CSng(Frm.Width - GetClientWidth(Frm)), vbTwips, vbPixels)
'-- Redimmensionne la largeur de la form, en twips
'Nb de pixels voulus (IntPixels) + largeur des bords (TempSng)
Frm.Width = Frm.ScaleX(CSng(IntPixels) + TempSng, vbPixels, vbTwips)
End Sub

'---------------------------------------------------------------------------------------
' Procedure : MetFrmHeightPixels
' Date      : 16/06/2004 05:06
' Auteur(s) : Isoat - Brice C. Huelce
'---------------------------------------------------------------------------------------
' Redimmensionne la hauteur de la 'zone client' d'une form en pixels
'---------------------------------------------------------------------------------------
Public Sub MetFrmHeightPixels(Frm As Form, IntPixels As Integer)
'-- On chope la hauteur des bords + hauteur de la barre de titre de la form en pixels :
'hauteur de la form - hauteur de la 'zone client' de cette form
'qu'on passe en pixels grace à ScaleY
Dim TempSng As Single
TempSng = Frm.ScaleY(CSng(Frm.Height - GetClientHeight(Frm)), vbTwips, vbPixels)
'-- Redimmensionne la hauteur de la form, en twips
'Nb de pixels voulus (IntPixels) + hauteur des bords/barre de titre (TempSng)
Frm.Height = Frm.ScaleY(CSng(IntPixels) + TempSng, vbPixels, vbTwips)
End Sub

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.