【问题标题】:accessing bitmap resources in a C++ DLL from VB6从 VB6 访问 C++ DLL 中的位图资源
【发布时间】:2008-12-05 20:38:09
【问题描述】:

我有一个 C++ DLL,包括由 Visual Studio 创建的位图资源。

虽然我可以使用 LoadLibrary 在 VB6 中加载 DLL,但我无法使用 LoadImage 或 LoadBitmap 加载图像资源。当我尝试使用 GetLastError() 获取错误时,它不会返回任何错误。

我曾尝试在另一个具有相同 DLL 的 C++ 程序中使用 LoadImage 和 LoadBitmap,它们可以正常工作。

还有其他方法可以使用 VB6 访问 C++ DLL 中的资源位图吗?

【问题讨论】:

    标签: c++ dll vb6 bitmap resources


    【解决方案1】:

    由于您将位图的数字 ID 用作字符串,因此您必须在其前面添加一个“#”:

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

    在 C++ 中,您还可以使用 MAKEINTRESOURCE 宏,它只是对 LPCTSTR 的转换:

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

    【讨论】:

      【解决方案2】:

      你的想法是对的。你可能打错电话了。也许您可以显示一些代码,因为我无法猜测您传递的内容。

      【讨论】:

        【解决方案3】:

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

        尽管DLLHandle 不为零,但myimage0 一起出现,但是,在C++ 中:

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

        有效!

        非常感谢

        【讨论】:

          猜你喜欢
          • 2013-11-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-05-25
          • 1970-01-01
          • 2011-04-01
          • 1970-01-01
          • 2022-01-20
          相关资源
          最近更新 更多