MFC嵌入activex控件(如IE控件)的焦点问题

dengsf 2010-11-30 12:43:54
MFC程序(VC2005),嵌入ie控件(用CHtmlView改写)。
页面脚本用 window.blur() 会使浏览器失去焦点,从而导致整个程序失去焦点。请问有啥办法可以捕获并定制其行为?

网上搜索过,有人提出在页面加载后改写 window.blur 的值。但觉得这样靠破坏脚本执行环境的方法不好;而且,若脚本在加载完成前就获取blur的函数(此时未替换),待加载完成(onload)或一段时间后重新赋给blur,就能绕过这种防护。
msdn上查了IWebBroswer2的相关接口,也没发现类似的接口,最接近的是 IProtectFocus, 也只是询问页面元素是否可获取焦点,且好像是IE7之后才支持。

我对OLE、activex不熟悉,不清楚是否OLE、activex就有定义这种行为的规范。但知道可以定制 HtmlView的ControlSite来增加接口。请问各位,拦截焦点丢失是否可以做到?MFC下该如何下手?
...全文
345 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
tompaz 2010-12-17
  • 打赏
  • 举报
回复
看看父窗口能否收到事件?
dengsf 2010-12-10
  • 打赏
  • 举报
回复
各位随便给点建议啊,up!
dengsf 2010-12-06
  • 打赏
  • 举报
回复
终于有人回复了

楼上各位,页面元素获取焦点没问题,是想截获它“主动放弃焦点的行为”,如页面脚本执行window.blur()就会这样。
正常情况下,控件所在的最顶层窗口会失去焦点并移到z-order底层;但它不是最小化,需要点击任务栏两次(最小化、恢复)才能重新操作。在多标签页下,这样感觉不好。我想能截获该事件,以便切换到其它标签页,或干脆禁止它失去焦点。

m_tornado 2010-12-04
  • 打赏
  • 举报
回复
网页里有ole的话,可以自己试试能不能自己getFocus~
hongkun18 2010-12-03
  • 打赏
  • 举报
回复
是不是你该写的代码有问题啊.
我在vs2008+ocx控件,都是鼠标移动到控件里时,控件都能捕获到焦点的.
能不能在某个时刻,再次捕获焦点到应用程序阿。

帮顶。
dengsf 2010-12-03
  • 打赏
  • 举报
回复
再顶--- 回复内容太短了!
dengsf 2010-11-30
  • 打赏
  • 举报
回复
沉了,up一下。

3,248

社区成员

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

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