IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

[VB.Net 2.0] Comment utiliser Cards.dll ?


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Coordinateur Qualité
    Inscrit en
    Avril 2002
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Belgique

    Informations professionnelles :
    Activité : Coordinateur Qualité
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2002
    Messages : 62
    Par défaut [VB.Net 2.0] Comment utiliser Cards.dll ?
    Bonjour,

    j'ai vu des tas de choses sur le web, mais tout ce que j'ai essayé ne fonctionne pas.

    Voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    Public Class frmMain
        Declare Function cdtInit Lib "cards.dll" (ByRef width As Integer, _
            ByRef height As Integer) As Boolean
        Declare Function cdtDraw Lib "cards.dll" (ByVal hdc As IntPtr, _
            ByVal x As Long, ByVal y As Long, ByVal card As Long, _
            ByVal type As Long, ByVal color As Long) As Boolean
        Declare Sub cdtTerm Lib "cards.dll" ()
     
        Private Sub frmMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            cdtInit(pic.Width, pic.Height).ToString()
        End Sub
     
        Protected Overrides Sub Finalize()
            cdtTerm()
            MyBase.Finalize()
        End Sub
     
        Private Sub but_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles but.Click
            cdtDraw(pic.Handle, 50, 30, 5, 1, 1)
        End Sub
    End Class
    pic est un PictureBox,
    btn est un Button.

    A l'appel de la fonction cdtDraw, j'ai l'exception suivante:
    PInvokeStackImbalance was detected
    A call to PInvoke function 'TexasStats!TexasStats.frmMain::cdtDraw' has unbalanced the stack. This is likely because the managed PInvoke signature does not match the unmanaged target signature. Check that the calling convention and parameters of the PInvoke signature match the target unmanaged signature.
    Tout ça me dépasse... Quelqu'un pour m'éclairer ?

    Merci !
    Vonotar

  2. #2
    Membre confirmé
    Homme Profil pro
    Coordinateur Qualité
    Inscrit en
    Avril 2002
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Belgique

    Informations professionnelles :
    Activité : Coordinateur Qualité
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2002
    Messages : 62
    Par défaut Autre problème...
    Je n'utilisais pas la bonne déclaration pour ma fonction. Voici le code qui ne génère plus l'exception:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    Public Class frmMain
        Declare Function cdtInit Lib "cards.dll" (ByRef width As Integer, _
            ByRef height As Integer) As Boolean
        Declare Function cdtDrawExt Lib "cards.dll" (ByVal hdc As IntPtr, _
            ByVal x As Integer, ByVal y As Integer, ByVal dx As Integer, _
            ByVal dy As Integer, ByVal card As Integer, _
            ByVal type As Integer, ByVal color As Integer) As Boolean
        Declare Function cdtDraw Lib "cards.dll" (ByVal hdc As IntPtr, _
            ByVal x As Integer, ByVal y As Integer, ByVal card As Integer, _
            ByVal type As Integer, ByVal color As Integer) As Boolean
        Declare Sub cdtTerm Lib "cards.dll" ()
     
        Private Sub frmMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            cdtInit(pic.Width, pic.Height)
        End Sub
     
        Protected Overrides Sub Finalize()
            cdtTerm()
            MyBase.Finalize()
        End Sub
     
        Private Sub but_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles but.Click
            MessageBox.Show(cdtDrawExt(pic.Handle, 0, 0, pic.Width, pic.Height, 0, 0, 0).ToString)
        End Sub
    End Class
    Par contre, l'appel à la fonction cdtDrawExt (et cdtDraw aussi d'ailleurs) me renvoie False et rien ne s'affiche dans ma PictureBox.

    Une idée ?

Discussions similaires

  1. [WebForms]Comment utiliser une .dll asp en .net ?
    Par topolino dans le forum Général Dotnet
    Réponses: 3
    Dernier message: 02/10/2006, 20h54
  2. [VB.Net] Comment utiliser une dll faite en VB6 ?
    Par hassanovich dans le forum VB.NET
    Réponses: 1
    Dernier message: 06/06/2006, 13h25
  3. [Langage]Comment utiliser une dll .NET dans VB6?
    Par BouB dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 13/04/2006, 14h20
  4. [C#] Comment utiliser des dll win 32 dans un projet .NET
    Par Mickey.jet dans le forum Delphi .NET
    Réponses: 2
    Dernier message: 31/05/2005, 13h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo