begin process at 2010 03 14 17:48:35
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Windows

 > 

GUI

 > 

BitBlt Fenêtre Cachée.. Une solution ?


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

BitBlt Fenêtre Cachée.. Une solution ?

mardi 19 mai 2009 à 15:37:31 | BitBlt Fenêtre Cachée.. Une solution ?

Hades53

Membre Club
Bonjour à tous, voilà je me trouve confronté à un petit problème. En fait je voudrais afficher une copier le contenu graphique d'une fenêtre. La fonction marche très bien mais seulement quand la fenêtre cible est activée, donc ça ne marche pas quand c'est caché :( Y'aurait-il un moyen de contourner ce problème ? J'ai regardé sur divers forums mais apparement personne n'a su solutionner le problème. Voici la portion de code que j'utilise: HDC targetDC = GetDCEx(target_HWND,0,DCX_CACHE); if (targetDC) { BitBlt(hDC,0,400,200,200,target_DC,0,0,SRCCOPY); ReleaseDC(target_HWND,target_DC); } hDC est le context où j'affiche l'aperçu de la fenêtre (geré lors du WM_PAINT). De plus il me semble que la fonction PrintWindow() a le même problème. En vous remerciant.
mardi 19 mai 2009 à 16:08:01 | Re : BitBlt Fenêtre Cachée.. Une solution ?

Hades53

Membre Club
Arf, le texte s'est mal mis en forme. Un modérateur pourrais-t-il corriger ça ?
mercredi 20 mai 2009 à 17:54:02 | Re : BitBlt Fenêtre Cachée.. Une solution ?

Hades53

Membre Club
Ok personne ne sait, c'est bien ce qu'il me semblais :)

Passez une bonne journée.
vendredi 22 mai 2009 à 18:00:15 | Re : BitBlt Fenêtre Cachée.. Une solution ?

rt15

Membre Club Administrateur CodeS-SourceS
Salut,

"Un modérateur pourrais-t-il corriger ça ?"

Pouf, c'est corrigé !
Ah tiens non...
Aurais je perdu mes pouvoirs magiques ?

En m'inspirant du code de racpp, traduit en Delphi, ça marchait plutôt pas mal.
samedi 23 mai 2009 à 16:26:35 | Re : BitBlt Fenêtre Cachée.. Une solution ?

Hades53

Membre Club
Merci pour les liens, en fait j'ai essayé celui de racpp.. le problème étant que si la fenêtre n'est pas active, PrintWindow renvoi une fenêtre noir.

À vrai dire je ne pense pas qu'il y ait de solutions pour obtenir des fenêtres invisibles :(
samedi 23 mai 2009 à 17:44:08 | Re : BitBlt Fenêtre Cachée.. Une solution ?

rt15

Membre Club Administrateur CodeS-SourceS
Hein ? Qu'appelles tu inactives ? Je viens de refaire des essais avec le Delphi, avec une fenêtre de calculatrice qui :
  • N'a pas le focus.
  • A une partie d'elle même en dehors de l'écran.
  • A une partie d'elle même derrière une fenêtre.

Et pourtant... Pourtant PrintWindow a parfaitement travaillé !


Bon, ça ne marche pas sur toutes les application (A base de DirectDraw...), si la fenêtre est minimisée, cela fait une impression écran du bouton dans la barre des tâches...
MAIS, si tu n'es pas arrivé au même résultat avec la calculatrice, c'est que tu as raté quelque chose...
samedi 23 mai 2009 à 18:28:55 | Re : BitBlt Fenêtre Cachée.. Une solution ?

Hades53

Membre Club
Ok c'est vrai que ça à l'air de marcher, mais tu n'a pas ton executable dispo quelque part (pour que je test de mon côté), en fait j'ai pas de compilateur Deplhi, juste basic et C++, mais j'pense que si ça marche j'essairai de convertir au mieux ton bout de code ;)
samedi 23 mai 2009 à 20:38:58 | Re : BitBlt Fenêtre Cachée.. Une solution ?

rt15

Membre Club Administrateur CodeS-SourceS
Le voici sur dl.free.fr.

jeudi 28 mai 2009 à 01:54:48 | Re : BitBlt Fenêtre Cachée.. Une solution ?

Hades53

Membre Club
Réponse acceptée !
Ok j'avais approximativement fait un program du genre, mais j'obtiens le même résultat qu'avec le tiens, à savoir une fenêtre noir. En tout cas merci pour les conseils, et l'upload du prog.

Conclusion, on ne peut pas obtenir le contenu d'une fenêtre cachée.

Bonne journée
jeudi 9 juillet 2009 à 18:54:02 | Re : BitBlt Fenêtre Cachée.. Une solution ?

wkenw

En fait je viens de tomber sur le même problème. Contrairement à ce que tu dis, on peut obtenir une capture d'écran d'une fenêtre cachée.
racpp (et oui, toujours lui !) explique comment faire ici. Je me demande comment il connaît tout ça !

Pour info, mon code est :
HWND hWnd = FindWindow(NULL, "Titre Fenetre");
HDC hWndDC = GetWindowDC(hWnd);
HDC hdcMemDC = CreateCompatibleDC(hWndDC);
RECT rcClient;
GetClientRect(hWnd, &rcClient);  // GetWindowRect pour avoir la decoration
SetStretchBltMode(hWndDC,HALFTONE);
HBITMAP hBitmap = CreateCompatibleBitmap(hWndDC, rcClient.right-rcClient.left, rcClient.bottom-rcClient.top);
SelectObject(hdcMemDC, hBitmap);
PrintWindow(hWnd,hdcMemDC,0);
 CreateBMPFile(hWnd, "c:\\captureqwsx.bmp", hBitmap, hdcMemDC);

où CreateBMPFile est une fonction inspirée de codes d'exemples MSDN.
A bientôt

1 2

Cette discussion est classée dans : problème, fenêtre, hdc, target, bitblt


Répondre à ce message

Sujets en rapport avec ce message

problème de fenêtre "effacée" [ par MLine ] J'utilise C++ Builder 5 et j'affiche plusieurs fiches dynamiquement. Mon problème est que le contenu de ces fiches est effacé lorsqu'une autre fenêtre Problème de vues... [ par Kkeyser ] Bonjour,Voilà mon problème : la fenêtre principale de mon application est divisée en 2 vues : une CTreeView et une CView.J'ai donc naturellement utili un petit problème comme ça [ par batrasog ] bon voilà , juste 3 petites questions un peu connes avec dev c++( je sais je suis nul en c++ mais bon ... ) :- comment faire un programme qui n'affich BitBlt me fait chier [ par vecchio56 ] J'ai crée un projet par défaut avec vs.Les seuls trucs que j'ai fait sont créer un HDC hdc2 en variable globale, et dans le WM_PAINT j'ai mis:case WM_ Problème de bitmap (je crois?) [ par vecchio56 ] J'ai un problème vraiment bizarre, j'ai mis déja des heures a trouver d'ou ca venait, mais le je craque je ne comprends pas. En fait je veux faire un 2 Problèmes avec wxWindows [ par olivier_job ] Bonjour à tous,Voici mes problèmes:Problème 1:J'ai une fenêtre avec un wxGLCanvas à l'intérieur. Malheureusement, je ne suis pas capable de capter les Couleur de fenêtre [ par CyberP ] Comment changer la couleur d'arrière plan d'une fenêtre après l'avoir créée ?PAINTSTRUCT pps;HDC hdc;hdc = BeginPaint(hWnd, &pps);SelectObject(hdc, Cr problème dessiner image dans fenêtre [ par raoulman ] Bonjour Comme je tourne en rond, je viens chercher de l'aide. J'essaye de faire un morpion en GDI, c'est pour apprendre. J'ai une fenêtre mère avec 9 [WINDOWS C++]problème de fenêtre fille [ par brosse_adan ] Bonjour à tous!Voilà mon problème : je veux avoir une fenêtre principale avec trois fenêtres filles. J'enregistre ma classe de fenêtre principale, mes Problème d'affichage [ par tibob51 ] Bonsoir,J'ai créer un programme de comptage.Donc, a l'execution une icone se place dans le barre des tache rapides et un click dessus fait augmenter l


Nos sponsors


Appels d'offres

Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,515 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales