27/04/2024
Windev et les Api WindowsNb de visiteurs en ligne : 1
>> Introduction << >> Codes et Forum << >> Download <<


Rubrique : 5 - Trucs et astuces       Sujet : Faire une copie d'écran
Auteur Message
 °¨¨ JL ¨¨° Posté le : 23/06/2000 12:00:00


// Pour faire une copie de la totalité de l'écran, il faut un champ image avec la propriété invisible à vrai, dans l'exemple suivant 'im1'.

hwnd est un entier long=handle("im1")
hdcScreen est un entier long = appeldll32("gdi32","CreateDCA" , "DISPLAY" , NULL , NULL , NULL)

// résolution de l'écran
HORZRES est un entier long=appeldll32("gdi32","GetDeviceCaps" , hdcScreen , 8)
VERTRES est un entier long=appeldll32("gdi32","GetDeviceCaps" , hdcScreen , 10)

// on donne au champ image im1 les mêmes dimensions que l'écran
im1..ligne=0
im1..colonne=0
im1..largeur=horzres
im1..hauteur=vertres

dcim1 est un entier long=ddebutdessin("im1")
appeldll32("gdi32","BitBlt", dcim1 , 0 , 0 , im1..largeur , im1..hauteur , hdcScreen , 0 , 0 , 0x00CC0020)

dsauveimage("im1","copieecr.bmp") // sauvegarde de l'image sur le disque  
appeldll32("gdi32","DeleteDC",hdcScreen)
dfindessin()


//----------------------------------------------------------------------
// Pour faire une copie d'une fenêtre (ou d'un champ) , même principe que pour la totalité :  
hwnd est un entier long=handle("im1") // handle du champ image
hwndfen est un entier long=handle() // handle de la fenêtre ou du champ à copier

hdcScreen est un entier long = appeldll32("user32","GetWindowDC" , hwndfen)

rect est compose de
    l est un entier long
    t est un entier long
    r est un entier long
    b est un entier long
fin
appeldll32("user32","GetWindowRect" , hwndfen , &rect)

HORZRES est un entier long = rect.r - rect.l
VERTRES est un entier long = rect.b - rect.t
im1..ligne=0
im1..colonne=0
im1..largeur=horzres
im1..hauteur=vertres

dcim1 est un entier long=ddebutdessin("im1")

appeldll32("gdi32","BitBlt" , dcim1 , 0 , 0 , im1..largeur , im1..hauteur , hdcScreen , 0 , 0 , 0x00CC0020)
dsauveimage("im1","copieecr.bmp")
appeldll32("user32","ReleaseDC",hwndfen,hdcScreen)
dfindessin()