richedit 自己实现了一个Ole显示gif图片,拖放后,变成空白,据说重载这两个接口可以正常,但是没有效果,求解?该怎么解决
richedit 自己实现了一个Ole显示gif图片,拖放后,变成空白,据说重载这两个接口可以正常,但是没有效果,求解???????
Ole控件是我自己实现的 用InsertObject 插入到richedit中的。
当图文混排后,我想拖动gif图片的位置,拖动之后 gif该在的位置 变成了一个空白的ole控件。
这个部分 应该怎么实现? 求解。
从****等网上其他人的建议 加入这两个重载,但是并没有效果,
而且我发现拖动开始时 会进入到IPersistStreamInit_Save,但是IPersistStreamInit_Load一直都没有进去
------解决方案--------------------
TMD同病相怜啊!!!我现在可以显示从截图工具粘贴过来的图,就是显示在自己控件里的图片粘贴不回去!真TM让我郁闷啊!我不懂ATL,无从查起……………………
Ole控件是我自己实现的 用InsertObject 插入到richedit中的。
当图文混排后,我想拖动gif图片的位置,拖动之后 gif该在的位置 变成了一个空白的ole控件。
这个部分 应该怎么实现? 求解。
从****等网上其他人的建议 加入这两个重载,但是并没有效果,
而且我发现拖动开始时 会进入到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,无从查起……………………