如何得到插入到richedit中的控件?

bborn 2007-01-24 06:08:40
msdn上的那个 polygon 的例子
一个atl activex控件
我把它插入到 richedit中去了

IPolyCtl* lpPolyCtl = NULL; //控件
......
lpRichEditOle->GetClientSite(&lpOleClientSite);

ZeroMemory(&reobject, sizeof(REOBJECT));//初始化一个对象
reobject.cbStruct = sizeof(REOBJECT);
reobject.clsid = clsid;
......
hr = lpRichEditOle->InsertObject( &reobject );

现在我想再得到他的 IPolyCtl 调用他的事件
请问我该怎么做?

IRichEditOle::GetObject 这个函数有用吗 总是调用不正确
...全文
327 9 打赏 收藏 举报
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
bborn 2007-01-25
楼上说的像神话一样啊
  • 打赏
  • 举报
回复
bborn 2007-01-25
1 一个mfc窗口 一个richedit 两个按钮 a 和b , 一个msdn上 polygon 的activex 控件
2 a 按钮的事件 按这个实现 http://hi.baidu.com/favesoft/blog/item/844a9bd4a4dbcc01a08bb765.html

3 控件插入成功 可以正常显示

4 b 按钮事件 我想得到插入控件的接口
GetObjectcount() 返回是正确的
但是
REOBJECT reobject;
GetObject(0,&reobject,REO_GETOBJ_ALL_INTERFACES);
总是错误
我看了codeproject上一个c#做的程序 和这个差不多的工程 但是可以正常返回
不明白为什么? 是getobject第三个参数的问题吗
  • 打赏
  • 举报
回复
liugwind 2007-01-25
方法很多,richedit窗口是控件窗口的父窗口,FindWindow都行
  • 打赏
  • 举报
回复
hanjack 2007-01-25
IRichEditOle::GetObject()方法是可以用的。
如下:
hr = pIRichEditOle->GetObject( 0, &reoobject, REO_GETOBJ_POLEOBJ );
这样调用成功后,reoobject结构中的poleobj就是插入的对象的IOleObject接口,调用完成后别忘了用Release释放。
  • 打赏
  • 举报
回复
liugwind 2007-01-25
你插入有没有成功阿?
  • 打赏
  • 举报
回复
bborn 2007-01-24
http://hi.baidu.com/favesoft/blog/item/844a9bd4a4dbcc01a08bb765.html

看看这文章
  • 打赏
  • 举报
回复
bborn 2007-01-24
插入成功了 ok?

我现在是想得到插入后的控件的..."句柄" 不知道该怎么称呼
  • 打赏
  • 举报
回复
trexoven 2007-01-24
不好意思,刚才去查了一下这么例子,上述几个接口都支持,我想你把他插入到richedit中去的话,你还要实现IRichEditOleCallback, IOleInPlaceFrame接口,当然你也要实现IOleWindow,IOleInPlaceUIWindow接口,因为richedit默认是没有实现这些接口的。
  • 打赏
  • 举报
回复
trexoven 2007-01-24
IPolyCtl 你这个控件有没有实现IOleObject , IDataObject , IPersistStream这三个接口,如果没有你是插入不了的
  • 打赏
  • 举报
回复
发帖
ATL

3233

社区成员

ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
帖子事件
创建了帖子
2007-01-24 06:08
社区公告
暂无公告