How to Copy the contents of a Picture Box into Clipboard
Posted on January 4, 2009
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 | 'Controls - How to Copy the contents of a Picture Box into Clipboard Option Explicit Private Type RECT Left As Long Top As Long Right As Long Bottom As Long End Type Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal X As Long, _ ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, _ ByVal XSrc As Long, ByVal YSrc As Long, ByVal dwRop As Long) As Long Private Const SRCCOPY = &HCC0020 Declare Function CreateCompatibleDC Lib "gdi32" (ByVal hdc As Long) As Long Declare Function CreateCompatibleBitmap Lib "gdi32" (ByVal hdc As Long, ByVal nWidth As Long, _ ByVal nHeight As Long) As Long Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long 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 GetClipboardFormatName Lib "user32" Alias "GetClipboardFormatNameA" _ (ByVal wFormat As Long, ByVal lpString As String, ByVal nMaxCount As Long) As Long Private Declare Function EmptyClipboard Lib "user32" () As Long Private Declare Function CountClipboardFormats Lib "user32" () As Long Private Declare Function EnumClipboardFormats Lib "user32" (ByVal wFormat As Long) As Long Private Declare Function IsClipboardFormatAvailable Lib "user32" (ByVal wFormat As Long) As Long Private Declare Function RegisterClipboardFormat Lib "user32" Alias "RegisterClipboardFormatA" _ (ByVal lpString As String) As Long Private Declare Function GetClipboardData Lib "user32" (ByVal wFormat As Long) As Long Private Declare Function GlobalLock Lib "kernel32" (ByVal hMem As Long) As Long Private Declare Function GlobalUnlock Lib "kernel32" (ByVal hMem As Long) As Long Private Declare Function GlobalSize Lib "kernel32" (ByVal hMem As Long) As Long Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (lpvDest As Any, _ lpvSource As Any, ByVal cbCopy As Long) Public Enum EPredefinedClipboardFormatConstants [_First] = 1 CF_TEXT = 1 CF_BITMAP = 2 CF_METAFILEPICT = 3 CF_SYLK = 4 CF_DIF = 5 CF_TIFF = 6 CF_OEMTEXT = 7 CF_DIB = 8 CF_PALETTE = 9 CF_PENDATA = 10 CF_RIFF = 11 CF_WAVE = 12 CF_UNICODETEXT = 13 CF_ENHMETAFILE = 14 CF_HDROP = 15 CF_LOCALE = 16 CF_MAX = 17 [_Last] = 17 End Enum Public Function CopyEntirePictureToClipboard(ByRef objFrom As Object) As Boolean Dim lhDC As Long Dim lhBmp As Long Dim lhBmpOld As Long lhDC = CreateCompatibleDC(objFrom.hdc) If (lhDC <> 0) Then lhBmp = CreateCompatibleBitmap(objFrom.hdc, objFrom.ScaleWidth \ Screen.TwipsPerPixelX, objFrom.ScaleHeight \ Screen.TwipsPerPixelY) If (lhBmp <> 0) Then lhBmpOld = SelectObject(lhDC, lhBmp) BitBlt lhDC, 0, 0, objFrom.ScaleWidth \ Screen.TwipsPerPixelX, objFrom.ScaleHeight \ Screen.TwipsPerPixelY, objFrom.hdc, 0, 0, SRCCOPY SelectObject lhDC, lhBmpOld EmptyClipboard OpenClipboard 0 SetClipboardData CF_BITMAP, lhBmp CloseClipboard End If DeleteObject lhDC CopyEntirePictureToClipboard = True Else CopyEntirePictureToClipboard = False End If End Function |
Related posts:
- How to replace a Color with another Color in Picture Box
- Obtaining Clipboard Data using API (Can be used in VBA since there is no Clipboard Object in VBA)
- How to stretch image in a Picture Box Control
- How to Paste the Picture from PictureBox/Clipboard to Rich Text Box
- How to Load a picture from a resource into a hDc
- How to animate the Text
- How to paint Areas of Picture
- How to Draw Rotated Text directly on Screen
- How to Insert Picture without Clearing Clipboard
- How to Display Rotated text in Picture Box