コミュニティでの活動の履歴として、自身(Orator/魔界の仮面弁士)が掲示板・Mailing List・Newsgroup等へ発言した内容の中で、再利用できそうな物を拾い出して、掲載しています。

« 2003年06月 | Main | 2003年12月 »
[VB6] 画像のバイナリをPictureオブジェクトに変換 / 2003年11月19日(水)

これを投稿した掲示板は、すでに閉鎖していました。残念。


[11/19/2003]VisualBasic初心者連盟(VisualBasic掲示板)

Public Function BytesToPicture(ByRef PicBin() As Byte) As Picture
	Dim Low As Long, High As Long, Size As Long
	Dim IID_IPicture As UUID
	Dim oPicture As IPicture

	Low = LBound(PicBin)
	High = UBound(PicBin)
	Size = High - Low + 1

	'7BF80980-BF32-101A-8BBB-00AA00300CAB
	With IID_IPicture
		.Data1 = &H7BF80980
		.Data2 = &HBF32
		.Data3 = &H101A
		.Data4(0) = &H8B
		.Data4(1) = &HBB
		.Data4(3) = &HAA
		.Data4(5) = &H30
		.Data4(6) = &HC
		.Data4(7) = &HAB
	End With

	Dim hMem As Long
	Dim lpMem As Long
	Dim lRet As Long
	Dim Stm As IUnknown

	hMem = GlobalAlloc(GMEM_MOVEABLE, Size)
	If hMem = 0 Then
		Exit Function
	End If

	lpMem = GlobalLock(hMem)
	If lpMem <> 0 Then
		RtlMoveMemory ByVal lpMem, PicBin(Low), Size
		GlobalUnlock hMem
		lRet = CreateStreamOnHGlobal(hMem, 1, Stm)
		If lRet = S_OK Then
			OleLoadPicture ObjPtr(Stm), Size, 0, IID_IPicture, oPicture
		End If
		GlobalFree hMem
	End If
	Set BytesToPicture = oPicture
	Set oPicture = Nothing
End Function

続きを読む...  
Posted at 19:44 / Visual Basic / この記事のURL
コメント(3)
P R

Microsoft Most Valuable Professional, Visual Developer - Visual BasicMSMVP for Visual Basic


Global Media Online INC.