自己写的一个RichEdit中显示图片的Atl控件,复制粘贴有有关问题求教!(内附源码及demo)
自己写的一个RichEdit中显示图片的Atl控件,复制粘贴有问题求教!(内附源码及demo)
源码地址:http://download.****.net/detail/liangzuoting/6242177,0分下载。
现在可以显示,但是复制粘贴有问题:复制可以,粘贴不回来。跟了代码,发现:
上述函数被回调时,条件不满足,*lpclsid值总是CLSID_Picture_XXX,所以走不到重写的Load函数里。再然后就不知道该怎么继续查啦。
这个该死的问题已经困扰我2个星期了!诚心求大牛大虾出现一击致命啊!分不多了,全送上。
------解决方案--------------------
肯定是粘贴不回来的!
因为我只是为大家提供了插入动画和高效刷新的解决方案,没有提供复制和粘贴功能。要实现复制和粘贴,需要在启动程序时调用RegisterClipboardFormat注册一种剪切板数据格式,在CRETestDlg::IExRichEditOleCallback::GetClipboardData中,将图片信息封装成你自己能识别的数据(比如图片路径),调用SetClipboardData,第一个参数为你注册的剪切板格式,放入剪切板中;
然后在CRETestDlg::IExRichEditOleCallback::QueryAcceptData中判断要插入的数据格式是否为你注册的格式,如果是的话,那么剪切板中就是你的格式的数据(比如图片路径),再调用InsertImage即可。
源码地址:http://download.****.net/detail/liangzuoting/6242177,0分下载。
现在可以显示,但是复制粘贴有问题:复制可以,粘贴不回来。跟了代码,发现:
HRESULT STDMETHODCALLTYPE
IExRichEditOleCallback::QueryInsertObject(LPCLSID lpclsid, LPSTORAGE lpstg, LONG cp)
{
if (*lpclsid == __uuidof(CImageOleCtrl))
return S_OK;
return E_NOTIMPL;
}
上述函数被回调时,条件不满足,*lpclsid值总是CLSID_Picture_XXX,所以走不到重写的Load函数里。再然后就不知道该怎么继续查啦。
这个该死的问题已经困扰我2个星期了!诚心求大牛大虾出现一击致命啊!分不多了,全送上。
atl
richedit
------解决方案--------------------
肯定是粘贴不回来的!
因为我只是为大家提供了插入动画和高效刷新的解决方案,没有提供复制和粘贴功能。要实现复制和粘贴,需要在启动程序时调用RegisterClipboardFormat注册一种剪切板数据格式,在CRETestDlg::IExRichEditOleCallback::GetClipboardData中,将图片信息封装成你自己能识别的数据(比如图片路径),调用SetClipboardData,第一个参数为你注册的剪切板格式,放入剪切板中;
然后在CRETestDlg::IExRichEditOleCallback::QueryAcceptData中判断要插入的数据格式是否为你注册的格式,如果是的话,那么剪切板中就是你的格式的数据(比如图片路径),再调用InsertImage即可。