La fonction bitblt sou win2000

beniboun - 27 avril 2001 à 13:29
cs_CJC Messages postés 2 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 1 avril 2002 - 15 mars 2002 à 19:45
Quelqu'un saurait-il comment fonctionne la fonction Bitblt de GDI32.dll sous Windows 2000 ?

Cet appel de fonction fonctionne correctement sous win95/98 mais win 2000 renvoi l'erreur "RunTime error 6","Overflow"

dans le module :
Declare Function BitBlt& Lib "GDI32" (ByVal hDestDC As Integer, ByVal X As Integer, 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)

dans le form :
i = BitBlt(Picture1.hDC, 0, 0, Picture1.ScaleWidth, Picture1.ScaleHeight - 1, Picture1.hDC, 0, 1, SRCCOPY)
...

Merci de votre aide

3 réponses

Jean-Jacques.Juille
30 juil. 2001 à 20:27
J'ai suivi l'exemple de cette page :

http://perso.wanadoo.fr/vbsoluces/BitBlt

et sous Windows XP ça n'a pas marché non plus.
Je vais persévérer et si ça marche sous Windows XP
il est possible que ça marche aussi sous Windows 2000.
Dans ce cas je te ferais parvenir la solution.
Si de ton coté tu l'as avant moi, merci de me l'envoyer.
Sympathiquement.
J3 :)
0
en réponse à ta question, voici comment fonctionne bitblt de la même manière sous win2000 ou xp. Cependant sous xp, il s'avère beaucoup moins éfficace, pourkoi? je sé pas.

'dans une déclaration
Option Explicit
Declare Function BitBlt Lib "GDI32" (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 Long
Public Declare Function StretchBlt Lib "GDI32" (ByVal hdc 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 nSrcWidth As Long, ByVal nSrcHeight As Long, ByVal dwRop As Long) As Long

Global Const SRCCOPY = &HCC0020
Global Const SRCERASE = &H440328

Global Const SRCINVERT = &H660046
Global Const SRCAND = &H8800C6Global Const SRCPAINT &HEE0086 ' (DWORD) dest source OR dest

'Comment ça marche ?
'Dans le code
'Tous cela fonctionne en Pixel
't = BitBlt(Picture.hDC ou l'on écrit, EndroitX ou commence le collage, EndroitY ou commence le collage, Taille X de la copie, Taille Y de la copie, Picture.hdc ou l'on copie, Endroit X de la copie, Endroit Y de la copie, SRCCOPY)
0
cs_CJC Messages postés 2 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 1 avril 2002
15 mars 2002 à 19:45
Bon j'arrive sans doute un peu tard mais si je peux apporter une information lavoila !!
l'api bitblt fonctionne tres bien sous 2000 !! de plus ds ton message tu marque un petit example de la source : "
i = BitBlt(Picture1.hDC, 0, 0, Picture1.ScaleWidth, Picture1.ScaleHeight - 1, Picture1.hDC, 0, 1, SRCCOPY)
"
Mais il est impossible d'obtenir un bon resultat a partir du moment ou ta source et ta destination sont le meme contexte de peripherie, c du coup d'épée ds l'eau !!

@ bientot

!!..CJC..!!
0
Rejoignez-nous