gpt4 book ai didi

c++ - 从 HBITMAP 转换为 IWICBitmap

转载 作者:行者123 更新时间:2023-11-28 07:43:07 25 4
gpt4 key购买 nike

我正在尝试将 HBITMAP 转换为 IWICBitmap,但我遇到了很多麻烦。我找到了函数:

CreateBitmapFromHBITMAP();

但我无法让它工作。以下是我的使用方法:

void camera_avtcam_ex_t::GrabAsyncFrame(ULONG frameId, IWICImagingFactory* pWicFactory, IWICBitmap** outputBitmap, bool* pAbort )
{

QueueCamFrame();
HBITMAP transferbitmap;
GetFeatureAndRunAcquisitionStart(transferbitmap); //returns transferbitmap
//as a valid HBITMAP
//This HBITMAP works, I can save it to a file and/or print
//it to the screen and the image is displayed properly

pWicFactory->CreateBitmapFromHBITMAP(transferbitmap, NULL, WICBitmapUseAlpha, outputBitmap);

}

执行函数中的最后一行代码会导致访问冲突错误。

就在这个 GrabAsyncFrame() 函数被调用之前,我创建了它需要的参数,如下所示:

        ULONG frameId = 0;
IWICImagingFactory* pWicFactory = NULL;
IWICBitmap** outputBitmap = new IWICBitmap*;
bool* pAbort = NULL;

theCamera.GrabAsyncFrame(frameId, pWicFactory, outputBitmap, pAbort);

我有点怀疑将 pWicFactory 设置为 NULL,然后很快使用它。但我想不出任何其他方法来初始化 IWICImagingFactory 对象。

所以我的问题是:下面发布了新问题。

编辑:如果我尝试使用 new 来初始化 pWicFactory,我会收到一条消息说

Error: object of abstract class type "IWICImagingFactory" is not allowed.

编辑2:

在确认将 pWicFactory 设置为 NULL 是问题所在之后,我现在需要知道如何正确初始化 IWICImagingFactory 对象指针。这就是我现在正在使用的:

            ULONG frameId = 0;
IWICImagingFactory* pWicFactory = NULL;
/*new code*/CoCreateInstance(CLSID_WICImagingFactory, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&pWicFactory));
IWICBitmap** outputBitmap = new IWICBitmap*;
bool* pAbort = NULL;
theCamera.GrabAsyncFrame(frameId, pWicFactory, outputBitmap, pAbort);

问题: 如何正确初始化 IWICImagingFactory 对象指针?

最佳答案

这个声明

IWICImagingFactory* pWicFactory = NULL;

是罪魁祸首。

您将一个 NULL 指针传递给该函数,然后您尝试使用该函数,导致错误。

关于c++ - 从 HBITMAP 转换为 IWICBitmap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15433318/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com