J'ai un petit souci avec la fonction VersPressePapier (ou alors est-ce
le champ image)
J'ai besoin d'envoyer une image physique au presse papier.
Pour cela, je la charge dans un champ image caché, et je l'envoie au
presse papier avec un VersPressePapier.
Le pb c'est que quelle que soit la profondeur de l'image (ici en
l'occurrence 2 bits, donc ridicule en taille), ca atterrit dans le
presse papier en 24 bits, et ça prend donc une mémoire phénoménale.
Je crois que le problème est là. La fonction VersPressePapier n'attend pas une chaine d'octets mais un champ image. Il faut que tu repasses ta chaine d'octet dans le champ image (ou un autre) après avoir appliqué la transformation.
(pour l'API c'est pareil, le paramètre passé SetClipBoardData est un handle sur une structure BITMAP et non un pointeur sur ta chaine d'octet) http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/bitmaps_2h6a.asp
A+
-- Romain PETIT http://cerbermail.com/?IJmancZl88 (cliquez sur le lien ci-dessus pour me contacter en privé)
Je crois que le problème est là.
La fonction VersPressePapier n'attend pas une chaine d'octets mais un
champ image.
Il faut que tu repasses ta chaine d'octet dans le champ image (ou un
autre) après avoir appliqué la transformation.
(pour l'API c'est pareil, le paramètre passé SetClipBoardData est un
handle sur une structure BITMAP et non un pointeur sur ta chaine
d'octet)
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/bitmaps_2h6a.asp
A+
--
Romain PETIT
http://cerbermail.com/?IJmancZl88
(cliquez sur le lien ci-dessus pour me contacter en privé)
Je crois que le problème est là. La fonction VersPressePapier n'attend pas une chaine d'octets mais un champ image. Il faut que tu repasses ta chaine d'octet dans le champ image (ou un autre) après avoir appliqué la transformation.
(pour l'API c'est pareil, le paramètre passé SetClipBoardData est un handle sur une structure BITMAP et non un pointeur sur ta chaine d'octet) http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/bitmaps_2h6a.asp
A+
-- Romain PETIT http://cerbermail.com/?IJmancZl88 (cliquez sur le lien ci-dessus pour me contacter en privé)
Romain PETIT
Dans son message précédent, Romain PETIT a écrit :
Je crois que le problème est là.
Ah ben non, on a toujours une image en 24 bits...
-- Romain PETIT http://cerbermail.com/?IJmancZl88 (cliquez sur le lien ci-dessus pour me contacter en privé)
Dans son message précédent, Romain PETIT a écrit :
Je crois que le problème est là.
Ah ben non, on a toujours une image en 24 bits...
--
Romain PETIT
http://cerbermail.com/?IJmancZl88
(cliquez sur le lien ci-dessus pour me contacter en privé)
Dans son message précédent, Romain PETIT a écrit :
Je crois que le problème est là.
Ah ben non, on a toujours une image en 24 bits...
-- Romain PETIT http://cerbermail.com/?IJmancZl88 (cliquez sur le lien ci-dessus pour me contacter en privé)
Gilles G.
In article , says...
Gilles G. a formulé la demande :
chImage=dSauveImageBMP(ImPP,enMémoire,0) VersPressePapier(chImage) Je crois que le problème est là. La fonction VersPressePapier n'attend pas une chaine d'octets mais un champ image. Il faut que tu repasses ta chaine d'octet dans le champ image (ou un autre) après avoir appliqué la transformation. chImage=dSauveImageBMP(ImPP,enMémoire,0) ImPP = chImage VersPressePapier(ImPP)
Oui mais non. J'essayais cette entourloupe justement parce que VersPressePapier a la facheuse tendance de copier vers le presse papier l'image avec la profondeur de l'écran.
Je charge dans mon champ image une pic sur 2 bits de profondeur, autant dire que ça ne pèse rien. Quand elle se retrouve en 32 bits dans le presse papier, c'est une autre paire de manche.
Là je tourne en rond.
Si on fait un "copier" depuis Paint Shop Pro par exemple, c'est avec la profondeur correcte que l'opération est réalisée. C'est pour ça que je cherchais à transformer l'image en chaine mémoire avec un nombre de bits peu élevés, dans l'espoir que le transfert vers le presse papier fonctionnerait.
Hélas, si ce sont bien les données d'une image qui sont dans le presse papier, l'indicateur de format du presse papier est à texte et les logiciels de dessins refusent donc le contenu.
Bref, je suis bloqué ;)
In article <mesnews.9d437d42.5b1983ed.609.2191@Signature.fin>,
VoirM@Signature.fin says...
Gilles G. a formulé la demande :
chImage=dSauveImageBMP(ImPP,enMémoire,0)
VersPressePapier(chImage)
Je crois que le problème est là.
La fonction VersPressePapier n'attend pas une chaine d'octets mais un
champ image.
Il faut que tu repasses ta chaine d'octet dans le champ image (ou un
autre) après avoir appliqué la transformation.
chImage=dSauveImageBMP(ImPP,enMémoire,0)
ImPP = chImage
VersPressePapier(ImPP)
Oui mais non.
J'essayais cette entourloupe justement parce que VersPressePapier a la
facheuse tendance de copier vers le presse papier l'image avec la
profondeur de l'écran.
Je charge dans mon champ image une pic sur 2 bits de profondeur, autant
dire que ça ne pèse rien.
Quand elle se retrouve en 32 bits dans le presse papier, c'est une autre
paire de manche.
Là je tourne en rond.
Si on fait un "copier" depuis Paint Shop Pro par exemple, c'est avec la
profondeur correcte que l'opération est réalisée. C'est pour ça que je
cherchais à transformer l'image en chaine mémoire avec un nombre de bits
peu élevés, dans l'espoir que le transfert vers le presse papier
fonctionnerait.
Hélas, si ce sont bien les données d'une image qui sont dans le presse
papier, l'indicateur de format du presse papier est à texte et les
logiciels de dessins refusent donc le contenu.
chImage=dSauveImageBMP(ImPP,enMémoire,0) VersPressePapier(chImage) Je crois que le problème est là. La fonction VersPressePapier n'attend pas une chaine d'octets mais un champ image. Il faut que tu repasses ta chaine d'octet dans le champ image (ou un autre) après avoir appliqué la transformation. chImage=dSauveImageBMP(ImPP,enMémoire,0) ImPP = chImage VersPressePapier(ImPP)
Oui mais non. J'essayais cette entourloupe justement parce que VersPressePapier a la facheuse tendance de copier vers le presse papier l'image avec la profondeur de l'écran.
Je charge dans mon champ image une pic sur 2 bits de profondeur, autant dire que ça ne pèse rien. Quand elle se retrouve en 32 bits dans le presse papier, c'est une autre paire de manche.
Là je tourne en rond.
Si on fait un "copier" depuis Paint Shop Pro par exemple, c'est avec la profondeur correcte que l'opération est réalisée. C'est pour ça que je cherchais à transformer l'image en chaine mémoire avec un nombre de bits peu élevés, dans l'espoir que le transfert vers le presse papier fonctionnerait.
Hélas, si ce sont bien les données d'une image qui sont dans le presse papier, l'indicateur de format du presse papier est à texte et les logiciels de dessins refusent donc le contenu.