程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於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     &

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved