Copier contenu d'une fenetre dans un bmp [Résolu]

Signaler
Messages postés
18
Date d'inscription
samedi 1 mars 2003
Statut
Membre
Dernière intervention
27 juin 2008
-
Messages postés
18
Date d'inscription
samedi 1 mars 2003
Statut
Membre
Dernière intervention
27 juin 2008
-
Bonjour,

Je ne suis pas un expert dans la prog windows donc j'ai recupéré un bout de code qui permet de faire une capture d'ecran et qui marche. Seulement voila, j'aimerais ne copier qu'une seule fenetre, que celle-ci soit visible à l'ecran ou pas (meme si elle est reduite).

J'utilise donc :
int TakeShot(HWND hWndWindow, HDC *phDcBitmap, HBITMAP *phBitmap)
{
HDC hDcWindow = GetWindowDC(hWndWindow);
int ScreenX = GetDeviceCaps(hDcWindow, HORZRES);
int ScreenY = GetDeviceCaps(hDcWindow, VERTRES);

*phDcBitmap = CreateCompatibleDC(hDcWindow);

*phBitmap = CreateCompatibleBitmap(hDcWindow, ScreenX, ScreenY);

if(!SelectObject(pSnapData->m_hDcBitmap, hBitmap)) return 0;

if(!BitBlt(*phDcBitmap, 0, 0, ScreenX, ScreenY,
hDcWindow, 0, 0, SRCCOPY)) return 0;
}

Mes questions sont :
1 - Quand j'appelle la fonction avec un HWND d'une fenetre particuliere, GetDeviceCaps me renvoie la resolution de l'ecran meme quand je redimmentionne ma fenetre.
2 - L'image que je recupere est une capture de l'ecran complet et pas seulement de la fenetre que je voulais

Merci pour votre aide

5 réponses

Messages postés
966
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
4 mars 2010
4
C'est normal GetDeviceCaps(hDcWindow, HORZRES) te renvoie la taille de l'écran; pour une fenêtre utilise GetWindowRect() par exemple.
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Pour connaitre la taille d'une fenetre : GetWindowRect
Si la fenetre est cachée ou réduite, je ne pense pas que tu pourra en récupérer une capture

_____________________________________
Un éditeur de ressources gratuit pour Windows
Messages postés
18
Date d'inscription
samedi 1 mars 2003
Statut
Membre
Dernière intervention
27 juin 2008

Merci pour vos reponses. C'est sur qu'on ne peut pas faire une capture d'une fenetre en dehors de l'ecran, reduite ou masquée par une autre fenetre ? Parce que comme BitBlt demande le HWND de la source, j'esperais que c'etait possible...
Messages postés
966
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
4 mars 2010
4
Tu peux toujours essayer...
Messages postés
18
Date d'inscription
samedi 1 mars 2003
Statut
Membre
Dernière intervention
27 juin 2008

Bah en fait, j'ai essayé et ca a pas l'air de changer grand chose quand je change le handle, c'est a dire que ca fait une copie de l'ecran.
Mais bon, c'est peut etre moi qui fait quelque chose de pas bon donc c'est pour ca que je demande si quelqu'un a deja fait ca...