Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Probleme avec le clipboard et un picture control

3 réponses
Avatar
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

3 réponses

Avatar
Christian ASTOR
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 )
Avatar
seb
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 )



Avatar
seb
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 )