描述:
类似于金山词霸的鼠标取词,不过我这个只需要在ie页面取词,所以没有使用hook TextOut()等函数的方法,而是采用了IHTMLTxtRange接口。现在我的情况是:对于单frame的简单页面,很简单的通过SetSite()中传进来的容器的IUnknown指针,由IWebBrowser2->IDispatch->IHTMLDocument2->IHTMLElement->IHTMLBodyElement的顺序依次就可以得到该页面的IHTMLBodyElement接口指针,然后调用IHTMLBodyElement::createTextRange()就可以创建一个该页面的IHTMLTxtRange指针,到这时就可以通过设置这个txtRange,任意取得在这个range之类的字符了。
但是对于多frame的复杂页面,比如在线msdn的页面, 由于父页面上有多个frame,于是就没有IHTMLBodyElement接口,没法createTextRange。我想到的办法是用IHTMLDocument2::elementFromPoint()得到鼠标所指向点的IHTMLElement接口,这里的IHTMLDocument2是父页面的接口指针,当鼠标指向的是一个frame时,得到的IHTMLElement接口就是指向这个frame,我的理解没有错吧?然后因为每个frame都会有自己的IHTMLDocument2接口,我想由通过elementFromPoint()得到的frame的IHTMLElement接口得到它的IHTMLDocument2接口,然后就可以依次得到frame的IHTMLBodyElement接口从而创建frame内的IHTMLTxtRange了,要怎么才能做到呢?
虽然还是穷人,但是哪位大侠能帮我解决这个问题的话,我所有的分都给他了,bow。