1

Visual Studio によって作成されたビットマップ リソースを含む C++ DLL があります。

LoadLibrary を使用して VB6 で DLL をロードできますが、LoadImage または LoadBitmap を使用しても画像リソースをロードできません。GetLastError() を使用してエラーを取得しようとすると、エラーは返されません。

同じ DLL を持つ別の C++ プログラムで LoadImage と LoadBitmap を使用しようとしましたが、問題なく動作します。

VB6 を使用して C++ DLL のリソース ビットマップにアクセスする他の方法はありますか?

4

3 に答える 3

1

ビットマップの数値 ID を文字列として使用しているため、その前に「#」を追加する必要があります。

DLLHandle = LoadLibrary("Mydll.dll")
myimage = LoadBitmap(DLLHandle, "#101")  ' note the "#"

C++ では、LPCTSTR への単純なキャストである MAKEINTRESOURCE マクロを使用することもできます。

imagehandle = LoadBitmap(DLLHandle, MAKEINTRESOURCE(101));
于 2008-12-05T21:30:14.250 に答える
0

あなたは正しい考えを持っています。呼び方を間違えている可能性があります。おそらく、あなたが何を渡しているのか推測できないので、少しのコードを示すことができます。

于 2008-12-05T20:56:51.603 に答える
0

VB6 では:

Private Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long

Private Declare Function LoadBitmap Lib "user32" Alias "LoadBitmapA" (ByVal hInstance As Long, ByVal lpBitmapName As String) As Long

DLLHandle = LoadLibrary("Mydll.dll")

myimage = LoadBitmap(DLLHandle, "101")

ただし、C++ の場合myimage:0DLLHandle

imagehandle = LoadBitmap(DLLHandle,LPCSTR(101));

動作します!

どうもありがとう

于 2008-12-05T21:02:10.593 に答える