设为首页 加入收藏

TOP

复制位图到剪贴板
2014-11-23 20:10:08 来源: 作者: 【 】 浏览:6
Tags:复制 位图 剪贴板

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

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

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 &

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇在对话框中动态显示位图 下一篇透明位图的显示

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: