Mis à jour le mardi 29 octobre 2013
  • Facile
Connectez-vous ou inscrivez-vous gratuitement pour bénéficier de toutes les fonctionnalités de ce cours !

Introduction du cours

Vous avez toujours voulu savoir comment ajouter des fonctions à DBPro sans jamais oser le demander ?
Eh bien je vais vous le dire.

Base du projet

Lancez Visual Studio, faites "Nouveau projet > projet Win32 > dans paramètre de l'application (cochez "DLL") > Valider".

Tout le code sera à mettre dans le fichier nombre_de_votre_projet.cpp après la fonction DllMain().

Ajout des fonctions

Les fonctions que vous voudrez ajouter devront être de la forme :

__declspec(dllexport) type_de_retour nom_de_la_fonction(parametres)
{ 
        corps de la fonction
}

En fait, ce sont de simples fonctions précédées de __declspec(dllexport).

Pour ce tutoriel, je vais utiliser ces deux fonctions :

// fonction BoiteDialogue, affiche une boîte de dialogue
__declspec(dllexport) void BoiteDialogue(LPCTSTR titre,LPCTSTR message)
{
        if(titre && message) // si le titre et le message ne sont pas vides
                MessageBox(NULL,message,titre,MB_OK | MB_ICONINFORMATION); // on affiche une boîte de dialogue
}

// fonction cube, retourne le cube de la valeur passé en paramètre
__declspec(dllexport) int Cube(int val)
{
        return (val*val*val);
}

Copiez ce code après la fonction DllMain() puis lancez la compilation.

DLL String Table

La "String Table" permet à DBPro de savoir quelles fonctions il peut utiliser.

Clic droit dans l'explorateur de solution > Ajouter > Ajouter une ressource.

Image utilisateur

Choisissez "String Table" dans le menu et cliquez sur "nouveau".

Image utilisateur

Le fichier .rc créé s'ouvre avec une valeur IDS_STRING101 et ayant 101 comme valeur.
Cliquez sur cette ligne dans la colonne "légende", ce que vous entrerez dans le champ apparu doit avoir une syntaxe très stricte.

Voici la syntaxe :

nom([%retour)(%paramètres)%fonction dans la DLL%commentaires
  • nom : nom de la commande sous DBPro (en majuscules)

  • retour : type de la fonction de retour comme "paramètres"

  • paramètres : liste des paramètres dans l'ordre (S = string, L = entier, F = réel, D = dword)

  • fonction dans la DLL : voir plus bas

  • commentaires (facultatif) : ce que vous voulez

Pour la fonction "BoiteDialogue", j'obtiens ceci :

BOITE DIALOGUE%SS%?BoiteDialogue@@YAXPBD0@Z%boite de dialogue
  • BOITE DIALOGUE : nom de votre fonction sous DBPro

  • SS : paramètres de votre fonction (ici deux chaînes de caractères)

  • ?BoiteDialogue@@YAXPBD0@Z : votre fonction dans la DLL

  • boite de dialogue : commentaire

Passons à la fonction "Cube" :

  • nous allons lui donner un nom très original : CUBE ;

  • comme elle retourne une valeur, il faut faire suivre son nom de [ ;

  • ensuite vient le type de retour suivi du paramètre : LL (entier,entier) ;

  • enfin la fonction dans la DLL, on prendra "?Cube@@YAHH@Z" pour l'exemple.

Essayez de trouver vous-mêmes.

CUBE[%LL%?Cube@@YAHH@Z

Testons maintenant dans DarkBasic

Première chose à faire, récupérer la DLL générée qui doit se trouver dans :

Citation : PC

C:\Documents and Settings\****\Mes documents\Visual Studio Projects\***\(Debug ou Release)

et la déplacer dans le dossier plugins-user de DarkBasic :

Citation : PC

C:\Program Files\Dark Basic Software\Dark Basic Professional\Compiler\plugins-user

C'est fait ? Alors lancez DarkBasic, puis créez un nouveau projet et mettez-y le code suivant :

A = CUBE(5)
BOITE DIALOGUE "Cube de A","Le cube de A=5 est : "+str$(A)

Appuyez sur F5 et voyez le résultat !

Image utilisateurCliquez sur l'image

DLL de test et projet VC++

Maintenant vous pouvez vous ajouter des fonctions à DBPro, amusez-vous bien. ;)

Exemple de certificat de réussite
Exemple de certificat de réussite