★★★★★★★★★有关RichEdit控件的问题,顶者有分★★★★★★★★★★★

huaxiaoyu 2007-03-26 11:25:35
怎么获取的插入到RichEdit控件的一张图片呀(或是一个OLE对象)。
IRichEditOle* pRichEditOle = m_SendEdit.GetIRichEditOle();
REOBJECT reobject;
IOleObject* oleobj;
ZeroMemory(&reobject, sizeof(REOBJECT));
reobject.cbStruct = sizeof(REOBJECT);
pRichEditOle->GetObject(0, &reobject, REO_GETOBJ_ALL_INTERFACES);
这样能得到ole对象的信息, 但我不知道样才能得到我插入到其中的hBitmap的句柄。希望大家不吝赐教,小弟感激不尽呀!!!!!!!!!!
还有一个问题,就是QQ的消息发送框能复制粘贴图片,复制是richedit自己实现的,但粘贴没有,怎么做呀?
...全文
408 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
qingsion 2007-04-19
  • 打赏
  • 举报
回复
帮顶!^-^
huaxiaoyu 2007-04-04
  • 打赏
  • 举报
回复
SCODE sc = oleobj->GetClipboardData(0, &pDataObject);
错误提示:"尚未实现"又是怎么回事呢?
我真的被这个问题彻底的搞跨了!!
kuiyouli 2007-04-04
  • 打赏
  • 举报
回复
我顶
ToperRay 2007-03-29
  • 打赏
  • 举报
回复
//插入OLE对象
REOBJECT reobject;
ZeroMemory(&reobject, sizeof(REOBJECT));
reobject.cbStruct = sizeof(REOBJECT);

CLSID clsid;
sc = pOleObject->GetUserClassID(&clsid);
if (sc != S_OK)
AfxThrowOleException(sc);

reobject.clsid = clsid;
reobject.cp = REO_CP_SELECTION;
reobject.dvaspect = DVASPECT_CONTENT;
reobject.poleobj = pOleObject;
reobject.polesite = lpClientSite;
reobject.pstg = pStorage;
reobuject.dwUser = 0x1f3a;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
kimryo 2007-03-26
  • 打赏
  • 举报
回复
如果是BMP在剪贴板里面的话,应该是完整的DIB数据~
huaxiaoyu 2007-03-26
  • 打赏
  • 举报
回复
因为我粘贴的时候剪贴板里面如果已存放了图片,我想粘贴进来怎么实现呢?其它程序放图片放入剪贴板时是在剪贴板里面存放图片的什么信息呀?
huaxiaoyu 2007-03-26
  • 打赏
  • 举报
回复
那要是这样,粘贴怎么实现呢?
kimryo 2007-03-26
  • 打赏
  • 举报
回复
不过加入的时候他应该只是Link的object吧~并没有真正的embed~所以用Id来标示是最快捷有效的方法~
huaxiaoyu 2007-03-26
  • 打赏
  • 举报
回复
楼上的大哥,你是说我插入前给ole对象一个编号,并把这个对象存起来,后面通过编号对查找存入的对象的那个容器,并取出对象吗?
但这样,RichEdit本身就存放了这些对象,我看资料说是可以通过它所提供的接口返回所插入的ole对象的呀,就这下面这段代码,但不知道什么地方有问题。
IRichEditOle* pRichEditOle = m_SendEdit.GetIRichEditOle();
REOBJECT reobject;
IOleObject* oleobj;
ZeroMemory(&reobject, sizeof(REOBJECT));
reobject.cbStruct = sizeof(REOBJECT);
pRichEditOle->GetObject(0, &reobject, REO_GETOBJ_ALL_INTERFACES);

oleobj = reobject.poleobj;
IDataObject *pDataObject;
SCODE sc = oleobj->GetClipboardData(0, &pDataObject);
if(sc != S_OK)
{
if (sc == OLE_E_NOTRUNNING )
{
//The object is not running.
//错误提示对象没有运行,不知道怎么回来,倒底它说的对象是指什么对象呀?
AfxThrowOleException(sc);
return FALSE;
}
AfxThrowOleException(sc);
return FALSE;
}
FORMATETC fm;
STGMEDIUM sm;
pDataObject->GetData(&fm, &sm);
if (fm.cfFormat == CF_BITMAP)
{
//sm.hBitmap就是所插入的图片句柄了
}
DentistryDoctor 2007-03-26
  • 打赏
  • 举报
回复
可以将dwUser用上。
yjgx007 2007-03-26
  • 打赏
  • 举报
回复
to huaxiaoyu (宇宙骄龙):

不要用 ★★★★★★★★★★★ 加在标题上, 你的问题和其他人的问题同样重要 :)
dovelee 2007-03-26
  • 打赏
  • 举报
回复
ding
kimryo 2007-03-26
  • 打赏
  • 举报
回复
reobject.dwUser
kimryo 2007-03-26
  • 打赏
  • 举报
回复
你能取回的只有一个Id而已,

所以给你的每幅BMP编个号码,然后加入时指定为dwUser,取回的时候就知道是哪一幅BMP了~
huaxiaoyu 2007-03-26
  • 打赏
  • 举报
回复
图片的复制粘贴的怎么实现的呀?复制进去的时候怎么存,粘贴出来的时候怎么识别?

2,586

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 资源
社区管理员
  • 资源
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧