’把一個GDI對象放入DC,返回原先的那個:
Declare Function SelectObject Lib "gdi32" (ByVal hDC As Long, ByVal hObject As Long) As Long
’刪除GDI對象:
Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
’剪貼板函數(shù):
Private Declare Function OpenClipboard Lib "USER32" (ByVal hWnd As Long) As Long
Private Declare Function CloseClipboard Lib "USER32" () As Long
Private Declare Function SetClipboardData Lib "USER32" (ByVal wFormat As Long, ByVal hMem As Long) As Long
Private Declare Function EmptyClipboard Lib "USER32" () As Long
Private Const CF_BITMAP = 2
Public Function CopyEntirePicture(ByRef objFrom As Object) As Boolean
Dim lhDC As Long
Dim lhBMP As Long
Dim lhBMPOld As Long
’在內(nèi)存中建立一個指向我們將要復(fù)制對象的DC:
lhDC = CreateCompatibleDC(objFrom.hDC)
If (lhDC <> 0) Then
’建立一張指向?qū)⒁獜?fù)制對象的位圖:
lhBMP = CreateCompatibleBitmap(objFrom.hDC, objFrom.ScaleWidth \ Screen.TwipsPerPixelX, objFrom.ScaleHeight \ Screen.TwipsPerPixelY)
If (lhBMP <> 0) Then
’把位圖選入我們剛才建立的DC中,并貯存原先在那里的老位圖:
lhBMPOld = SelectObject(lhDC, lhBMP)
’把objFrom的內(nèi)容復(fù)制到建立的位圖里:
BitBlt lhDC, 0, 0, objFrom.ScaleWidth \ Screen.TwipsPerPixelX, objFrom.ScaleHeight \ Screen.TwipsPerPixelY, objFrom.hDC, 0, 0, SRCCOPY
’恢復(fù)DC中的內(nèi)容:
SelectObject lhDC, lhBMPOld
’現(xiàn)在把位圖裝入剪貼板:
EmptyClipboard
OpenClipboard 0
SetClipboardData CF_BITMAP, lhBMP
CloseClipboard
相關(guān)推薦:北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |