質問

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

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

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

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

役に立ちましたか?

解決

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

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

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

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

他のヒント

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

VB6の場合:

プライベート宣言関数LoadLibrary Lib <!> quot; kernel32 <!> quot;エイリアス<!> quot; LoadLibraryA <!> quot; (ByVal lpLibFileName As String)As Long

プライベート宣言関数LoadBitmap Lib <!> quot; user32 <!> quot;エイリアス<!> quot; LoadBitmapA <!> quot; (ByVal hInstanceはLong、ByVal lpBitmapNameはString)As Long

DLLHandle = LoadLibrary(<!> quot; Mydll.dll <!> quot;)

myimage = LoadBitmap(DLLHandle、<!> quot; 101 <!> quot;)

DLLHandleがゼロ以外であっても、myimageが0になりますが、C ++では:

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

動作!

どうもありがとう

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top