Outlook加载项功能区自定义映像内存处理

时间:2016-06-13 11:39:03

标签: c++ com outlook-addin atl

我在ATL中成功创建并自定义了Outlook加载项。 由于这是一个用c ++编写的本机程序,我正在分析并寻找内存泄漏。我仔细检查了大部分文档,其中一部分对我来说并不清楚。

功能区和上下文菜单上的按钮具有期望IPictureDisp的getImage回调。我有这样的事情:

Gdiplus::Bitmap m_gdibmp;
...
STDMETHODIMP CConnect::GetButtonImage(IDispatch* ribbon, IPictureDisp** picture)
{
    if (!picture)
        return E_POINTER;
    else
    {
        PICTDESC pictureDesc;
        ::ZeroMemory(&pictureDesc, sizeof(pictureDesc));
        pictureDesc.cbSizeofstruct = sizeof(pictureDesc);
        pictureDesc.picType = PICTYPE_BITMAP;
        m_gdibmp->GetHBITMAP(NULL, &pictureDesc.bmp.hbitmap);
        CComPtr<IPictureDisp> pIcon;
        OleCreatePictureIndirect(&pictureDesc, IID_IPictureDisp, TRUE, (void**)&pIcon);
        *picture = pIcon.Detach();
    }

    return S_OK;
}

根据MSDN OleCreatePictureIndirect&#34;当不再需要新对象时,调用者负责通过此接口指针调用Release&#34;。

当关闭上下文菜单并释放它时,是否必须跟踪此指针并使用其他一些回调,或者是否由内部回调的调用者自动释放?

0 个答案:

没有答案