RE:VBサンプルを使っての表示について(長文) (Tomy) 1997/10/19 15:02
もう一度確認したところSetDlbitsの戻り値は0になっていました。すいません。

で、どうしても原因が分からないので、コードを書いちゃいます。

フォームモジュール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

以上です。
このコードで、SetDlbitsの戻り値が0になります。
このコードを新規プロジェクトに張り付けて実行すると、フォームのみが表示されて画像が表示されません。
ifmag.spiはWindows\systemにもコピーしてありますのでDLLの呼び出しには成功しているようです。

よろしくお願いします。




--「RE:VBサンプルを使っての表示について(長文)」に対するコメント--
タイトル(Subject):
お名前(Your name):
Mail address:
Password: :入力しておくとあとで削除できます
Your message:




7thBridge P ver0.26 (c)Takechin