Pergunta

Eu tenho uma DLL C ++, incluindo recursos de bitmap criados pelo Visual Studio.

Embora eu possa carregar a DLL no VB6 usando LoadLibrary, eu não posso carregar os recursos de imagem ou usando LoadImage ou usando LoadBitmap. Quando eu tentar obter o erro usando GetLastError (), ele doesnot devolver quaisquer erros.

Eu tentei usar LoadImage e LoadBitmap em outro programa C ++ com a mesma DLL e eles funcionam sem problemas.

Existe alguma outra maneira de acessar os mapas de bits de recursos em DLLs C ++ usando VB6?

Foi útil?

Solução

Uma vez que você estiver usando o ID numérico do bitmap como uma string, você tem que adicionar um "#" na frente dele:

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

Em C ++ você também pode usar a macro MAKEINTRESOURCE, que é simplesmente um elenco de LPCTSTR:

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

Outras dicas

Você tem a idéia certa. Você provavelmente tem o errado chamada. Talvez você poderia mostrar um pouco de código como eu não pode adivinhar, como o que você está passando.

Em 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")

vem com myimage como 0 mesmo que DLLHandle é diferente de zero, no entanto, em C ++:

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

obras!

Muito obrigado

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top