richedit 自己实现了一个Ole显示gif图片,拖放后,变成空白,据说重载这两个接口可以正常,但是没有效果,求解?该怎么解决

richedit 自己实现了一个Ole显示gif图片,拖放后,变成空白,据说重载这两个接口可以正常,但是没有效果,求解???????
本帖最后由 VisualEleven 于 2013-09-02 16:34:31 编辑
Ole控件是我自己实现的 用InsertObject 插入到richedit中的。

当图文混排后,我想拖动gif图片的位置,拖动之后 gif该在的位置 变成了一个空白的ole控件。

这个部分 应该怎么实现?  求解。

从CSDN等网上其他人的建议 加入这两个重载,但是并没有效果,
而且我发现拖动开始时 会进入到IPersistStreamInit_Save,但是IPersistStreamInit_Load一直都没有进去


STDMETHODIMP CxActiveControl::IPersistStreamInit_Save(LPSTREAM pStm, BOOL fClearDirty, ATL_PROPMAP_ENTRY* pMap)
{
//HRESULT hr = IPersistStreamInitImpl<CxActiveControl>::IPersistStreamInit_Save(pStm, fClearDirty, pMap);

//// ------------- TRYING TO SAVE THE IPICTURE
//if(_Pict) 
//{
// CComQIPtr<IPersistStream> p = _Pict;
// p->Save(pStm, FALSE);
//}
//// -------------

if (NULL == pStm) return E_POINTER;

// Save the properties described in the PROP_MAP
HRESULT hr = IPersistStreamInitImpl<CxActiveControl>::IPersistStreamInit_Save(pStm,  fClearDirty, pMap);
if (FAILED (hr)) return hr;

bSave = TRUE;
fClearDirty = TRUE;  //////////

return hr;
}

STDMETHODIMP CxActiveControl::IPersistStreamInit_Load(LPSTREAM pStm, ATL_PROPMAP_ENTRY* pMap)
{
// ------------- TRYING TO LOAD THE IPICTURE
CComPtr<IPictureDisp> pic;
LARGE_INTEGER l;
l.QuadPart  =0;
pStm->Seek(l, STREAM_SEEK_SET, NULL);                                 

OleLoadPicture(pStm, l.LowPart, FALSE, IID_IPictureDisp, (void **) &pic);      
if(pic) 
{
            _Pict = pic;
}

HRESULT hr = IPersistStreamInitImpl<CxActiveControl>::IPersistStreamInit_Load(pStm, pMap);

return hr;
}
C++  Richedit Ole

------解决方案--------------------
TMD同病相怜啊!!!我现在可以显示从截图工具粘贴过来的图,就是显示在自己控件里的图片粘贴不回去!真TM让我郁闷啊!我不懂ATL,无从查起……………………