当前位置: BOLT界面引擎 > 知识库文章 > 元对象的焦点策略

元对象的焦点策略

作者:李亚星 2013-01-29

一个元对象获取焦点,分为被动获取焦点和主动获取焦点

 

被动焦点

一个对象被动的设置焦点,包括下面两种情况:

l  该对象是由用户的鼠标输入操作导致获取焦点,比如左键点击

l  该对象的某个子对象,由于被移除/隐藏/Disable导致失去焦点,焦点传递到自身导致获取焦点

 

元对象可以获取被动焦点,至少需要满足下面几个条件:

l  可见

l  Enable

l  挂接了至少一个鼠标或者键盘事件

l  位置不为空等

 

被动焦点策略由元对象的focusstrategy属性来控制,包括下面两种情况:

l  fuzzy 默认的焦点策略,只要对象收到了特定的鼠标事件,不管该事件是用户主动发起还是由于重定向、RouteToFather导致的,都会导致该对象被设置焦点

 

1)         对象挂接了鼠标/键盘消息,这样在收到了左键、中键或者右键的单击、双击消息,都会被设置焦点

2)         对象挂接了鼠标/键盘消息,并且收到了某个对象通过RouteToFather或者消息重定向而来的鼠标消息,包括左键、中键或者右键的单击、双击消息,那么也会被设置焦点

3)         对象的某个子对象,由于被移除/隐藏/Disable导致失去焦点,而对象本身也满足获取被动焦点的条件,那么焦点会传递到自身导致获取焦点

 

l  auto 智能焦点策略,在满足上面所述的fuzzy策略下,并且满足下面条件的对象才会被设置焦点:

 

1)         EditObjectRichEditObjectWindowlessFlashObjectEmbedTreeObject不管什么情况都可以设置被动焦点

2)         如果对象配置了有效taborder,那么可以设置被动焦点

3)         如果对象挂接了键盘相关事件,那么可以设置被动焦点(只挂接鼠标事件则不可获取被动焦点了)

4)         如果对象设置了默认的redirect,或者对键盘消息设置了redirect,那么可以设置被动焦点

 

主动焦点

 

主动焦点一般由用户显示的调用SetFocus来设置焦点,包括

l  直接调用元对象的SetFocus来设置焦点

l  对于RichEditObjectEmbedTreeObject,内嵌对象/内嵌hostwnd 设置焦点,而导致的获取焦点

 

元对象可以获取主动焦点,至少需要满足下面几个条件:

l  可见

l  Enable

l  位置不为空等

 

主动焦点不受焦点策略影响,也不受对象是否挂接鼠标/键盘消息的影响

 

迅雷公司 版权所有 Copyright 2003-2010 Thunder Inc.All Rights Reserved. 意见反馈:xl7doc@xunlei.com