关于什么是焦点,请看后面的解释.
大家有没有经常遇到这样的情况:
自己在输入一段文字,但是后台又运行有其他程序,
当文字输入到一半,这时后台程序来了一个弹窗或者突然置顶,
在输入法里剩下的半截拼音直接录进去了,
再或者,输密码的时候,输到一半,弹窗或者置顶,
自己输到哪了不知道,只好全删了重新输,这个最恼火了.
个人认为这样随意夺取屏幕焦点的行为,
跟那什么”一个艰难的决定”是一个性质,
当然什么时候应该夺取,什么时候应该保留是非常难以判断的,
这有可能涉及到用户的使用习惯,
一个简单的处理方法就是交给用户自己决定,
目测现在很多软件都是打开默认拥有焦点,覆盖之前的,
而不是默默地打开等待用户使用,
这里要说明的是,
焦点窗口和前景窗口,活动窗口并不是一个概念,
指的是能获得键盘输入的窗口,
大家难道不觉得,在没有任何提示的情况下,
夺取焦点,打断用户的输入,是一种非常野蛮的行为吗?
PS:
焦点究竟是什么呢?
简单的说,焦点决定了由哪个窗口或者控件接收键盘输入信息,因此,它又被称作输入焦点.对于用户来说,最直观的感觉是,有光标闪动的窗口或者被高亮的控件就有焦点.
很多初级应用程序员或者Windows用户有这样一个误解,认为凡是鼠标点击的窗口就是焦点窗口.当出现有的窗口或者控件点击后没有反应的现象时,就认为是焦点出现了问题.事实上,焦点仅仅控制着键盘的输入,而鼠标输入与焦点没有直接关系.
用户之所以有这样的误解是由于另一个概念,系统的焦点模式(focusmode).焦点模式决定了鼠标如何使一个窗口获得焦点.一般来说,焦点模式被分为三种:
click-tofocus:
这种模式就是指鼠标点击的窗口就可获得焦点.这是Windows用户最常见的一种模式.鼠标点击的窗口会被激活,被置于所有窗口的最前面,并接收键盘输入.
focus-follow-mouse:
有的地方也称这种模式为pointerfocus.它是指鼠标下的窗口可以获取焦点.当鼠标移到一个可以获得焦点的窗口的范围内,用户不需要点击窗口的某个地方就可以激活这个窗口,接收键盘输入.但是,这个窗口不一定会被置于所有窗口的最前面.当鼠标移出这个窗口的范围时,这个窗口也会随之失去焦点.
sloppy-focus:
这种模式与focus-follow-mouse一样,当鼠标移至某窗口的范围内的时候,该窗口会获得焦点.与focus-follow-mouse不同的是,当鼠标移出这个窗口范围时,焦点也不会随之改变.只有当鼠标移动到别的可以接收焦点的窗口时,系统焦点才改变.不同的系统对焦点模式的支持不同,所使用的焦点模型也有很大的区别.