Re: Relationship of LoadPicture() and GDIPlus Load Methods

Tech Tip: Click here to run a free scan for Windows Errors and optimize PC performance



'FORM CODE
'----------------------------------------------------------
Option Explicit

Private Sub Form_Load()
StartUpGDIPlus GdiPlusVersion
End Sub

Private Sub Form_Unload(Cancel As Integer)
ShutdownGDIPlus
End Sub

Private Sub Command1_Click()
Me.Picture = GetPictureFromFile("C:\test.jpg")
End Sub


'MODULE CODE
'----------------------------------------------------------
Option Explicit

Private Type PictDesc
cbSizeOfStruct As Long
picType As Long
hgdiObj As Long
hPalOrXYExt As Long
End Type

Private Type GUID
Data1 As Long
Data2 As Integer
Data3 As Integer
Data4(0 To 7) As Byte
End Type

Public Const GdiPlusVersion As Long = 1

Private Type GDIPlusStartupInput
GdiPlusVersion As Long
DebugEventCallback As Long
SuppressBackgroundThread As Long
SuppressExternalCodecs As Long
End Type

Private Declare Function CLSIDFromString Lib "ole32.dll" (ByVal lpsz As
Long, ByRef pclsid As GUID) As Long
Private Const SIPICTURE As String = "{7BF80980-BF32-101A-8BBB-00AA00300CAB}"

Private Declare Function GdipCreateBitmapFromFile Lib "gdiplus" (ByVal
FileName As Long, ByRef bitmap As Long) As Long
Private Declare Function GdipCreateHBITMAPFromBitmap Lib "gdiplus" (ByVal
bitmap As Long, ByRef hbmReturn As Long, ByVal background As Long) As Long
Private Declare Function GdipDisposeImage Lib "gdiplus" (ByVal Image As
Long) As Long
Private Declare Function GdiplusStartup Lib "gdiplus" (ByRef token As Long,
ByRef lpInput As GDIPlusStartupInput, Optional ByRef lpOutput As Any) As
Long
Private Declare Function GdiplusShutdown Lib "gdiplus" (ByVal token As Long)
As Long
Private Declare Sub OleCreatePictureIndirect Lib "oleaut32.dll" (lpPictDesc
As PictDesc, riid As GUID, ByVal fOwn As Boolean, lplpvObj As Object)

Private GdipInitialized As Boolean
Private GdipToken As Long

Public Function GetPictureFromFile(ByVal FileName As String) As StdPicture
Dim lBitmap As Long
Dim hBitmap As Long
Dim tPictDesc As PictDesc
Dim PictureGUID As GUID

If GdipCreateBitmapFromFile(StrPtr(FileName), lBitmap) = 0& Then
'=============================================
If GdipCreateHBITMAPFromBitmap(lBitmap, hBitmap, 0&) = 0& Then
tPictDesc.cbSizeOfStruct = Len(tPictDesc)
tPictDesc.picType = vbPicTypeBitmap
tPictDesc.hgdiObj = hBitmap
tPictDesc.hPalOrXYExt = 0

CLSIDFromString StrPtr(SIPICTURE), PictureGUID
OleCreatePictureIndirect tPictDesc, PictureGUID, True,
GetPictureFromFile
End If
'==============================================
GdipDisposeImage lBitmap
End If
End Function

Public Function StartUpGDIPlus(ByVal GdipVersion As Long) As Long
Dim GdipStartupInput As GDIPlusStartupInput

GdipStartupInput.GdiPlusVersion = GdipVersion
StartUpGDIPlus = GdiplusStartup(GdipToken, GdipStartupInput, ByVal 0&)
GdipInitialized = (StartUpGDIPlus = 0)
End Function

Public Function ShutdownGDIPlus() As Long
If GdipInitialized Then
ShutdownGDIPlus = GdiplusShutdown(GdipToken)
End If
End Function


.



Relevant Pages

  • RE: Alpha search to load a list box
    ... to load a list box with clients starting with the letter that is selected. ... Private Sub LblAlpha_MouseDown(Button As Integer, Shift As Integer, X As ... Private Declare Function apiDeleteObject Lib "gdi32" _ ...
    (microsoft.public.access.formscoding)
  • Re: Sendmessage using dot net
    ... Public Sub New ... Private components As System.ComponentModel.IContainer ... Friend WithEvents btnSend As System.Windows.Forms.Button ... > Private Declare Function GetDesktopWindow Lib "user32" As Long> ...
    (microsoft.public.dotnet.languages.vb)
  • Re: Right Click on a file List box
    ... Private Type POINTAPI ... Private Declare Function GetCursorPos Lib "user32" _ ... Private Sub Command1_Click ... Dim lParam As Long ...
    (microsoft.public.vb.general.discussion)
  • Need help changing code....
    ... Public Sub Draw'vbWhite ... Private Boxes As New Collection ... Private Declare Function SetStretchBltMode Lib "GDI32" (ByVal hDC As ... Dim MyData() As LINKDATA ...
    (microsoft.public.vb.general.discussion)
  • Re: Right Click on a file List box
    ... Private Type POINTAPI ... Private Declare Function GetCursorPos Lib "user32" _ ... Private Sub Command1_Click ... Dim lParam As Long ...
    (microsoft.public.vb.general.discussion)