Création et chargement d'une dll graphique (mfc)

Description

Je vais ici essayer d'expliquer le chargement et la création d'une DLL graphique...

Source / Exemple :


1/ Code à mettre dans l'exécutable crée pour le chargement de la DLL:

// Déclaration des variables indispensables pour le chargement d?une DLL
HINSTANCE gLibDll;  // ?Handle?
typedef BOOL (*DLLSTART)(); // Définition du type du point d?entrée de la DLL
		           // Ici le point d?entrée ne prend pas de 
		           // paramètres d?entrée et retourne un booléen
DLLSTART dll_Start; // Déclaration d?une variable de type DLLSTART
		
// Code permettant le chargement de la DLL 
          gLibDll = LoadLibrary("DllGraph.dll");
// Récupère l?adresse du point d?entrée de la DLL s?appelant « BOOL Start() » 
// dans la DLL
          dll_Start = (DLLSTART) GetProcAddress(gLibDll, "Start");

// Lancement de la fonction contenant l?adresse du point d?entrée de la DLL
          dll_Start();

// Code permettant la libération de la mémoire allouée pour la DLL
           FreeLibrary(gLibDll);

2/ Code allant dans la DLL

   Il faut créer ici un projet MFC Appwizard(dll) (on prendra comme nom pour l'exemple: DllGraph (VC++ crée donc un DllGraph.cpp et DllGraph.h)
   
Il faut ensuite créer une nouvelle classe de type CDialog
   Pour cela créer en premier une nouvelle resource de type CDialog puis créer une nouvelle classe dérivant de CDialog avec comme ID celui de la resource juste crée. (par ex: CDlgTest est notre classe que l'on vient de créer)
   Maintenant il faut crée un point d'arrêt à notre DLL graphique. Ce point d'entrée doit être insérer dans Test.cpp et sera de ce style:

// Nom de la fonction: Start
// Entrée: aucune
// Sortie: Booléen
extern "C" BOOL __declspec(dllexport) Start()
{
                // Permet d'afficher notre fenetre CDlgTest
	AFX_MANAGE_STATE(AfxGetStaticModuleState());
	CDlgTest dlg;
	dlg.DoModal();
	return FALSE;
}

NB :Les paramètres d'un point d'entrée sont obligatoirement en C et non en C++.
NB2: Dans DllGraph.cpp, ne pas oublier d'inclure DlgTest.cpp!!!

Voila le tour est joué, une Dll graphique peut etre charger par un executable.

<<-- H@ldwin -->>

Conclusion :


Il y a un exemple d'utilisation d'une Dll graphik dans le Zip....

Codes Sources

A voir également