Un bouton textuel ou une image, que l'on peut presser ou sélectionner.
H-Expansif: Oui (si bouton textuel), Non (si bouton-image)
V-Expansif: Oui (si bouton textuel), Non (si bouton-image)
Un bouton-texte suivi d'un bouton-image. Etat relâché et état pressé.
Création
Widget *wButton(const char *str, int mode);
Widget *wButtonImage(SDL_Surface *img, SDL_Surface *img_selected, int mode);
Ces deux méthodes sont également utilisables avec les boutons de type BUTTON_SELECT pour modifier/obtenir l'état :
void wCheck_Set(Widget *button, BOOL b);
BOOL wCheck_IsChecked(Widget *button);
A propos
L'argument mode attend une réponse parmi l'énumération suivante :
BUTTON_PRESS
Le bouton est pressable : cliquer dessus va rapidement l'activer.
BUTTON_SELECT
Le bouton est sélectionnable : cliquer dessus le fait changer d'état.
Si vous utilisez des boutons-images à l'aide de la fonction wButtonImage, l'espace associée aux surfaces contenant les images sera automatiquement libéré en fin de programme. Nul besoin de les libérer soi-même.
N'oubliez pas qu'un bouton textuel est à la fois H-expansif et V-expansif (ce qui est plutôt rare chez un widget dynamique) ! Si vous ajoutez un bouton-texte dans un BasicLayout par exemple, celui-ci prendra toute la place restante, et les prochains widgets que vous ajouterez ne seront pas affichés (ils n'auront plus de place). Utiliser les fonctions wSetHeight et wSetWidth pour contrôler la taille de votre bouton.
Moi-même j'oublie souvent cela et me retrouve avec un bouton gigantesque !