LispWorks CAPI/Lier le code en éléments CAPI

Un livre de Wikilivres.
Sauter à la navigation Sauter à la recherche
LispWorks CAPI
LispWorks CAPI
Sommaire

Modifier ce modèle

Pour qu'un élément CAPI puisse effectuer une action se fait en spécifiant une fonction callback. C'est une fonction qui est exécutée chaque fois que vous modifiez l'état d'un élément de CAPI. Il appelle un morceau de code à chaque fois qu'un choix est fait dans une fenêtre.

Notez que le résultat de la fonction callback est ignoré, et que cet utilité fait partie de ces effets secondaires.

Écrivez le code suivant

(make-instance 'push-button
               :data "Bonjour" 
               :callback 
               #'(lambda (&rest args) 
                         (display-message 
                            "Bonjour le Monde")))

(contain *)

Cliquez sur le bouton Bonjour. Une boîte de dialogue apparaît contenant le message "Bonjour le Monde".

Le CAPI fournit la fonction d'affichage de message pour vous permettre de faire apparaitre une feuille de dialogue contenant un message et un bouton Confirmer. C'est l'une des nombreuses fonctions pré-définis que le CAPI offre. Vous pouvez également faire apparaître une fenêtre de dialogue plutôt qu'une feuille, en utilisant prompt-with-message.

Note: Lorsque vous développez des applications CAPI, vos fenêtres d'application sont exécutées dans la même boucle fenêtre de l'événement système comme IDE LispWorks. Ceci - et le fait que dans le code Lisp de l'utilisateur existe dans le même espace de noms global que la mise en œuvre Common Lisp - signifie qu'une application CAPI qui s'exécute dans l'IDE LispWorks peut modifier les mêmes valeurs que l'une des IDE de LispWorks.

Par exemple, votre application CAPI pourrait avoir un bouton qui, lorsqu'il est sélectionné, définit une fente dans un objet particulier que vous pouvez également accédé par votre Listener. Cette introspection peut être utile mais peut aussi conduire à des valeurs et à des évènements inattendus lors de l'exécution de votre application.