Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2012 connectés 

  FORUM HardWare.fr
  Programmation

  [Win32/C/C++] Afficher les cartes de CARDS.DLL dans un DC

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Win32/C/C++] Afficher les cartes de CARDS.DLL dans un DC

n°89683
spark
Luc ?
Posté le 15-01-2002 à 20:37:24  profilanswer
 

Je dois faire un jeu de cartes et j'ai donc pensé à utiliser la dll CARDS.DLL qui contient un jeu de cartes et les fonctions pour les afficher.
 
J'ai donc commencé ma p'tite classe Card dont voici le code:
 
Card.h:
 
class Card  
{
private:
 HINSTANCE m_hDllInstance;
 
 typedef void (*InitializePtr)(int, int);
 typedef int (*DrawPtr)(HDC, int, int, int, int, int);
 typedef void (*TerminatePtr)(void);
 
public:
 Card();
 virtual ~Card();
 
 void Render_Card(HDC, int, int, int);
 
};
 
 
 
Card.cpp:
 
 
#include "Card.h"
 
Card::Card()
{  
 // On charge la DLL des cartes en mémoire
 m_hDllInstance = LoadLibrary("CARDS.DLL" );
 
 if( m_hDllInstance != NULL )
 {
  InitializePtr fptr;
   
  // On recupere un pointeur sur la fonction d'initlisation de la DLL
  fptr = (InitializePtr) GetProcAddress( m_hDllInstance, "cdtInit" );
   
  if( fptr != NULL)
  {
   int Width, Height;  
   MessageBox(NULL,"Coucou","",MB_OK);
   // Appel de la fonction de la DLL
   fptr(Width, Height);
  }
 }
}
 
 
Card::~Card()
{
 if( m_hDllInstance != NULL )
 {
  TerminatePtr fptr;
   
  // Recuperation de l'adresse de la fonction de fin d'utilisation
  fptr = (TerminatePtr) GetProcAddress(m_hDllInstance, "cdtTerm" );
   
  if( fptr != NULL)
  {
   // Appel de la fonction de la DLL
   fptr();
  }  
 
  // On libère la DLL de la mémoire
  FreeLibrary(m_hDllInstance);
 }
}
 
 
void Card::Render_Card(HDC hDC, int x, int y, int CardNumber)
{
 if( m_hDllInstance != NULL )
 {
  DrawPtr fptr;  
 
  //Recuperation de l'adresse de la fonction de dessin
  fptr = (DrawPtr) GetProcAddress(m_hDllInstance, "cdtDraw" );
 
  if( fptr != NULL)
  {
   int Ret;
   Ret = fptr(hDC, x, y, CardNumber, 0, GetBkColor(hDC));
  }  
 }
}
 
 
Et Forcément, ca marche pas du tout.... on s'en serait douté.
J'ai peut etre rien compris aux pointeurs de fonctions parce que c des que je veux appeller la fonction pointée que ca plante.
 
Pour info, je me suis basé sur un truc VB et la déclaration des fonctions de la dll est la suivante :
 
 
Declare Function cdtInit Lib "Cards.Dll" (dX As Long, dY As Long) As Long
Declare Function cdtDraw Lib "Cards.Dll" (ByVal hDC As Long, ByVal X As Long, ByVal Y As Long, ByVal iCard As Long, ByVal iDraw As Long, ByVal clr As Long) As Long
Declare Function cdtTerm Lib "Cards.Dll" () As Long
 
Merci à celui qui trouvera ce qui foire...

mood
Publicité
Posté le 15-01-2002 à 20:37:24  profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [Win32/C/C++] Afficher les cartes de CARDS.DLL dans un DC

 

Sujets relatifs
Comment afficher l'adresse ip dans une page html en javascript ?Créer un plugin winamp pour afficher les lyrics qui c faire?
Script pour afficher son ip à chaque connec sur page web? ..entete DLL an assenbleur
[JAVA] méthode pour afficher une JLIST au dessus du Panel[Delphi] Comment créer une DLL ?
[C++] Utiliser MAKEINTRESOURCE dans app Win32 sans MFC[PHP] afficher les données d'un ID pour les changer directement ?
Compression ... DLL ou OCXafficher un tableau donnant le résultat de requetes SQL
Plus de sujets relatifs à : [Win32/C/C++] Afficher les cartes de CARDS.DLL dans un DC


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR