20 四月, 2007

ActiveX: 如何获取IE浏览器的客户区屏幕坐标

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


最新回复
发表评论


















Bold Italic Link