通过IHTMLSelectionObject,如何得到当前选中的元素的属性以及id。

dongle2001 2008-10-14 05:02:02
IHTMLDocument2::get_selection(IHTMLSelectionObject**)函数可以获得HTML文件当前选定的对象的指针,但不知如何得到对象的名称(ID)及属性?

例如:
IHTMLDocument2* ih;
IHTMLSelectionObject* io;

GetDHtmlDocument(&ih);
LPOLESTR str;
ih->get_selection(&io);
io->get_type(&str);

这时str包含了当前选定的对象的类型,但不知如何得到对象的名称(ID)及属性?
采用:
IHTMLElement* pElem;
io->QueryInterface(IID_IHTMLElement,(void**)&pElem);
或者采用:
io->Invoke(0,IID_NULL,LOCALE_SYSTEM_DEFAULT,DISPATCH_METHOD,&di,&va,&ex,&ui);
无法返回正确性值.

请问如何处理?

还有一个小问题,IHTMLElement能不能得到自己的父对象?
...全文
255 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
liumeiqinyang 2008-11-06
  • 打赏
  • 举报
回复
lz问题解决了没有?我也碰到了呀,要是解决了高诉我解决方法啊,我开贴给分,thx
dongle2001 2008-10-17
  • 打赏
  • 举报
回复
鼠标选中什么的时候,IHTMLSelectionObject.type=Control
dongle2001 2008-10-17
  • 打赏
  • 举报
回复
一个IHTMLSelectionObject可能包含多个元素,所以是不能使用QueryInterface直接查出选择的元素的,应该查询IHTMLControlRange,再通过调用它的item(index)方法来获得每个元素。

IHTMLControlRange* pControlRange = 0;
hr = pDispRange->QueryInterface(IID_IHTMLControlRange, (void**)&pControlRange);

为什么得不到IHTMLControlRange对象,什么时候使用IHTMLSelectionObject才能得到ControlRange,而不是
TextRange
VsirSoft 2008-10-16
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 jameshooo 的回复:]
一个IHTMLSelectionObject可能包含多个元素,所以是不能使用QueryInterface直接查出选择的元素的,应该查询IHTMLControlRange,再通过调用它的item(index)方法来获得每个元素。
[/Quote]

刚才见过这帖子了
jameshooo 2008-10-15
  • 打赏
  • 举报
回复
一个IHTMLSelectionObject可能包含多个元素,所以是不能使用QueryInterface直接查出选择的元素的,应该查询IHTMLControlRange,再通过调用它的item(index)方法来获得每个元素。
吹雪 2008-10-15
  • 打赏
  • 举报
回复
IHTMLDocument4::onselectionchange
dongle2001 2008-10-14
  • 打赏
  • 举报
回复
up

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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