Page 1 sur 1

Handle NULL

Publié : ven. 30/juin/2006 10:01
par snobw
Bonjour, j'ai un problème avec le morceau de code ci-dessous.
Au bout de ~30s l'API CreateCompatibleBitmap me renvoi un HANDLE égale à 0.
j'arrive pas à savoir, pourquoi.

Code : Tout sélectionner

Repeat
  DeleteDC_(BMPHandle)
  DeleteDC_(HCreatDC)
  HCreatDC = CreateDC_("DISPLAY", "", "", NULL)
  HCreatCompDC = CreateCompatibleDC_(HCreatDC)
  BMPHandle = CreateCompatibleBitmap_(HCreatDC, 1024, 768)
  SelectObject_(HCreatCompDC,BMPHandle)
  BitBlt_(HCreatCompDC, 0, 0, 1024, 768, HCreatDC, 0, 0, #SRCCOPY)
  DeleteDC_(HCreatCompDC)
  ReleaseDC_(BMPHandle, HCreatDC)
  Debug HCreatDC
  Debug HCreatCompDC
  Debug BMPHandle
  Sleep_(200)
ForEver
Si quelqu'un à une proposition je suis preneur.

Publié : ven. 30/juin/2006 10:37
par Flype
j'ai déjà lu un truc dans le genre sur le forum anglais.

fred avait une procedure DisplayTransparentImage() et au bout d'un certain nombre d'appels à la fonction, elle ne fonctionnait plus...

je vais essayer de te retrouver le post.

Publié : ven. 30/juin/2006 12:34
par snobw
voila j'ai trouvé la reponse.

Mon Handle était au final le pointeur d'un objet de l'API windows.
Donc, je le detruisais mal.
il fallait que j'utilise
DeleteObject_(BMPHandle)
à la place de DeleteDC_(BMPHandle)

Code : Tout sélectionner

  DeleteDC_(HCreatDC) 
  DeleteObject_(BMPHandle) ;detruit l'objet bitmap
  HCreatDC = CreateDC_("DISPLAY", "", "", NULL);peut etre identique
  HCreatCompDC = CreateCompatibleDC_(HCreatDC)
  BMPHandle = CreateCompatibleBitmap_(HCreatDC, Width, Height)
  SelectObject_(HCreatCompDC,BMPHandle)
  BitBlt_(HCreatCompDC, 0, 0, Width, Height, HCreatDC, left, top, #SRCCOPY)
  DeleteObject_(HCreatCompDC)
  ReleaseDC_(BMPHandle, HCreatDC)

je crée plein d'objet, en pensant les detruires après, ce qui n'était pas le cas.

Publié : ven. 30/juin/2006 13:09
par Flype
bien vu ;-)

Publié : ven. 30/juin/2006 13:15
par snobw
merci quand même pour l'aide!