如何将位图从C ++ DLL传递到VB6应用程序

时间:2019-08-22 09:22:18

标签: c++ vb6

我有一些C ++代码,可以捕获原始图像并构建一个BMP,并将其保存到文件xyz.bmp中。效果很好。

但是,目标是将图像数据直接传输到VB6应用程序,这样就不会写出任何中间文件。

通过示例或清晰的解释,我根本找不到很多东西,而我的C ++充其量只是粗略的。

C ++ DLL代码:

extern "C"  _declspec(dllexport) HRESULT CaptureSample(BYTE *pbByteArray, int *pnSize)
{
....
....
    std::string bmpFile = "data/fingerPrint_" + s.str() + ".bmp";
    MessageBox(0, L"Saving", L"title", MB_OK);
    BmpSetImageData(&bmp, data, width, height);
    BmpSave(&bmp, bmpFile);

    const int nSizeOfData = sizeof(bmp);
    *pnSize = min(nSizeOfData, *pnSize);
    ::memcpy(pbByteArray, bmp, *pnSize);

在上面,我有pbByteArraypnSize将返回到VB6应用程序。

函数BmpSave正常工作。
这是我接下来要坚持的接下来的几行代码。 ::memcpy .. bmp无效-“没有来自SBmpImage的合适的转换功能”。

在VB6端:

Public Declare Function CaptureSample Lib "ImageLibrary.dll" (ByVal FScan As Byte, ByVal FScanSize As Integer) As Long

Private Sub Command_Click()
Dim FScan As Byte
Dim FScanSize As Integer

Call CaptureSample(FScan, FScanSize)

再次不确定这是正确的方法。

任何帮助将不胜感激。

0 个答案:

没有答案