Pb CBitmap Screenshot Save....

cs_kididouille Messages postés 20 Date d'inscription lundi 27 mars 2006 Statut Membre Dernière intervention 18 janvier 2009 - 31 mai 2006 à 08:53
cs_kididouille Messages postés 20 Date d'inscription lundi 27 mars 2006 Statut Membre Dernière intervention 18 janvier 2009 - 2 juin 2006 à 08:50
Quelqu'un comprend il la classe CBitmap?
J'ai une boite de dialogue que je souhaiterai enregistrer en *.bmp
J'ai réussi la partie où il faut faire le screenshot et le mettre dans un CBitmap *pMonImage
Et c'est à partir de là que je n'y arrive plus
Je pensai qu'un Fichier.Write(pBmp,sizeof(CBitmap)) ou quelque chose dans ce genre pourrait marché. mais je n'arrive pas à enregistrer mon image, récupérer la taille de l'image
Faut il remplir tous les entetes d'un bitmap? Existe t il des fonctions qui le font toutes seules?
Help!!!

void CTab::OnSave() //Fonction Save
{
 // TODO: Add your control notification handler code here
 UpdateData(TRUE);
 
 CBitmap *pBmp=CopyWindowToBitmap(this,true);  // la ca marche


 CFileDialog FileData(FALSE,"*.bmp",NULL,OFN_OVERWRITEPROMPT,"Courbe de la lisse (*.bmp)|*.bmp||",this);
 FileData.DoModal();
 NomFichier=FileData.GetPathName();
 CFile Fichier;


 Fichier.Open(NomFichier,CFile::modeWrite|CFile::modeCreate);
 Fichier.Write(XXXXXXXXXX);      //LA JE NE SAIS PAS QUOI METTRE 
 Fichier.Close();


 pBmp->DeleteObject();
}

4 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
31 mai 2006 à 09:17
0
cs_kididouille Messages postés 20 Date d'inscription lundi 27 mars 2006 Statut Membre Dernière intervention 18 janvier 2009
31 mai 2006 à 11:37
C'est cool cette fonction HwndtoBmpFile
Mais j'ai un problème tout con. J'arrive pas à récuperer le hwnd de ma fenetre
j'ai son id IDD_LISSE son nom en caption "Courbe"
La classe associée a cette fenetre s'appelle CTab.
Qd j'appel ma fenetre a partir de la mère
je crée un CTab MonTab
[MonTab.domodal() pour l'ouvrir]
et je vois qu'il y a un MonTab.m_hwnd dans la liste des var et fonctions proposées.

Mais quand je suis dans la fenetre appelé, là où je veux récuperer le handle,
je peux pa créer un CTab MonTab à l'intérieur de ma classe CTab (logique).
J'ai l'impression qu'il y a des milliers de fonctions pour récuperer l'handle
Je bosse en OpenCV et il y a une fonction cvGetWindowHandle
void* cvGetWindowHandle(const char* name)
qui ne marche pas non plus.
Il n'y a pas moyen de récuperer le handle d'une fenetre a partir de son ID ???
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
31 mai 2006 à 20:24
GetSafeHwnd() ou truc de ce genre.

ciao...
BruNews, MVP VC++
0
cs_kididouille Messages postés 20 Date d'inscription lundi 27 mars 2006 Statut Membre Dernière intervention 18 janvier 2009
2 juin 2006 à 08:50
En fait ta fonction on l'utilise comment?
Je voudrai que ca ouvre une boite "enregistrer sous" on tape le nom et après ce nom va dans ta fonction.mais j'ai des problèmes de cast.
Je voudrai pouvoir mettre mon NomFichier à la place de "Courbe.bmp" mais ton prog attend un char * en deuxième parametre et mon NomFichier est un CString.
La quand je clique sur save, ça m'ouvre la boite je lui donne un chemin et un nom.
Dans le chemin je vais trouver un fichier erroné (avec le nom que je lui ai mis (normal)) et le fichier Courbe.bmp crée par ta fonction qui marche bien. Je ne sais pas si tu vois ce que je veux dire,
Je te mets mon code en dessous:

 CFileDialog FileData(FALSE,"*.bmp",NULL,OFN_OVERWRITEPROMPT,"Courbe de la lisse (*.bmp)|*.bmp||",this);
 FileData.DoModal();
 NomFichier=FileData.GetPathName();


 CFile Fichier; 
 Fichier.Open(NomFichier,CFile::modeWrite|CFile::modeCreate);
 HwndToBmpFile(CTab::m_hWnd,"Courbe.bmp");
 Fichier.Close();
0
Rejoignez-nous