Probleme avec le clipboard et un picture control

Le
user
bonjour j'ai un souci avec le cilpboard

J'ai un bouton dans une boite de dialogue qui me permet de copier le
contenu d'une picture box dans le clipboard
Donc j'ai quelque chose comme ça :

void SendToClipboard(void)
{
HBITMAP hBitmap = NULL;

hBitmap =
(HBITMAP)SendMessage(GetDlgItem(hWnd,IDC_STATIC),STM_GETIMAGE,(WPARAM)
IMAGE_BITMAP,(LPARAM) 0);

if (hBitmap)
{
OpenClipboard(hWnd);
EmptyClipboard();
SetClipboardData(CF_BITMAP, hBitmap);
CloseClipboard();
}
}
Donc cette fonction est appelé a chaque appui sur un bouton
Aucun souci lors du premier appui ( j'ai testé en collant le contenu du
clipboard dans paint ) , par contre si j'appuie une seconde fois sur le
bouton, aucune erreur , les retours des fonctions sont correctes , mais
par contre si je veux copier le contenu dans paint , il me sort une
erreur
Par contre si je recharge une image dans la picture box , je peux a
nouveau faire une copie vers le presse papiers mais si je reappui une
seconde fois sur le bouton , le même message d'erreur réapparait
lorsque je fais un coller dans paint."erreur d'obtention des données
du presse-papiers"

Je ne comprends pas pourquoi avez vous une idée ?
Merci bcp pour votre aide
Questions / Réponses high-tech
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Christian ASTOR
Le #19004991
wrote:

bonjour j'ai un souci avec le cilpboard ...



void SendToClipboard(void)
{
HBITMAP hBitmap = NULL;
hBitmap =
(HBITMAP)SendMessage(GetDlgItem(hWnd,IDC_STATIC),STM_GETIMAGE,(WPARAM)
IMAGE_BITMAP,(LPARAM) 0);



//....



Je ne comprends pas pourquoi avez vous une idée ?
Merci bcp pour votre aide



Il faut copier la bitmap récupéée du Static control, sinon le handle
interne du Static sera détruit la 2ème fois :

HBITMAP hBitmap2 = (HBITMAP)CopyImage (hBitmap, IMAGE_BITMAP, 0, 0,
LR_COPYRETURNORG);

et se servir de hBitmap2

(puis
DeleteObject(hBitmap2);
à la fin )
seb
Le #19016091
Bonsoir, j'essaye et je vous dis ce qu'il en est !!!
Merci pour l'aide quand meme

Christian ASTOR a écrit :
wrote:

bonjour j'ai un souci avec le cilpboard ...



void SendToClipboard(void)
{
HBITMAP hBitmap = NULL;
hBitmap =
(HBITMAP)SendMessage(GetDlgItem(hWnd,IDC_STATIC),STM_GETIMAGE,(WPARAM)
IMAGE_BITMAP,(LPARAM) 0);



//....



Je ne comprends pas pourquoi avez vous une idée ?
Merci bcp pour votre aide



Il faut copier la bitmap récupéée du Static control, sinon le handle
interne du Static sera détruit la 2ème fois :

HBITMAP hBitmap2 = (HBITMAP)CopyImage (hBitmap, IMAGE_BITMAP, 0, 0,
LR_COPYRETURNORG);

et se servir de hBitmap2

(puis
DeleteObject(hBitmap2);
à la fin )



seb
Le #19016471
bon ben je viens d'essayer et ça fonctionne à merveille ... merci
beaucoup pour votre aide !!

seb a écrit :
Bonsoir, j'essaye et je vous dis ce qu'il en est !!!
Merci pour l'aide quand meme

Christian ASTOR a écrit :
wrote:

bonjour j'ai un souci avec le cilpboard ...



void SendToClipboard(void)
{
HBITMAP hBitmap = NULL;
hBitmap =
(HBITMAP)SendMessage(GetDlgItem(hWnd,IDC_STATIC),STM_GETIMAGE,(WPARAM)
IMAGE_BITMAP,(LPARAM) 0);



//....



Je ne comprends pas pourquoi avez vous une idée ?
Merci bcp pour votre aide



Il faut copier la bitmap récupéée du Static control, sinon le handle
interne du Static sera détruit la 2ème fois :

HBITMAP hBitmap2 = (HBITMAP)CopyImage (hBitmap, IMAGE_BITMAP, 0, 0,
LR_COPYRETURNORG);

et se servir de hBitmap2

(puis
DeleteObject(hBitmap2);
à la fin )





Publicité
Poster une réponse
Anonyme