Private Type GUID dwData1 As Long wData2 As Integer wData3 As Integer abData4(7) As Byte End Type Private Declare Function OleLoadPicture Lib "olepro32" (pStream As Any, ByVal lSize As Long, ByVal fRunmode As Long, riid As GUID, ppvObj As Any) As Long Private Declare Function CLSIDFromString Lib "ole32" (ByVal lpsz As Any, pclsid As GUID) As Long Private Declare Function CreateStreamOnHGlobal Lib "ole32" (ByVal hGlobal As Long, ByVal fDeleteOnRelease As Long, ppstm As Any) As Long Private Declare Sub RtlMoveMemory Lib "kernel32" (pDest As Any, pSource As Any, ByVal dwLength As Long) Private Declare Function GlobalLock Lib "kernel32" (ByVal hMem As Long) As Long Private Declare Function GlobalFree Lib "kernel32" (ByVal hMem As Long) As Long Private Declare Function GlobalAlloc Lib "kernel32" (ByVal uFlags As Long, ByVal dwBytes As Long) As Long Private Declare Function GlobalUnlock Lib "kernel32" (ByVal hMem As Long) As Long Private Function PictureFromBits(ByRef wBuffer() As Byte) As IPicture Dim vStream As IUnknown Dim vIID_IPicture As GUID Dim vSize As Long Dim vhMem As Long Dim vPtr As Long vSize = UBound(wBuffer) + 1 vhMem = GlobalAlloc(&H2, vSize) If vhMem Then vPtr = GlobalLock(vhMem) If vPtr Then RtlMoveMemory ByVal vPtr, wBuffer(0), vSize GlobalUnlock vhMem If (CreateStreamOnHGlobal(vhMem, 1, vStream) = 0) Then If (CLSIDFromString(StrPtr("{7BF80980-BF32-101A-8BBB-00AA00300CAB}"), vIID_IPicture) = 0) Then OleLoadPicture ByVal ObjPtr(vStream), vSize, 0, vIID_IPicture, PictureFromBits End If End If End If GlobalFree vhMem End If End Function
E.B.
E.B.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionE.B.