Parametre integer transmis à une DLL incorrect

Résolu
Signaler
Messages postés
406
Date d'inscription
lundi 9 juin 2003
Statut
Membre
Dernière intervention
4 septembre 2013
-
Messages postés
406
Date d'inscription
lundi 9 juin 2003
Statut
Membre
Dernière intervention
4 septembre 2013
-
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

Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
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
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
"...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
Messages postés
406
Date d'inscription
lundi 9 juin 2003
Statut
Membre
Dernière intervention
4 septembre 2013
1
Merci Casy de ta reponse rapide
Mais alors comment pourrais-je faire pour lui dire que je vais lui envoyer un nombre signé ???
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
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
Messages postés
406
Date d'inscription
lundi 9 juin 2003
Statut
Membre
Dernière intervention
4 septembre 2013
1
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.....
Messages postés
406
Date d'inscription
lundi 9 juin 2003
Statut
Membre
Dernière intervention
4 septembre 2013
1
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