フォームモジュールForm1
Private Sub Form_Load()
'メモリのハンドル
Dim HBInfo As Long
Dim HBm As Long
'データへのポインタ
Dim lpHBInfo As Long
Dim lpHBm As Long
Dim ret As Integer
Dim pInfo As PictureInfo
Dim PathName As String
PathName = "e:\view\test2.mag"
ret = GetPictureInfo(PathName, 0&, 0, pInfo)
If ret <> 0 Then
MsgBox ("Error")
End If
'画像の展開
ret = GetPicture(PathName, 0, 0, HBInfo, HBm, AddressOf ProgressCallback, 0)
'メモリのロック
lpHBInfo = LocalLock(HBInfo)
lpHBm = LocalLock(HBm)
'画像の表示
ret = SetDIBits(Form1.hdc, Form1.Image, 0, pInfo.pHeight, ByVal lpHBm, ByVal lpHBInfo, 0)
Form1.Picture = Form1.Image
'メモリのロック解除
Call LocalUnlock(HBInfo)
Call LocalUnlock(HBm)
'メモリハンドルの解放
Call LocalFree(HBInfo)
Call LocalFree(HBm)
End Sub
標準モジュールModule1
'Susie Plug-in API
Declare Function GetPicture Lib "ifmag.spi" (ByVal buf As String, ByVal offset As Long, ByVal flag As Long, pHBInfo As Long, pHBm As Long, ByVal lpProgressCallback As Long, ByVal lData As Long) As Long
Declare Function GetPictureInfo Lib "ifmag.spi" (ByVal buf As String, ByVal leng As Long, ByVal flag As Long, ByRef lpInfo As PictureInfo) As Integer
'Win32 API
Declare Function LocalFree Lib "kernel32" (ByVal hMem As Long) As Long
Declare Function LocalLock Lib "kernel32" (ByVal hMem As Long) As Long
Declare Function LocalUnlock Lib "kernel32" (ByVal hMem As Long) As Long
Declare Function SetDIBits Lib "gdi32" (ByVal hdc As Long, ByVal hBitmap As Long, ByVal nStartScan As Long, ByVal nNumScans As Long, lpBits As Any, lpBI As Long, ByVal wUsage As Long) As Long
'Susie用構造体
Type PictureInfo
pLeft As Long
pTop As Long '画像を展開する位置
pWidth As Long '画像の幅(pixel)
pHeight As Long '画像の高さ(pixel)
x_density As Integer '画素の水平方向密度
y_density As Integer '画素の垂直方向密度
colorDepth As Integer '1画素当たりのbit数
hInfo As Integer '画像内のテキスト情報 Global Memroy Handle
End Type
Public Function ProgressCallback(ByVal nNum As Long, ByVal nDemon As Long, ByVal lData As Long) As Long
Dim p As Long
'経過表示(ここではフォームのキャプションに出します)
p = nNum * 100 \ nDemon
Form1.Caption = Str(p) & "%"
End Function