Bonjour !
J'ai trouvé des morceaux de code sur différents sites touchant au API graphique présents dans windows, mais je ne sais pourquoi je n'arrive pas a en faire marcher un seul ..
Que se soit SetPixel ou bitblt par exemple, j'obtient a chaque fois la meme erreur.
Voici les déclarations des deux API :
Declare Function BitBlt Lib "gdi32" Alias "BitBlt" ( _
ByVal hDestDC As Long, _
ByVal x As Long, _
ByVal y As Long, _
ByVal nWidth As Long, _
ByVal nHeight As Long, _
ByVal hSrcDC As Long, _
ByVal xSrc As Long, _
ByVal ySrc As Long, _
ByVal dwRop As Long)As LongDeclare Function SetPixel Lib "gdi32" (byval hDC as long, ByVal X as long, ByVal Y as long, ByVal color as long) As Long.
Travaillant sur VB 2005, voici des exemples de code que j'ai testé, sans succès :
setpixel(form1.handle, 50,50, color) (color étant défini par la fonction RGB auparavant dans mon programme), le but étant ici de faire aparaitre un pixel de la couleur voulue au point de coordonnées 50/50 sur ma form.
bitblt(form1.handle, 50,50,picSource.width, picSource.height, picSource.handle, 0,0, SRCCOPY)
SRCCOPY étant une constante de l'API = &HCC0020 , le but ici étant de copier l'image d'une picturebox vers une autre simplement.
Cependant, dans chacun des cas, une erreur survient :
PInvokeStackImbalance a été détecté
Message: Un appel à la fonction PInvoke 'WindowsApplication1!WindowsApplication1.Form1::SetPixel' a déséquilibré la pile. Cela peut se produire, car la signature PInvoke managée ne correspond pas à la signature cible non managée. Vérifiez que la convention d'appel et les paramètres de la signature PInvoke correspondent à la signature non managée cible.
Quelqu'un maniant bien ces APIs en VB 2005 pourrait-il me dépanner? car je ne trouve vraiment rien sur MSDN qui me sorte de ce mauvais pas :s