VB6에서 C++ DLL의 비트맵 리소스에 액세스
문제
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));
공장!
정말 감사합니다