HWND TO BMP FILE (2) (WIN32)

garslouche Messages postés 583 Date d'inscription mardi 26 novembre 2002 Statut Membre Dernière intervention 29 mai 2015 - 9 sept. 2003 à 15:37
 coderj - 8 déc. 2013 à 16:11
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/11139-hwnd-to-bmp-file-2-win32

nice
samuelbrie Messages postés 35 Date d'inscription lundi 4 octobre 2004 Statut Membre Dernière intervention 20 avril 2005
15 avril 2005 à 19:47
Tu ne dois pas donner le bon handle
martinbrochet Messages postés 33 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 25 mai 2005
15 avril 2005 à 19:31
en ce qui me concerne n'arrivant pas à capturer une image depuis un stream video j'ai decide d'utiliser ton code de capture d'ecran oui c'est pas tres propre mais bon le probleme c'est que je récupère une image noire

une idée pourquoi ??
samuelbrie Messages postés 35 Date d'inscription lundi 4 octobre 2004 Statut Membre Dernière intervention 20 avril 2005
16 nov. 2004 à 11:24
Merci beaucoup pour ton aide, j'ai réussit avec ton code. Je suis désolé de t'avoir dérangé, mais tu m'as sauvé mon projet

Allez en plus je te mets un 10/10

Mon code
PImageb = (unsigned char*) malloc((rct.right * rct.bottom * rct.top) >> 3);
if(Fichier.Open("c:\\toto.bmp",CFile::modeWrite|CFile::modeCreate))
{ Fichier.Write(&fileheader,sizeof(BITMAPFILEHEADER));
Fichier.Write(&bmpinfo.bmiHeader,sizeof(BITMAPINFOHEADER));
PImageb=(unsigned char)pBits;
Fichier.Write(PImageb,(rct.right * rct.bottom * rct.top) >> 3);
Fichier.Close();
}
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
8 nov. 2004 à 14:16
Passe en message prive une adresse mail, je t'envoie un mini prog de test qui modifie les valeurs de pBits, tu verras qu'on y accede come on veut. Je les replace direct dans pBits mais on pourrait aussi bien les mettre dans un autre tableau, serait idem. J'enregistre donc une image modifiee.
Apres ça faudra t'arranger car j'ai vraiment peu de temps dispo en ce moment.
samuelbrie Messages postés 35 Date d'inscription lundi 4 octobre 2004 Statut Membre Dernière intervention 20 avril 2005
8 nov. 2004 à 12:25
En fait je le modifi, mais là c'était pour l'exemple et voir si je pouvais.
pBits -> C'est bien l'adresse de la première valeur, mais je n'arrive pas à recopier l'image dans mon tableau.
Tu sais comment je pourrais faire?
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
5 nov. 2004 à 21:05
Set a quoi de recopier dans un autre buffer vu que tu ne modifies rien ? Je ferais direct un WriteFile depuis pBits en ce cas, non ?
samuelbrie Messages postés 35 Date d'inscription lundi 4 octobre 2004 Statut Membre Dernière intervention 20 avril 2005
5 nov. 2004 à 20:46
J'ai essayé ceci mais je n'arrive pas a avoir la valeur de l'adresse.

PImageb = (unsigned char*) malloc((rct.right * rct.bottom * rct.top) >> 3);
if(Fichier.Open("c:\\toto.bmp",CFile::modeWrite|CFile::modeCreate))
{ Fichier.Write(&fileheader,sizeof(BITMAPFILEHEADER));
Fichier.Write(&bmpinfo.bmiHeader,sizeof(BITMAPINFOHEADER));
for(int i=0;i<=(rct.right * rct.bottom * rct.top) >> 3;i++)
{
PImageb[i]=(unsigned char)(&pBits+i);
}
Fichier.Write(PImageb,(rct.right * rct.bottom * rct.top) >> 3);
Fichier.Close();
}

merci de ton aide.
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
5 nov. 2004 à 20:12
On cast un type de pointeur vers nimporte quel autre type de pointeur puisque ce n'est finalement qu'un 32bits referençant une adresse, faudra juste etre coherent dans ton traitement ulterieur.

BYTE *puchr; // ton 'unsigned char*'
puchr = pbits; // on lui donne l'adresse ou doit pointer
samuelbrie Messages postés 35 Date d'inscription lundi 4 octobre 2004 Statut Membre Dernière intervention 20 avril 2005
5 nov. 2004 à 20:02
void *pBits -> je ne comprends pas trop comment je peux le passer en "unsigned char *", car je doit modifier les données.

Merci encore pour ton aide précieuse.
samuelbrie Messages postés 35 Date d'inscription lundi 4 octobre 2004 Statut Membre Dernière intervention 20 avril 2005
5 nov. 2004 à 18:03
Tu es trop fort!!!!Merci beaucoup

J'ouvre un fichier avi dans une fenête, je défile frame par frame pour ajouter des points de couleur sur l'image grâce à ton code en MFC.

Maintenant je vais essayer de passer directement par les données du fichier avi. Tu t'y connait, car j'arrive à lire l'entete et apres c'est plus foue pour les frames.

Merci encore
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
5 nov. 2004 à 16:12
Qu'est-ce qui ne va pas ? surement conflit avec les noms de fonctions MFC, il te faut prefixer avec '::' les appels directs API.
samuelbrie Messages postés 35 Date d'inscription lundi 4 octobre 2004 Statut Membre Dernière intervention 20 avril 2005
5 nov. 2004 à 15:57
Je cherche un moyen de mettre ton code dans mon apply en MFC et ca marche pas stp aide moi, je doit récupérer les frames d'un avi.
sirdarkwin Messages postés 12 Date d'inscription vendredi 20 février 2004 Statut Membre Dernière intervention 4 février 2010
3 mars 2004 à 22:04
Le programme marche très bien...
Dommage pour le peu de commentaires.
Par contre je ne comprend pas le fait que si on change les dimensions du rect, le bmp prennne en compte les éléments externes à la fenêtre et non pas le reste du hdc qui ne s'affiche pas!
garslouche Messages postés 583 Date d'inscription mardi 26 novembre 2002 Statut Membre Dernière intervention 29 mai 2015 1
9 sept. 2003 à 15:37
Ton code est surement très bien mais pas commenté !!! Une troisième version ?
Rejoignez-nous