문제

Visual Studio에서 만든 비트맵 리소스가 포함된 C++ DLL이 있습니다.

LoadLibrary를 사용하여 VB6에서 DLL을 로드할 수 있지만 LoadImage나 LoadBitmap을 사용하여 이미지 리소스를 로드할 수는 없습니다.GetLastError()를 사용하여 오류를 얻으려고 하면 오류가 반환되지 않습니다.

동일한 DLL을 사용하여 다른 C++ 프로그램에서 LoadImage 및 LoadBitmap을 사용해 보았는데 아무런 문제 없이 작동합니다.

VB6을 사용하여 C++ DLL의 리소스 비트맵에 액세스하는 다른 방법이 있습니까?

도움이 되었습니까?

해결책

비트맵의 숫자 ID를 문자열로 사용하고 있으므로 앞에 "#"을 추가해야 합니다.

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

C++에서는 단순히 LPCTSTR에 대한 캐스트인 MAKEINTRESOURCE 매크로를 사용할 수도 있습니다.

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

다른 팁

당신은 올바른 아이디어를 가지고 있습니다. 당신은 아마도 전화가 잘못되었을 것입니다. 아마도 당신이 지나가는 것을 추측 할 수 없으므로 약간의 코드를 보여줄 수있을 것입니다.

VB6에서 :

개인 선언 함수 loadlibrary lib "kernel32"alias "loadlibrarya"(byval lplibfilename as String).

개인 선언 함수 loadbitmap lib "user32"alias "loadbitmapa"(byval hinstance, byval lpbitmapname as string).

dllhandle = loadlibrary ( "mydll.dll")

myimage = loadbitmap (dllhandle, "101")

그러나 dllhandle이 0이 아니더라도 MyImage와 함께 C ++에서 제공됩니다.

imageHandle = loadBitMap (dllhandle, lpcstr (101));

공장!

정말 감사합니다

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top