当前位置:编程学习 > C/C++ >>

复制位图到剪贴板

 

 

  复制一幅位图到剪贴板相当简单,需要记住的一个是如果位图需要调色盘,你应当将调色盘也复制。

 

函数一:复制设备相关位图到剪贴板

 

CopyBitmapToClipboard()函数复制一幅DDB位图到剪贴板,如果提供调色盘它将同时复制调色盘。

注意在最后调用Detach()。这一点很重要,因为此时GDI对象的物主已经传送至剪贴板。

 

// CopyBitmapToClipboard    - Copies a device-dependent bitmap to clipboard

// pWnd             - Pointer to window that opens the clipboard

// bitmap           - The device-dependent bitmap

// pPal             - Pointer to logical palette - Can be NULL

// NOTE             - GDI objects are detached from bitmap & pPal

//                as the clipboard owns them after the copy

void CopyBitmapToClipboard( const CWnd *pWnd, CBitmap& bitmap, CPalette* pPal )

{

    ::OpenClipboard(pWnd->GetSafeHwnd());

    ::EmptyClipboard() ;

    if( pPal )

        ::SetClipboardData (CF_PALETTE, pPal->GetSafeHandle() ) ;

    ::SetClipboardData (CF_BITMAP, bitmap.GetSafeHandle() ) ;

    ::CloseClipboard () ;

    bitmap.Detach();

    if( pPal )

        pPal->Detach();

}

函数二:复制设备无关位图到剪贴板

 

  CopyDIBToClipboard()函数和CopyBitmapToClipboard()非常相似。内存句柄包含了BITMAPINFO 和位图的位信息,通过GlobalAlloc()分配。

 

// CopyDIBToClipboard   - Copies a device-dependent bitmap to clipboard

// pWnd         - Pointer to window that opens the clipboard

// hDIB         - Memory handle that contains BITMAPINFO & bitmap bits

// pPal         - Pointer to logical palette - Can be NULL

// NOTE         - GDI objects are detached from bitmap & pPal

//            as the clipboard owns them after the copy

void CopyDIBToClipboard( const CWnd *pWnd, HGLOBAL hDIB, CPalette* pPal )

{

    ::OpenClipboard(pWnd->GetSafeHwnd());

    ::EmptyClipboard();

    if( pPal )

        ::SetClipboardData (CF_PALETTE, pPal->GetSafeHandle() ) ;

    ::SetClipboardData (CF_DIB, hDIB ) ;

    ::CloseClipboard () ;

    bitmap.Detach();

    if( pPal )

        pPal->Detach();

}

 

函数三:复制一幅windows图象到剪贴板

 

void CopyWndToClipboard( CWnd *pWnd )

{

    CBitmap     bitmap;

    CClientDC   dc(pWnd);

    CDC     &

补充:软件开发 , C语言 ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,