Le premier site francophone dédié au développement Pocket PC


Comment changer l'alignement du caption d'un bouton ?
 
u  

 

Par défaut, eVB nous propose un contrôle CommandButton avec un alignement prédéfini. Le titre de ce contrôle (sa propriété Caption) est centré horizontalement et verticalement, et il retourne à la ligne automatiquement si il est trop long.

Il est possible d'aligner le titre d'autres manières. Windows CE 3.0 nous propose en standard les alignements suivants :

Alignement Commentaire
Left A gauche
Top En haut
Right A droite
Bottom En bas
Center Centré horizontalement
VCenter Centré verticalement
Multilines Retour à la ligne automatique

Pour changer l'alignement d'un CommandButton il faut modifier son style.

Modifier le style d'un contrôle

Pour modifier le style d'un contrôle, il faut tout d'abord récupérer son style actuel en utilisant la fonction "GetWindowLong" de la librairie "Coredll" avec comme paramètre "nIndex" la constante GWL_STYLE, puis lui ajouter (avec l'opérateur OR) la constante de style que l'on veut lui appliquer. Le style ainsi créé et réinjecté au contrôle grâce à la fonction "SetWindowLong" (elle aussi incluse dans Coredll).

Les fonctions "GetWindowLong" et "SetWindowLong" sont déclarée ainsi en eVB :

Public Declare Function GetWindowLong Lib "coredll" Alias "GetWindowLongW" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Public Declare Function SetWindowLong Lib "coredll" Alias "SetWindowLongW" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

La constante GWL_STYLE est définie comme suit :

Const GWL_STYLE = -16

Modifier l'alignement d'un CommandButton

Nous avons besoin de déclarer les constantes utilisées pour l'alignement du contrôle CommandButton de la manière suivante :

Const BS_LEFT = &H100
Const BS_RIGHT = &H200
Const BS_CENTER = &H300
Const BS_TOP = &H400
Const BS_BOTTOM = &H800
Const BS_VCENTER = &HC00
Const BS_MULTILINE = &H2000

Il faut maintenant écrire le code de modification de l'alignement. Nous allons écrire ce code pour régler l'alignement du contrôle BOU_Test sur Centré verticalement (VCenter), cadré à gauche (Left) et retour à la ligne automatique (Multiline) :

Dim wStyle
Call GetWindowLong(BOU_Test.hwnd, GWL_STYLE)
wStyle = wStyle Or BS_VCENTER Or BS_LEFT Or BS_MULTILINE
Call SetWindowLong(Command12.hwnd, GWL_STYLE, wStyle)
Call BOU_Test.Refresh

 

Il est possible de marier les possibilités entres elles, comme Left+Top, Top+Right, Center+Left, etc...
Le résultat peut ressembler à cet exemple.

 

Le titre des boutons indique l'alignement utilisé (L=Left, T=Top, C=Center, R=Right, V=VCenter, B=Bottom)

 

Stéphane Sibué

 
       
   
 
   
Copyright 2001-2004 - Tous droits réservés
 
   

iPAQ est un produit de COMPAQ.
Visual Tools est un produit de Microsoft Corporation.
Toutes les autres marques et produits présents dans ces pages sont la propriété exclusive de leurs sociétés respectives.