Click here to Skip to main content
13,353,124 members (79,526 online)
Click here to Skip to main content
Add your own
alternative version


43 bookmarked
Posted 11 Dec 2002

Getting a CF_DIB or CF_METAFILEPICT from the clipboard and displaying it

, 11 Dec 2002
Rate this:
Please Sign up or sign in to vote.
Example code to display a CF_DIB or CF_METAFILEPICT from the clipboard


I needed to display a bitmap from the clipboard which is in the CF_DIB format in one of my applications. The standard MSDN docs did not have any information on how to do this. Also, all the other clipboard articles here had code to write CF_DIB to the clipboard, but not read it. Also I already had some existing code to display a metafile from the clipboard, both of which may be of use.

// pDC is the DC to draw to
// metafile is a CRect to display the DIB/Metafile in
    CRect    metafile(0, 0, 100, 100);    // example location
    if (IsClipboardFormatAvailable(CF_METAFILEPICT))
        // play a metafile from the clipboard if available
        GLOBALHANDLE    hGMem ;
        OpenClipboard() ;
        hGMem = GetClipboardData(CF_METAFILEPICT) ;
        lpMFP = (LPMETAFILEPICT)GlobalLock(hGMem) ;
        pDC->SaveDC() ;
        pDC->SetMapMode(lpMFP->mm) ;
        pDC->SetViewportExt(metafile.Width(), metafile.Height()) ;
        pDC->SetViewportOrg(metafile.left, ;
        pDC->PlayMetaFile(lpMFP->hMF) ;
        VERIFY(pDC->RestoreDC(-1)) ;
        GlobalUnlock(hGMem) ;
        CloseClipboard() ;
    if (IsClipboardFormatAvailable(CF_DIB))
        // a DIB is in the clipboard, draw it out
        GLOBALHANDLE    hGMem ;
        LPBITMAPINFO    lpBI ;
        void*            pDIBBits;
        OpenClipboard() ;
        hGMem = GetClipboardData(CF_DIB) ;
        lpBI = (LPBITMAPINFO)GlobalLock(hGMem) ;
        // point to DIB bits after BITMAPINFO object
        pDIBBits = (void*)(lpBI + 1); 
            metafile.Width(), metafile.Height(),
            0, 0, lpBI->bmiHeader.biWidth, 
            pDIBBits, lpBI, DIB_RGB_COLORS, SRCCOPY);
        GlobalUnlock(hGMem) ;
        CloseClipboard() ;

That's it! Enjoy!


This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


About the Author

Roger Allen
Software Developer (Senior) Sirius Analytical Instruments
United Kingdom United Kingdom
A research and development programmer working for a pharmaceutical instrument company for the past 17 years.

I am one of those lucky people who enjoys his work and spends more time than he should either doing work or reseaching new stuff. I can also be found on playing DDO on the Cannith server (Send a tell to "Maetrim" who is my current main)

I am also a keep fit fanatic, doing cross country running and am seriously into [url][/url] Karate at this time of my life, training from 4-6 times a week and recently achieved my 1st Dan after 6 years.

You may also be interested in...


Comments and Discussions

GeneralTypical How People Who Post Here Dont Test It Pin
xox_c0bra_xox8-Sep-09 8:44
memberxox_c0bra_xox8-Sep-09 8:44 
GeneralPaste CF_METAFILEPICT in a rtf dialog box app Pin
Filomela24-Mar-04 23:07
memberFilomela24-Mar-04 23:07 
Generalbug Pin
Anonymous3-Nov-03 14:42
sussAnonymous3-Nov-03 14:42 
GeneralRe: bug Pin
Repsej9-Dec-04 4:21
memberRepsej9-Dec-04 4:21 
QuestionLocal copy of clipboard memory ? Pin
storep29-Oct-03 0:03
memberstorep29-Oct-03 0:03 
AnswerRe: Local copy of clipboard memory ? Pin
Anonymous12-May-04 13:03
sussAnonymous12-May-04 13:03 
GeneralMr.Roger Allen, I need your help!!Come on... Pin
suncho6-Aug-03 1:17
membersuncho6-Aug-03 1:17 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Permalink | Advertise | Privacy | Terms of Use | Mobile
Web03 | 2.8.180111.1 | Last Updated 12 Dec 2002
Article Copyright 2002 by Roger Allen
Everything else Copyright © CodeProject, 1999-2018
Layout: fixed | fluid