HasFocus对比IsActive

时间:2019-06-27 00:31:56

标签: wxwidgets

框架如何处于“活动”状态而没有“焦点”? 根据Windows文档AFAICT,当一个窗口处于活动状态时,它会获得焦点,那么为什么要有两个变量?如何使一个变量为True,而另一个变量也为True?

2 个答案:

答案 0 :(得分:2)

焦点可能(并且通常是)属于活动顶级窗口的子级。或者,如果您愿意,活动窗口是焦点窗口的顶级父级。

答案 1 :(得分:1)

任何由wxTopLevelWindow派生的对象(wxFrame,wxDialog及其派生类)都具有方法IsActive()。 wx文档说:

  

如果此窗口当前处于活动状态,即用户为   目前正在使用它。

使用它”表示用户正在调整/移动它的大小,或者在工具栏中单击鼠标或键入控件。

HasFocus()使焦点对准的窗口接受键盘输入(即使它不是文本控件)。

注意“使用它”和“接受键盘输入”之间的细微差别。

还有另一个查询:IsEnabled(),用于用户输入,与“用户操作”不同。