CLASSE POUR UTILISER CARDS.DLL FACILEMENT

Galmiza Messages postés 573 Date d'inscription samedi 16 novembre 2002 Statut Membre Dernière intervention 9 avril 2008 - 16 juin 2006 à 15:11
gbourgeois0019 Messages postés 152 Date d'inscription lundi 3 avril 2006 Statut Membre Dernière intervention 2 juin 2008 - 23 juin 2006 à 15:31
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/38134-classe-pour-utiliser-cards-dll-facilement

gbourgeois0019 Messages postés 152 Date d'inscription lundi 3 avril 2006 Statut Membre Dernière intervention 2 juin 2008 1
23 juin 2006 à 15:31
effectivement c'est moi qui a fait une erreur en lisant l'aide des fonction sur le net. L'aide dit ceci :

Initializes the cards.dll library for your application. You must supply the addresses of two variables, in which cards.dll stores the width and height (in pixels) of a card.

On ne peut donc decider de la taille de la carte qu'avec la fonction cdtDrawEx.

Je vais corriger ca dans pas long ...

Merci ;)
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
23 juin 2006 à 14:11
on est donc finallement tombés d'accord ^^
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
23 juin 2006 à 12:48
(c'est la fonction cdtDrawExt qui permet de choisir la taille des cartes à dessiner)
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
23 juin 2006 à 12:46
En fait cdtInit récupère la taille des cartes, qu'on ne peut donc pas choisir (apparemment 71x96)
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
23 juin 2006 à 12:13
à Initialiser la librairie, oui, je ne discute pas ce point.

la fonction en profite juste pour fournir les dimensions des cartes...
le code :
SetDefaultCardSize(30,20);

est donc faux...
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
23 juin 2006 à 11:40
Le retour de cdtInit est pour test d'erreur a mon avis. Mais cette fonction sert bien a initialiser la librairie (grace au deux paramètres Height et Width)
Je vois pas trop non plus pourquoi on passe leur adresse plutot que leur valeur (a moins que les valeurs puissent être modifiées par cdtInit, si par exemple toutes les tailles ne sont pas possibles)
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
23 juin 2006 à 11:33
y'a une mauvaise compréhension de
return cdtInit(&Height,&Width);

cdtInit renvoie la taille des cartes que la dll sais dessiner....
elle ne permet aucunement de la personnaliser...
gbourgeois0019 Messages postés 152 Date d'inscription lundi 3 avril 2006 Statut Membre Dernière intervention 2 juin 2008 1
16 juin 2006 à 21:41
Ah ok merci ! J'arrange ca et j'update dans pas long ! ;)
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
16 juin 2006 à 19:55
Il te reste encore une méthode getDC() qui traine...
Je vois que tu essaie de fournir pas mal de méthodes DrawCard
Je pense que tu pourrais en donner une qui prend en paramètre un RECT (qui contiendra donc la position et la taille)
gbourgeois0019 Messages postés 152 Date d'inscription lundi 3 avril 2006 Statut Membre Dernière intervention 2 juin 2008 1
16 juin 2006 à 16:40
Merci pour vos commentaires et j'ai apporté les midifications nécessaires :)

J'ai suivi ton conseil vecchio56 et j'ai mis le HDC en argument comme je l'avais fait au tout debut.
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
16 juin 2006 à 15:16
Ah je me suis fait grillé, ca m'apprendra a écrire de longs messages!
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
16 juin 2006 à 15:15
Pourquoi retourner 0 ou 1 dans une fonction bool, et pas true/false.
Ca change pas grand chose, mais dans ce cas autant mettre le fonction en int

Je suis pas sûr que garder un m_hDC soit une bonne solution. Je l'aurais plutot demandé en argument. Du coupr, m_hWnd n'est plus utile non plus

# if ( !ret )
# return 0;
#
# return 1;
Tu peux remplacer ca par return ret; c'est plus joli

Et dans SetDefaultCardSize, j'ai pas compris pourquoi tu utiliser des pointeurs et des new
N'est-ce pas équivalent a ca?
bool MyCards::SetDefaultCardSize(int Height, int Width)
{
return cdtInit(Height, Width);
}
Galmiza Messages postés 573 Date d'inscription samedi 16 novembre 2002 Statut Membre Dernière intervention 9 avril 2008 1
16 juin 2006 à 15:11
# bool MyCards::SetDefaultCardSize(int Height, int Width)
# {
# int *i;
# int *j;
# BOOL ret;
#
# i = new int;
# j = new int;
#
# (*i)=Height;
# (*j)=Width;
#
# ret = cdtInit(i,j);
# if ( !ret )
# return 0;
#
# return 1;
# }

Ca ne revient pas au même de faire ça ?

# bool MyCards::SetDefaultCardSize(int Height, int Width)
# {
# return cdtInit(&Height,&Width);
# }

Je n'ai pas encore essayé mais ça a l'air sympathique.
Ca facilite grandement le bouleau de ceux qui veulent faire des jeux de cartes quelconques.
Rejoignez-nous