掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
VB6でGdipCreateBitmapFromResource関数を使用するには? (ID:87345)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
VB6でGDI+を使用し、モジュール(DLL, EXE)内のリソースからビットマップを表示しようとしています。 現状は、GdipCreateBitmapFromResource関数の戻り値が2(InvalidParameter)で失敗します。 恐らく、引き数の指定に誤りがあると思うのですが、うまくいきません。 以下は、現状のテストコードです。 解決策についてアドバイスお願いします。 Option Explicit Private Declare Function LoadLibraryEx Lib "kernel32" _ Alias "LoadLibraryExA" (ByVal lpLibFileName As String, _ ByVal hFile As Long, ByVal dwFlags As Long) As Long Private Const LOAD_LIBRARY_AS_DATAFILE As Long = 2 Private Declare Function FreeLibrary Lib "kernel32" ( _ ByVal hLibModule As Long) As Long Private m_lToken As Long Private Type GdiplusStartupInput GdiplusVersion As Long DebugEventCallback As Long SuppressBackgroundThread As Long SuppressExternalCodecs As Long End Type Private Declare Function GdiplusStartup Lib "gdiplus" ( _ token As Long, inputbuf As GdiplusStartupInput, _ Optional ByVal outputbuf As Long = 0) As Long Private Declare Function GdiplusShutdown Lib "gdiplus" ( _ ByVal token As Long) As Long Private Declare Function GdipCreateBitmapFromResource Lib "gdiplus" ( _ ByVal hInstance As Long, ByVal lpBitmapName As Long, _ bitmap As Long) As Long Private Declare Function GdipCreateFromHDC Lib "gdiplus" ( _ ByVal hdc As Long, graphics As Long) As Long Private Declare Function GdipGetImageWidth Lib "gdiplus" ( _ ByVal image As Long, Width As Long) As Long Private Declare Function GdipGetImageHeight Lib "gdiplus" ( _ ByVal image As Long, Height As Long) As Long Private Declare Function GdipDrawImageRectI Lib "gdiplus" ( _ ByVal graphics As Long, ByVal image As Long, _ ByVal X As Long, ByVal Y As Long, _ ByVal Width As Long, ByVal Height As Long) As Long Private Declare Function GdipDeleteGraphics Lib "gdiplus" ( _ ByVal graphics As Long) As Long Private Declare Function GdipDisposeImage Lib "gdiplus" ( _ ByVal image As Long) As Long Private Sub Command1_Click() Dim sModuleName As String Dim sName As String Dim hModule As Long Dim lBitmap As Long Dim lStatus As Long Dim lHeight As Long Dim lWidth As Long Dim lGraphics As Long sModuleName = "C:\Windows\Explorer.exe" sName = "#150" hModule = LoadLibraryEx(sModuleName, 0, LOAD_LIBRARY_AS_DATAFILE) If (hModule = 0) Then Exit Sub lStatus = GdipCreateBitmapFromResource(hModule, StrPtr(sName), lBitmap) If (lStatus = 0) Then lStatus = GdipGetImageHeight(lBitmap, lHeight) lStatus = GdipGetImageWidth(lBitmap, lWidth) If (lStatus = 0) Then lStatus = GdipCreateFromHDC(Picture1.hdc, lGraphics) If (lStatus = 0) Then lStatus = GdipDrawImageRectI(lGraphics, lBitmap, 0, 0, lWidth, lHeight) Call GdipDeleteGraphics(lGraphics) End If End If Call GdipDisposeImage(lBitmap) End If Call FreeLibrary(hModule) If (lStatus <> 0) Then MsgBox "GDI+ Error " & lStatus End Sub Private Sub Form_Load() Dim gsi As GdiplusStartupInput gsi.GdiplusVersion = 1 Call GdiplusStartup(m_lToken, gsi) End Sub Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) Call GdiplusShutdown(m_lToken) End Sub
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.