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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.