20 四月, 2007
ActiveX: 如何获取IE浏览器的客户区屏幕坐标
- 首先要获取顶层浏览器窗口的接口,参考:"Retrieve the Top-Level IWebBrowser2 Interface from an ActiveX Control"
- 注意,IWebBrowser2的ClientToWindow方法,传入参数并非某点坐标,而是客户区的Size。返回的结果是在给定客户区Size的前提下,整个Browser的大小,包含标题栏,工具条,菜单,状态栏等,也包含整个客户区四周的Margin。所以无法通过这个方法取得客户端的left-top坐标
- 取得IHTMLDocument2接口:IWebBrowser2::get_document
- IHTMLWindow2接口:IHTMLDocument2::get_parentWindow
- 取得IHTMLWindow3接口:IHTMLWindow2::QueryInterface(IID_IHTMLWindow3)。注:window对象的所有方法,是通过IHTMLWindow2、IHTMLWindow3、IHTMLWindow4、IHTMLWindow5这4个接口共同实现的。
- 通过IHTMLWindow3接口,取得window.screenLeft和window.screenTop的值。这两个值就是浏览器客户区left-top点相对于屏幕的坐标
- 通过IHTMLDocument2::get_body,获取document.body对象的offsetLeft, offsetTop, offsetWidth, offsetHeight值
- 现在,我们终于可以得到浏览器客户区的屏幕坐标了
最新回复
发表评论



