WinBox - Documentation 1.2

Liste des Widgets > Button

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)
Button1 Button2 Button3
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);

Méthodes

void wButton_SetText(Widget *button, const char *text);
void wButton_SetMode(Widget *button, int mode);
void wButton_SetFont(Widget *button, nSDL_Font *font, nSDL_Font *font_selected);
void wButton_SetBackground(Widget *button, wBACKGROUND *bg, wBACKGROUND *bg_selected);
int wButton_GetMode(Widget *button);

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 !