HDC vers HBITMAP [Résolu]

Signaler
Messages postés
165
Date d'inscription
samedi 4 juin 2005
Statut
Membre
Dernière intervention
24 octobre 2007
-
julien_boss
Messages postés
165
Date d'inscription
samedi 4 juin 2005
Statut
Membre
Dernière intervention
24 octobre 2007
-
Bonjour,
j'ai un DC, contenant un dessin..., je souhaite pouvoir transférer son contenu dans un bitmap de type HBITMAP, afin ensuite de la mettre dans le clipboard.
Je sais mettre une image de type HBITMAP dans le clipboard mais pas comment transférer le contenu d'un DC vers un HBITMAP.
Si vous pouviez m'aider sur ce coup ;)
Merci

2 réponses

Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
11
Salut,
Voici un petit code que je viens d'écrire. Il est mis dans le traitement de WM_PAINT. Il dessine un rectangle blanc sur la fenêtre puis écrit un petit texte en rouge. Il crée un HDC en mémoire  compatible avec l'affichage écran. Ensuite, il crée un bitmap compatible. Ce dernier est sélectionné dans notre HDC compatible. On copie dans ce dernier une portion du contenu de la fenêtre grâce à BitBlt(). Enfin, on met le HBITMAP dans le clipboard. Pour tester, je le colle dans un nouveau document Word. Ca marche parfaitement.
    case WM_PAINT:
        {
            PAINTSTRUCT ps;
            HDC hdc=BeginPaint(hwnd,&ps);
            Rectangle(hdc,10,10,60,60);
            SetTextColor(hdc,RGB(255,0,0));
            TextOut(hdc,10,10,TEXT("123456"),6);
            HDC cDC=CreateCompatibleDC(0);
            HBITMAP hbmp=CreateCompatibleBitmap(hdc,100,100);
            SelectObject(cDC,hbmp);
            BitBlt(cDC,0,0,100,100,hdc,0,0,SRCCOPY);
            OpenClipboard(hwnd);
            EmptyClipboard();
            SetClipboardData(CF_BITMAP,hbmp);
            CloseClipboard();
            DeleteObject(hbmp);
            DeleteDC(cDC);
            EndPaint(hwnd,&ps);
            return 0;
        }
Messages postés
165
Date d'inscription
samedi 4 juin 2005
Statut
Membre
Dernière intervention
24 octobre 2007

Ok merci j'ai compris le principe.
A bientot