Parametre integer transmis à une DLL incorrect

Résolu
cs_andrebernard Messages postés 404 Date d'inscription lundi 9 juin 2003 Statut Membre Dernière intervention 4 septembre 2013 - 13 oct. 2008 à 17:20
cs_andrebernard Messages postés 404 Date d'inscription lundi 9 juin 2003 Statut Membre Dernière intervention 4 septembre 2013 - 13 oct. 2008 à 18:17
Bonjour à tous

Voila, je transmet une valeur - 1
, à une DLL non active X.
Pour cela, j'ai declaré ces variables en integer.
Hors, je viens de m'appercevoir que dans ma DLL cette valeur s'est transformée en 65526.

Quelqu'un sait il pourquoi ???

Public Declare Function PanneauOuvre Lib "MaDll.dll" Alias "_PanneauOuvre" _
                            (ByVal Titre As String, ByVal CouleurTexte As Long, _
                            ByVal CouleurFond As Long, ByVal Texte As String, _
                            ByVal TailleCaracteres As String, ByVal XInfo As Integer, _
                            ByVal YInfo As Integer, ByVal PositionTexte As String) As Long

HwndInfo = PanneauOuvre_("Coucou", RGB(255, 255, 255), RGB(0, 0, 0), "Annie" + Chr(13) + "Aime" + Chr(13) + "Les sucettes", "10",-1, -1, "Centre")

Merci de votre aide

6 réponses

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
13 oct. 2008 à 18:01
Ben garde ta valeur -1.
dans la dll tu sais que tu aura 65535 et que ce n'est pas une coordonnée écran et donc tu la traite comme telle.

sinon modifie ta dll pour qu'elle accepte -1 en entrée, et cela revient au même, tu traitera le -1 au lieu du 65535

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
3
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
13 oct. 2008 à 17:32
"...s'est transformée en 65526..."

Çà serait pas plutôt 65535 ?????

C'est parce que ta dll ne s'attend pas à avoir de nombres négatifs sur ce paramètre, elle le lit donc comme un nombre non signé.
-1 en nombre signé est égal à 65535 en nombre non signé.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
0
cs_andrebernard Messages postés 404 Date d'inscription lundi 9 juin 2003 Statut Membre Dernière intervention 4 septembre 2013 1
13 oct. 2008 à 17:39
Merci Casy de ta reponse rapide
Mais alors comment pourrais-je faire pour lui dire que je vais lui envoyer un nombre signé ???
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
13 oct. 2008 à 17:51
En modifiant la dll peut-etre

Ceci dit, as-tu besoin de lui passer des valeurs négatives. Ces paramètres semblent etre des coordonnées à l'écran, en général c'est positif ce genre de chose.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_andrebernard Messages postés 404 Date d'inscription lundi 9 juin 2003 Statut Membre Dernière intervention 4 septembre 2013 1
13 oct. 2008 à 17:56
Oui tu as raison, mais je voulais lui dire que si je met -1 et bah il a qu'a centrer la fenetre.
Je ne sais pas quel chiffre mettre pour qu'il detecte que ce n'est pas des coordonnées, mais une commande de centralisation.
Je pourrait mettre un grand chiffre au dessus de la capacité de l'ecran, je ne peut mettre 0 car ce sont aussi les coordonnées du debut de l'ecran, ou alors je vais faire plus simple les passer en string.
C'est pas pro, mais ça va marcher.

C'est quand meme dingue qu'on ne puisse pas passer de chiffre negatifs.....
0
cs_andrebernard Messages postés 404 Date d'inscription lundi 9 juin 2003 Statut Membre Dernière intervention 4 septembre 2013 1
13 oct. 2008 à 18:17
Je crois que tu as raison sur l'histoire des signé et non signé.
Mais c'est bien 65526 que j'obtiens, ça restera donc bien un mystere.

Je vais faire comme tu as dit.
Passe une bonne soirée
0
Rejoignez-nous