Pb CBitmap Screenshot Save....

Signaler
Messages postés
20
Date d'inscription
lundi 27 mars 2006
Statut
Membre
Dernière intervention
18 janvier 2009
-
Messages postés
20
Date d'inscription
lundi 27 mars 2006
Statut
Membre
Dernière intervention
18 janvier 2009
-
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();
}
A voir également:

4 réponses

Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
27
Messages postés
20
Date d'inscription
lundi 27 mars 2006
Statut
Membre
Dernière intervention
18 janvier 2009

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 ???
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
27
GetSafeHwnd() ou truc de ce genre.

ciao...
BruNews, MVP VC++
Messages postés
20
Date d'inscription
lundi 27 mars 2006
Statut
Membre
Dernière intervention
18 janvier 2009

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();