normalement avec cette fonction j'ai un HBITMAP correspondant a tout mon
écran. ok ?
donc je regarde la doc et je vois :
typedef struct tagBITMAP { // bm
LONG bmType;
LONG bmWidth;
LONG bmHeight;
LONG bmWidthBytes;
WORD bmPlanes;
WORD bmBitsPixel;
LPVOID bmBits;
} BITMAP;
je vois également dans msdn qu'avant (dans 'storing an image') de créer et
remplir le fichier bmp, ils remplissent la BITMAPINFO structure...
donc ça serait cette structure qui contient les données brutes, les pixels
(RGBQUAD), dont j'ai besoin pour faire un fichier jpeg (les rows, ou scan
lines) c'est ça ?
où est-ce que je peux y avoir accès avec mon HBITMAP initial ? si oui
comment ?
merci a vous, si vous pouvez m'éclaircir un peu sur ce sujet....
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Arnaud Debaene
Nicolas aunai wrote:
salut
Bonjour.
<snip>
typedef struct tagBITMAP { // bm LONG bmType; LONG bmWidth; LONG bmHeight; LONG bmWidthBytes; WORD bmPlanes; WORD bmBitsPixel; LPVOID bmBits; } BITMAP;
Ca c'est la structure servant à représenter un bitmap en mémoire, pas sur disque. Le pointeur bmBits pointe sur les données, mais on ne connait pas leur format exact (ca dépend du DC).
je vois également dans msdn qu'avant (dans 'storing an image') de créer et remplir le fichier bmp, ils remplissent la BITMAPINFO structure...
Ca c'est une représentation (inexacte, car la taille réelle de bmiColors dépend des données dans bmiHeader) du début d'un fichier .bmp. Voir l'article "Bitmap Storage" ainsi que la structure BITMAPINFOHEADER dans MSDN pour une description assez claire du schmilblick.
donc ça serait cette structure qui contient les données brutes, les pixels (RGBQUAD), dont j'ai besoin pour faire un fichier jpeg (les rows, ou scan lines) c'est ça ?
Pas vraiement, les données brutes sont après le BITMAPINFO dans le fichier. Le tableau de RGBQUAD (quand il existe) est la table des couleurs du bitmap.
où est-ce que je peux y avoir accès avec mon HBITMAP initial ? si oui comment ?
Un HBITMAP ne permet pas d'avoir accès aux bits de l'image brut de fonderie dans un format connu. Pour cela, il faut créer un DIB (Device Independant Bitmap) avec GetDIBits, qui convertit les données dans un format standardisé. Voir l'article "DIBS and their use" pour une explication détaillée du fonctionnement de cette API. On sauvegarde des DIBS dans les fichiers .bmp, pas les HBITMAP (car les HBITMAP sont dépendants du DC sur lequel ils sont représentés).
Tu veux faire quoi exactement avec ta copie d'écran? La sauvegarder en .bmp? La passer à une librairie qui attend un format particulier?
Arnaud
Nicolas aunai wrote:
salut
Bonjour.
<snip>
typedef struct tagBITMAP { // bm
LONG bmType;
LONG bmWidth;
LONG bmHeight;
LONG bmWidthBytes;
WORD bmPlanes;
WORD bmBitsPixel;
LPVOID bmBits;
} BITMAP;
Ca c'est la structure servant à représenter un bitmap en mémoire, pas sur
disque. Le pointeur bmBits pointe sur les données, mais on ne connait pas
leur format exact (ca dépend du DC).
je vois également dans msdn qu'avant (dans 'storing an image') de
créer et remplir le fichier bmp, ils remplissent la BITMAPINFO
structure...
Ca c'est une représentation (inexacte, car la taille réelle de bmiColors
dépend des données dans bmiHeader) du début d'un fichier .bmp. Voir
l'article "Bitmap Storage" ainsi que la structure BITMAPINFOHEADER dans MSDN
pour une description assez claire du schmilblick.
donc ça serait cette structure qui contient les données brutes, les
pixels (RGBQUAD), dont j'ai besoin pour faire un fichier jpeg (les
rows, ou scan lines) c'est ça ?
Pas vraiement, les données brutes sont après le BITMAPINFO dans le fichier.
Le tableau de RGBQUAD (quand il existe) est la table des couleurs du bitmap.
où est-ce que je peux y avoir accès avec mon HBITMAP initial ? si oui
comment ?
Un HBITMAP ne permet pas d'avoir accès aux bits de l'image brut de fonderie
dans un format connu. Pour cela, il faut créer un DIB (Device Independant
Bitmap) avec GetDIBits, qui convertit les données dans un format
standardisé. Voir l'article "DIBS and their use" pour une explication
détaillée du fonctionnement de cette API. On sauvegarde des DIBS dans les
fichiers .bmp, pas les HBITMAP (car les HBITMAP sont dépendants du DC sur
lequel ils sont représentés).
Tu veux faire quoi exactement avec ta copie d'écran? La sauvegarder en .bmp?
La passer à une librairie qui attend un format particulier?
typedef struct tagBITMAP { // bm LONG bmType; LONG bmWidth; LONG bmHeight; LONG bmWidthBytes; WORD bmPlanes; WORD bmBitsPixel; LPVOID bmBits; } BITMAP;
Ca c'est la structure servant à représenter un bitmap en mémoire, pas sur disque. Le pointeur bmBits pointe sur les données, mais on ne connait pas leur format exact (ca dépend du DC).
je vois également dans msdn qu'avant (dans 'storing an image') de créer et remplir le fichier bmp, ils remplissent la BITMAPINFO structure...
Ca c'est une représentation (inexacte, car la taille réelle de bmiColors dépend des données dans bmiHeader) du début d'un fichier .bmp. Voir l'article "Bitmap Storage" ainsi que la structure BITMAPINFOHEADER dans MSDN pour une description assez claire du schmilblick.
donc ça serait cette structure qui contient les données brutes, les pixels (RGBQUAD), dont j'ai besoin pour faire un fichier jpeg (les rows, ou scan lines) c'est ça ?
Pas vraiement, les données brutes sont après le BITMAPINFO dans le fichier. Le tableau de RGBQUAD (quand il existe) est la table des couleurs du bitmap.
où est-ce que je peux y avoir accès avec mon HBITMAP initial ? si oui comment ?
Un HBITMAP ne permet pas d'avoir accès aux bits de l'image brut de fonderie dans un format connu. Pour cela, il faut créer un DIB (Device Independant Bitmap) avec GetDIBits, qui convertit les données dans un format standardisé. Voir l'article "DIBS and their use" pour une explication détaillée du fonctionnement de cette API. On sauvegarde des DIBS dans les fichiers .bmp, pas les HBITMAP (car les HBITMAP sont dépendants du DC sur lequel ils sont représentés).
Tu veux faire quoi exactement avec ta copie d'écran? La sauvegarder en .bmp? La passer à une librairie qui attend un format particulier?
Arnaud
Nicolas aunai
Christian ASTOR a écrit:
Non, pas Ok. Ce morceau de code est tout pourri :-(
ok, peux-tu me dire pourquoi ?
Il faudrait lire le Petzold où toutes les bases sur DDB & DIB sont expliquées.
je vais regarder !
Non, mais c'est pourtant clair
pas tant que ça malheureusement....
ds ce même article ("storing an image") : GetDIBits() (+ vielle KB Q80080 qui reprend la même chose)
si qqn pouvait me donner juste la marche a suivre, avec l'ordre des fonctions a appeler, pour faire quoi etc.... ça serait sympa... et peut-etre que ça me sortirai de la mer** dans laquelle je suis !
si qqn pouvait me donner juste la marche a suivre, avec l'ordre des
fonctions a appeler, pour faire quoi etc.... ça serait sympa... et peut-etre
que ça me sortirai de la mer** dans laquelle je suis !
si qqn pouvait me donner juste la marche a suivre, avec l'ordre des fonctions a appeler, pour faire quoi etc.... ça serait sympa... et peut-etre que ça me sortirai de la mer** dans laquelle je suis !
décidément le Petzold est bien l'un des bouquins les plus chiant qu'il m'ait été donné de lire... non seulement j'y comprend pas grand chose, mais les codes exemples font 3km de long, et c super pas motivant !
Pourtant il fait office de référence dans le domaine, peut-être est-ce plutôt parce que c'est la programmation Win32 qui est "chiante" (au moins pour certains)? Si tu veux mon avis (et même si tu le veux pas je le donne quand même ;) tu cherches à pisser un programme, sans vouloir comprendre ce qu'il y'a derrière, comment ça fonctionne, comment ça a été penser, et pourqoi ça fonctionne comme cela... je crois que tu te fais des illusions sur la facilité d'apprentissage de Win32... ce n'est pas compliqué, mais ça bouffe du temps. Comprendre la gestion des bitmap en Win32 m'a pris beaucoup de temps, et je n'en ai pas encore compris toutes les subtilités, par contre quand tu fouilles un peu, tu repères évidemment quelques lourdeurs, mais tu vois aussi que ça fonctionne relativement bien et que c'est très souple... Cherche un peu, lis de la doc, et peut-être... ne cherche pas à programmer trop vite ce que tu crois avoir compris.
Concernant la qualité de ton code, pas le courage de détaille, commence déjà par de demander quand sont libérés tes objets et ta mémoire.
décidément le Petzold est bien l'un des bouquins les plus chiant qu'il
m'ait été donné de lire... non seulement j'y comprend pas grand chose,
mais les codes exemples font 3km de long, et c super pas motivant !
Pourtant il fait office de référence dans le domaine, peut-être est-ce
plutôt parce que c'est la programmation Win32 qui est "chiante" (au
moins pour certains)? Si tu veux mon avis (et même si tu le veux pas je
le donne quand même ;) tu cherches à pisser un programme, sans vouloir
comprendre ce qu'il y'a derrière, comment ça fonctionne, comment ça a
été penser, et pourqoi ça fonctionne comme cela... je crois que tu te
fais des illusions sur la facilité d'apprentissage de Win32... ce n'est
pas compliqué, mais ça bouffe du temps. Comprendre la gestion des
bitmap en Win32 m'a pris beaucoup de temps, et je n'en ai pas encore
compris toutes les subtilités, par contre quand tu fouilles un peu, tu
repères évidemment quelques lourdeurs, mais tu vois aussi que ça
fonctionne relativement bien et que c'est très souple... Cherche un
peu, lis de la doc, et peut-être... ne cherche pas à programmer trop
vite ce que tu crois avoir compris.
Concernant la qualité de ton code, pas le courage de détaille, commence
déjà par de demander quand sont libérés tes objets et ta mémoire.
décidément le Petzold est bien l'un des bouquins les plus chiant qu'il m'ait été donné de lire... non seulement j'y comprend pas grand chose, mais les codes exemples font 3km de long, et c super pas motivant !
Pourtant il fait office de référence dans le domaine, peut-être est-ce plutôt parce que c'est la programmation Win32 qui est "chiante" (au moins pour certains)? Si tu veux mon avis (et même si tu le veux pas je le donne quand même ;) tu cherches à pisser un programme, sans vouloir comprendre ce qu'il y'a derrière, comment ça fonctionne, comment ça a été penser, et pourqoi ça fonctionne comme cela... je crois que tu te fais des illusions sur la facilité d'apprentissage de Win32... ce n'est pas compliqué, mais ça bouffe du temps. Comprendre la gestion des bitmap en Win32 m'a pris beaucoup de temps, et je n'en ai pas encore compris toutes les subtilités, par contre quand tu fouilles un peu, tu repères évidemment quelques lourdeurs, mais tu vois aussi que ça fonctionne relativement bien et que c'est très souple... Cherche un peu, lis de la doc, et peut-être... ne cherche pas à programmer trop vite ce que tu crois avoir compris.
Concernant la qualité de ton code, pas le courage de détaille, commence déjà par de demander quand sont libérés tes objets et ta mémoire.
In 'fr.comp.os.ms-windows.programmation', "Nicolas aunai" @free.fr> wrote:
décidément le Petzold est bien l'un des bouquins les plus chiant qu'il m'ait été donné de lire... non seulement j'y comprend pas grand chose, mais les codes exemples font 3km de long, et c super pas motivant !
Bienvenu dans le monde merveilleux de la programmation Windows!
-- -ed- [remove YOURBRA before answering me] The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html <blank line> FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/
In 'fr.comp.os.ms-windows.programmation', "Nicolas aunai"
<nicolas.aunai@nospam@free.fr> wrote:
décidément le Petzold est bien l'un des bouquins les plus chiant qu'il
m'ait été donné de lire... non seulement j'y comprend pas grand chose,
mais les codes exemples font 3km de long, et c super pas motivant !
Bienvenu dans le monde merveilleux de la programmation Windows!
--
-ed- emdelYOURBRA@noos.fr [remove YOURBRA before answering me]
The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html
<blank line>
FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/
In 'fr.comp.os.ms-windows.programmation', "Nicolas aunai" @free.fr> wrote:
décidément le Petzold est bien l'un des bouquins les plus chiant qu'il m'ait été donné de lire... non seulement j'y comprend pas grand chose, mais les codes exemples font 3km de long, et c super pas motivant !
Bienvenu dans le monde merveilleux de la programmation Windows!
-- -ed- [remove YOURBRA before answering me] The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html <blank line> FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/
Nicolas aunai
Emmanuel Delahaye a écrit:
Bienvenu dans le monde merveilleux de la programmation Windows!
j'suis désolé mais qd par exemple le type tente d'expliquer au lecteur les fonctions pour manipuler les bitmap, il est pas obligé de nous faire chier avec toute la gestion d'une fenetre etc dans le même code.... faut vraiment etre taré quoi, ça ne sert qu'à compliquer le truc.
Bienvenu dans le monde merveilleux de la programmation Windows!
j'suis désolé mais qd par exemple le type tente d'expliquer au lecteur les
fonctions pour manipuler les bitmap, il est pas obligé de nous faire chier
avec toute la gestion d'une fenetre etc dans le même code.... faut vraiment
etre taré quoi, ça ne sert qu'à compliquer le truc.
Bienvenu dans le monde merveilleux de la programmation Windows!
j'suis désolé mais qd par exemple le type tente d'expliquer au lecteur les fonctions pour manipuler les bitmap, il est pas obligé de nous faire chier avec toute la gestion d'une fenetre etc dans le même code.... faut vraiment etre taré quoi, ça ne sert qu'à compliquer le truc.
Pourtant il fait office de référence dans le domaine, peut-être est-ce plutôt parce que c'est la programmation Win32 qui est "chiante" (au moins pour certains)? Si tu veux mon avis (et même si tu le veux pas je le donne quand même ;) tu cherches à pisser un programme, sans vouloir comprendre ce qu'il y'a derrière, comment ça fonctionne, comment ça a été penser, et pourqoi ça fonctionne comme cela...
oui je cherche a faire le programme vite fait... par contre ton "sans vouloir" me gêne un peu.... c pas que je veux pas, c que ya certaines chose que je comprend pas... et je vais qd meme pas me taper 3 semaines de théorie sur les bitmaps qd même...
je crois que tu te fais des illusions sur la facilité d'apprentissage de Win32... ce n'est pas compliqué, mais ça bouffe du temps. Comprendre la gestion des bitmap en Win32 m'a pris beaucoup de temps, et je n'en ai pas encore compris toutes les subtilités, par contre quand tu fouilles un peu, tu repères évidemment quelques lourdeurs, mais tu vois aussi que ça fonctionne relativement bien et que c'est très souple... Cherche un peu, lis de la doc, et peut-être... ne cherche pas à programmer trop vite ce que tu crois avoir compris.
mouais, c des conseils de vieux sage ça... mais moi homme moderne toujours pressé !
Concernant la qualité de ton code, pas le courage de détaille, commence déjà par de demander quand sont libérés tes objets et ta mémoire.
ça doit etre encore de la merde je suppose de toute façon :)
Pourtant il fait office de référence dans le domaine, peut-être est-ce
plutôt parce que c'est la programmation Win32 qui est "chiante" (au
moins pour certains)? Si tu veux mon avis (et même si tu le veux pas
je le donne quand même ;) tu cherches à pisser un programme, sans
vouloir comprendre ce qu'il y'a derrière, comment ça fonctionne,
comment ça a été penser, et pourqoi ça fonctionne comme cela...
oui je cherche a faire le programme vite fait... par contre ton "sans
vouloir" me gêne un peu.... c pas que je veux pas, c que ya certaines chose
que je comprend pas... et je vais qd meme pas me taper 3 semaines de théorie
sur les bitmaps qd même...
je
crois que tu te fais des illusions sur la facilité d'apprentissage de
Win32... ce n'est pas compliqué, mais ça bouffe du temps. Comprendre
la gestion des bitmap en Win32 m'a pris beaucoup de temps, et je n'en
ai pas encore compris toutes les subtilités, par contre quand tu
fouilles un peu, tu repères évidemment quelques lourdeurs, mais tu
vois aussi que ça fonctionne relativement bien et que c'est très
souple... Cherche un peu, lis de la doc, et peut-être... ne cherche
pas à programmer trop vite ce que tu crois avoir compris.
mouais, c des conseils de vieux sage ça... mais moi homme moderne toujours
pressé !
Concernant la qualité de ton code, pas le courage de détaille,
commence déjà par de demander quand sont libérés tes objets et ta
mémoire.
ça doit etre encore de la merde je suppose de toute façon :)
Pourtant il fait office de référence dans le domaine, peut-être est-ce plutôt parce que c'est la programmation Win32 qui est "chiante" (au moins pour certains)? Si tu veux mon avis (et même si tu le veux pas je le donne quand même ;) tu cherches à pisser un programme, sans vouloir comprendre ce qu'il y'a derrière, comment ça fonctionne, comment ça a été penser, et pourqoi ça fonctionne comme cela...
oui je cherche a faire le programme vite fait... par contre ton "sans vouloir" me gêne un peu.... c pas que je veux pas, c que ya certaines chose que je comprend pas... et je vais qd meme pas me taper 3 semaines de théorie sur les bitmaps qd même...
je crois que tu te fais des illusions sur la facilité d'apprentissage de Win32... ce n'est pas compliqué, mais ça bouffe du temps. Comprendre la gestion des bitmap en Win32 m'a pris beaucoup de temps, et je n'en ai pas encore compris toutes les subtilités, par contre quand tu fouilles un peu, tu repères évidemment quelques lourdeurs, mais tu vois aussi que ça fonctionne relativement bien et que c'est très souple... Cherche un peu, lis de la doc, et peut-être... ne cherche pas à programmer trop vite ce que tu crois avoir compris.
mouais, c des conseils de vieux sage ça... mais moi homme moderne toujours pressé !
Concernant la qualité de ton code, pas le courage de détaille, commence déjà par de demander quand sont libérés tes objets et ta mémoire.
ça doit etre encore de la merde je suppose de toute façon :)
bon j'ai bouffé du petzold, j'ai également appris pas mal de choses... apparement pas assez car j'ai toujours une erreur que je comprend pas, en effet, CreateDIBSection me retourne un handle null, sans que je puisse en piger la raison, pourtant j'ai fais quasiment pareil que dans le petzold... voyez vous une erreur ?
bon j'ai bouffé du petzold, j'ai également appris pas mal de choses...
apparement pas assez car j'ai toujours une erreur que je comprend pas, en
effet, CreateDIBSection me retourne un handle null, sans que je puisse en
piger la raison, pourtant j'ai fais quasiment pareil que dans le petzold...
voyez vous une erreur ?
bon j'ai bouffé du petzold, j'ai également appris pas mal de choses... apparement pas assez car j'ai toujours une erreur que je comprend pas, en effet, CreateDIBSection me retourne un handle null, sans que je puisse en piger la raison, pourtant j'ai fais quasiment pareil que dans le petzold... voyez vous une erreur ?
décidément le Petzold est bien l'un des bouquins les plus chiant qu'il m'ait été donné de lire... non seulement j'y comprend pas grand chose, mais les codes exemples font 3km de long, et c super pas motivant !
Je cherche à acheter un Petzold depuis un bail, alors te plaints pas ;) Sinon, je profite de l'instant pour demander si personne n'aurait un Petzold à vendre.
-- Posted via Mailgate.ORG Server - http://www.Mailgate.ORG
"Nicolas aunai"
décidément le Petzold est bien l'un des bouquins les plus chiant qu'il m'ait
été donné de lire... non seulement j'y comprend pas grand chose, mais les
codes exemples font 3km de long, et c super pas motivant !
Je cherche à acheter un Petzold depuis un bail, alors te plaints pas ;)
Sinon, je profite de l'instant pour demander si personne n'aurait un
Petzold à vendre.
--
Posted via Mailgate.ORG Server - http://www.Mailgate.ORG
décidément le Petzold est bien l'un des bouquins les plus chiant qu'il m'ait été donné de lire... non seulement j'y comprend pas grand chose, mais les codes exemples font 3km de long, et c super pas motivant !
Je cherche à acheter un Petzold depuis un bail, alors te plaints pas ;) Sinon, je profite de l'instant pour demander si personne n'aurait un Petzold à vendre.
-- Posted via Mailgate.ORG Server - http://www.Mailgate.ORG