Encore quelques mots sur les DLL (partie 2 du "tutoriel")
Une DLL peut utiliser en paramètre une variable, ou l'adresse d'une variable.
Pour passer l'adresse d'une variable à une DLL, il faut faire
adr(variable).Certaines DLL (de Windows en particulier) demandent le handle d'un objet pour pouvoir faire des actions sur cet objet.
Le handle d'un objet, c'est le numéro que Windows attribue à un objet. De même que PANORAMIC attribue des numéros à un objet, Windows le fait aussi, mais ce n'est pas le même numéro.
Pour passer à une DLL le handle d'un objet, on fait
handle(n) , n étant le numéro PANORAMIC de l'objet. Exemple: handle(0) pour la fenêtre de base FORM0.
Certaines DLL demandent le handle de la partie graphique d'un objet (canvas dans le langage Windows), pour pouvoir dessiner sur cet objet.
C'est alors
handle_canvas(n) , n étant le numéro de l'objet de PANORAMIC.
Comme vous avez été attentifs, voici un code qui reprend toutes ces notions et qui utilise une DLL que vous avez tous dans vos PC: cette DLL n'a pas besoin d'être installée, elle existe dans Windows.
- Code:
-
dim w%,h%,a%
dll_on "cards.dll"
a%=dll_call2("cdtInit",adr(w%),adr(h%))
a%=dll_call6("cdtDraw",handle_canvas(0),105,48,2,0,0)
a%=dll_call0("cdtTerm")
dll_off
Qui donnera l'image de ce que cela donne?
JL35?
C'est de cette façon qu'est codé le solitaire de Windows.
Si on décortique cet exemple, on voit que les variables entières w% et h% ne servent à rien. Mais la fonction d'initialisation (cdtInit) exige qu'on lui passe l'adresse de 2 variables et il faut donc déclarer ces variables.
De même a% n'est là que pour mémoriser le retour des 3 fonctions appelées, parce que ces fonctions retournent une valeur, et qu'on ne traite absolument pas dans l'exemple.
Moralité: il faut respecter les conventions d'appel des fonctions d'une DLL, même si on n'utilise pas tous les paramètres.
Le tutoriel n°3 indiquera comment utiliser cette DLL.
Après ce 3ème tutoriel, vous serez en mesure de programmer des jeux de carte...