VB6からC ++ DLLのビットマップリソースにアクセスする
質問
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));
動作!
どうもありがとう