VB初心者質問スレ Part6
■ このスレッドは過去ログ倉庫に格納されています
0622613
NGNGとりあえず関数にしてみた。>>613の宣言部の下に以下のコードを書いてくれ。
とりあえずTestはした。ちなみに
T1=TextBox
P1=PictureBoxの事だ。
Private Declare Function OpenClipboard Lib "USER32" (ByVal hWnd&) As Long
Private Declare Function EmptyClipboard Lib "USER32" () As Long
Private Declare Function SetClipboardData Lib "USER32" (ByVal wFormat&, ByVal hMem&) As Long
Private Declare Function CloseClipboard Lib "USER32" () As Long
Private Sub SetPicFromText(ByRef tHwnd As Long, ByRef pHwnd As Long)
Dim R As RECT
Dim rc As Long, H As Long, W As Long, hSourceDC As Long, hBMP As Long, hMemoryDC As Long
rc = GetWindowRect(tHwnd, R)
With R
W = .Right - .Left: H = .Bottom - .Top
End With
hSourceDC = GetWindowDC(tHwnd) 'フォーム全体のDC
hMemoryDC = CreateCompatibleDC(hSourceDC) 'デバイスコンテキストと同じ属性のメモリーを確保
hBMP = CreateCompatibleBitmap(hSourceDC, W, H) 'メモリー上のBMPのハンドル
rc = SelectObject(hMemoryDC, hBMP)
rc = BitBlt(hMemoryDC, 0, 0, W, H, hSourceDC, 0, 0, SRCCOPY) 'イメージをコピー
rc = OpenClipboard(Me.hWnd) 'クリップボードをオープン
rc = EmptyClipboard(): rc = SetClipboardData(2, hBMP) 'BMPをクリップボードへ
rc = CloseClipboard()
'デバイスコンテキストを開放
call DeleteObject(hBMP):call DeleteDC(hMemoryDC): call ReleaseDC(tHwnd, hSourceDC)
End Sub
Private Sub Form_Load()
P1.AutoSize = True : P1.AutoRedraw = True
End Sub
Private Sub T1_LostFocus()
Call SetPicFromText(T1.hWnd, P1.hWnd): P1.Picture = Clipboard.GetData(2): P1.Refresh
End Sub
■ このスレッドは過去ログ倉庫に格納されています