Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1333 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [C++] comment faire une copie d'ecran en C++ sous visual

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C++] comment faire une copie d'ecran en C++ sous visual

n°226088
filou66
prend mes poils ...
Posté le 10-10-2002 à 11:20:28  profilanswer
 

La question est dans le titre.
 
je fais une appli en C++/MFC, et je voudrai sur la barred 'outil un bouton qui fasse une capture d'écran (dans un fichier .bmp).
Alors si vous avez des exemples de code qui font ce genre de chose ou même des idées, je suis preneur !

mood
Publicité
Posté le 10-10-2002 à 11:20:28  profilanswer
 

n°226121
farib
Posté le 10-10-2002 à 12:19:00  profilanswer
 

je sais pas, mais ne saurais trop te conseilelr d'aller faire un tour sur google et surtout sur msdn

n°226145
filou66
prend mes poils ...
Posté le 10-10-2002 à 13:24:34  profilanswer
 

farib a écrit a écrit :

je sais pas, mais ne saurais trop te conseilelr d'aller faire un tour sur google et surtout sur msdn




 
c'est déjà fait !
Mais sur msdn c'est difficile de trouver une info si on connait pas déjà un nom de fonction...
et sur google y'a pas une solution qui n'utilise pas DirectX et je ne veux pas inclure directx dans mon projet juste pour faire une copie d'écran...

n°226150
Carbon_14
Posté le 10-10-2002 à 13:37:40  profilanswer
 

Y a eu topic y a qq mois (mai 2002). On avait donné du code C (pas ++, mais ça doit aller aussi :D).
Le but était juste de mettre ds presse-papiers le contenu d'écran en mode bitmap.
 
Cf si y a d'autres exemples.
 
http://forum.hardware.fr/forum2.ph [...] h=&subcat=  
mais pas de réponse du demandeur => on sait pas s'il a été satisfait ou non ....
 
J'ai qq part perdu sur disque dur at-home un exemple 16 bits (krosoft je crois, de CD feu_DPTOOL) qui permet de copier écran, feuille ou zone écran (avec souris) et exporter en BMP, CLP ou ? GIF.

n°226311
filou66
prend mes poils ...
Posté le 10-10-2002 à 17:44:47  profilanswer
 

merci je vais essayer et je te tiens au courant ;-)
 
A+

n°226368
taureau
Posté le 10-10-2002 à 20:23:15  profilanswer
 

Code :
  1. // pour l'écran entier
  2. keybd_event(VK_SNAPSHOT, 0, 0 ,0);
  3. keybd_event(VK_SNAPSHOT, 0, KEYEVENTF_KEYUP,0);
  4. // pour la fenetre active
  5. keybd_event(VK_SNAPSHOT, 1, 0 ,0);
  6. keybd_event(VK_SNAPSHOT, 1, KEYEVENTF_KEYUP,0);


 
la copie se retrouve alors dans le presse-papiers


Message édité par taureau le 10-10-2002 à 20:24:06
n°226584
filou66
prend mes poils ...
Posté le 11-10-2002 à 09:44:54  profilanswer
 

Taureau a écrit a écrit :

Code :
  1. // pour l'écran entier
  2. keybd_event(VK_SNAPSHOT, 0, 0 ,0);
  3. keybd_event(VK_SNAPSHOT, 0, KEYEVENTF_KEYUP,0);
  4. // pour la fenetre active
  5. keybd_event(VK_SNAPSHOT, 1, 0 ,0);
  6. keybd_event(VK_SNAPSHOT, 1, KEYEVENTF_KEYUP,0);


 
la copie se retrouve alors dans le presse-papiers




 
merci !  :hello:

n°226646
filou66
prend mes poils ...
Posté le 11-10-2002 à 11:21:59  profilanswer
 

voilà ma fonction de capture d'écran :
 
void CapMainFrame::CaptureApp()  
{  
  HBITMAP BmpHandler;
   
  keybd_event(VK_SNAPSHOT, 1, 0 ,0);  
  keybd_event(VK_SNAPSHOT, 1, KEYEVENTF_KEYUP,0);
  BmpHandler = (HBITMAP)GetClipboardData(CF_BITMAP);
}
 
 
Qu'est-ce qu'il faut rajouter pour écrire le résultat dans un fichire .bmp ?
 
merci d'avance !
 :hello:


Message édité par filou66 le 11-10-2002 à 11:22:27
n°226661
taureau
Posté le 11-10-2002 à 11:46:33  profilanswer
 

commence par regarder dans l'aide sur les mfc si par hasard tu n'as pas une fonction qui ne fasse pas le travail (je suis sur que ça doit exister quand meme  :D)
 
sinon va voir là http://www.experts-exchange.com/Pr [...] 21533.html

n°226680
Carbon_14
Posté le 11-10-2002 à 13:03:17  profilanswer
 

Va falloir finalement que j'investisse un jour le temps nécessaire pour me mettre au C++, ça simplifie beaucoup la vie :love: !!! Les vieilles cellules grises sont paresseuses. :(  
 
L'exemple (WINCAP) que je disais avoir utilisé est bien le http://support.microsoft.com/defau [...] US;q97193& du lien indiqué par taureau. DIB->BMP. Ai fait un captureur de feuille courante ->> Xport BMP avec ss Win 3.11 : compact et efficace.

mood
Publicité
Posté le 11-10-2002 à 13:03:17  profilanswer
 

n°226686
HelloWorld
Salut tout le monde!
Posté le 11-10-2002 à 13:25:10  profilanswer
 

Je suis perso absolument pas pour cette solution.
C'est du bisouillage.
D'abord ca risque de merdouiller un jour (si entre le moment ou le screenshot a ete pris et le moment ou tu le recuperes du presse papier autre chose est fouttu dans le presse papier) et surtout si le mec a mis quelque chose dans le presse papier tu lui ecrase.
Pour moi, c'est du bidouillage.
 
Ce code a ete malheuresement mainte fois utilise, en particulier en VB, comme plein d'autres soit disant super algos qui sont de la programmation cradingue (vbfrance est pas mal pour ce genre de code).
 
Voici le code MFc pour enregistrer une fenetre donnee dans un fichier BMP donné :http://www.codeguru.com/bitmap/window_to_file.shtml
 
Ce code est selon moi la bonne marche a suivre :
creer un bitmap a partir du DC de la fenetre
 
Reste a fournir a cette fonction le handle sur la fenetre racine (desktop window)
Pour se faire, la fonction GetDesktopWindow devrait t'aider.
 
Par contre je ne connais pas MFC et je ne peux pas te dire comment convertir ce handle en CWnd ...
 
 


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°226937
taureau
Posté le 11-10-2002 à 17:17:39  profilanswer
 

HelloWorld a écrit a écrit :

Je suis perso absolument pas pour cette solution.
C'est du bisouillage.
D'abord ca risque de merdouiller un jour (si entre le moment ou le screenshot a ete pris et le moment ou tu le recuperes du presse papier autre chose est fouttu dans le presse papier) et surtout si le mec a mis quelque chose dans le presse papier tu lui ecrase.
Pour moi, c'est du bidouillage.
 
Ce code a ete malheuresement mainte fois utilise, en particulier en VB, comme plein d'autres soit disant super algos qui sont de la programmation cradingue (vbfrance est pas mal pour ce genre de code).
 
Voici le code MFc pour enregistrer une fenetre donnee dans un fichier BMP donné :http://www.codeguru.com/bitmap/window_to_file.shtml
 
Ce code est selon moi la bonne marche a suivre :
creer un bitmap a partir du DC de la fenetre
 
Reste a fournir a cette fonction le handle sur la fenetre racine (desktop window)
Pour se faire, la fonction GetDesktopWindow devrait t'aider.
 
Par contre je ne connais pas MFC et je ne peux pas te dire comment convertir ce handle en CWnd ...




 
oui c du bidouillage c juste l'équivalent de la pression sur la touche Impr écran et franchement y a vraiment peut de chance (aucune ?) pour que tu te retrouves avec autre chose dans le presse-papier que la capture que du vient de faire  :D  
 
et tu peux aussi tester avant si le presse-papiers contient une image pour la sauvegarder puis la remettre après si tu veux faire propre  :D  
 
ceci dit oui bien sur c plus mieux de passer par la méthode que tu indiques...sauf qu'avec cette bidouille la copie est automatiquement dans le presse-papiers ce qui peut aussi etre un plus pour l'utilisateur...
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [C++] comment faire une copie d'ecran en C++ sous visual

 

Sujets relatifs
visual basic...Visual C++ et version de SP ?
visual basique c bien en language orienter objet ?[Visual C] Recuperation de fichier par CInternetFile ... a l'aide : (
programmation d'impression avec visual basic 6[Visual C++]Desactiver ou controler les boutons systemes d une fenetre
[VC++] qui a deja utiliser visual c+ de microsftManipulation des dates en visual C++
[VISUAL C++] difference d execution entre mode debug et releaseLa copie de tableau facile, a portée de main ?
Plus de sujets relatifs à : [C++] comment faire une copie d'ecran en C++ sous visual


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR