查看源代码 wxWindow (wx v2.4.3)
wxWindow
是所有窗口的基类,代表屏幕上的任何可见对象。
所有控件、顶层窗口等都是窗口。但是,Sizer 和设备上下文不是,因为它们本身不出现在屏幕上。
请注意,窗口的所有子项都将在窗口本身被删除之前由析构函数自动删除,这意味着您不必担心手动删除它们。有关更多信息,请参阅窗口删除概述。
另请注意,在此以及许多其他 wxWidgets 类中,某些 GetXXX()
方法可能会被重载(例如,getSize/1
或 getClientSize/1
)。在这种情况下,重载是非虚拟的,因为具有多个同名的虚拟函数会导致派生类级别的虚拟函数名称隐藏(用英语来说,这意味着如果派生类覆盖了任何重载变体,则必须覆盖所有重载变体)。为了允许在派生类中覆盖它们,wxWidgets 使用唯一的受保护虚拟 DoGetXXX()
方法,并且所有 GetXXX()
方法都会转发到该方法,因此覆盖前者会更改后者的行为。
样式
此类支持以下样式
wxBORDER_DEFAULT:窗口类将决定要显示的边框类型(如果有)。
wxBORDER_SIMPLE:在窗口周围显示细边框。wxSIMPLE_BORDER 是此样式的旧名称。
wxBORDER_SUNKEN:显示凹陷边框。wxSUNKEN_BORDER 是此样式的旧名称。
wxBORDER_RAISED:显示凸起边框。wxRAISED_BORDER 是此样式的旧名称。
wxBORDER_STATIC:显示适合静态控件的边框。wxSTATIC_BORDER 是此样式的旧名称。仅限 Windows。
wxBORDER_THEME:在当前平台上显示适合控件的本机边框。在 Windows 上,这将是一个主题边框;在大多数其他平台上,将使用凹陷边框。有关 Windows 上主题边框的更多信息,请参阅 Windows 上的主题边框。
wxBORDER_NONE:不显示任何边框,覆盖窗口的默认边框样式。wxNO_BORDER 是此样式的旧名称。
wxBORDER_DOUBLE:此样式已过时,不应使用。
wxTRANSPARENT_WINDOW:窗口是透明的,也就是说,它不会接收绘制事件。仅限 Windows。
wxTAB_TRAVERSAL:此样式由 wxWidgets 用于支持在其子项之间进行 TAB 导航的窗口,例如
wxDialog
和wxPanel
。它几乎不应该在应用程序代码中使用。wxWANTS_CHARS:使用此样式来指示窗口想要获取所有键的所有字符/键事件 - 即使是像 TAB 或 ENTER 这样的通常用于对话框导航的键,如果没有此样式,这些键也不会生成。如果您需要使用此样式来获取箭头等,但仍希望进行正常的键盘导航,则应在响应 Tab 和 Shift-Tab 的按键事件时调用 Navigate。
wxNO_FULL_REPAINT_ON_RESIZE:在 Windows 上,此样式用于禁用在窗口大小更改时完全重绘窗口。由于此行为现在是默认行为,因此该样式现在已过时,不再起作用。
wxVSCROLL:使用此样式启用垂直滚动条。请注意,此样式不能用于不支持滚动条的本机控件,也不能用于大多数端口中的顶层窗口。
wxHSCROLL:使用此样式启用水平滚动条。与 wxVSCROLL 相同的限制适用于此样式。
wxALWAYS_SHOW_SB:如果窗口有滚动条,则在不需要它们时(即当窗口的大小足够大,不需要滚动条来导航时)禁用它们而不是隐藏它们。此样式当前在 wxMSW、wxGTK 和 wxUniversal 中实现,在其他平台上不起作用。
wxCLIP_CHILDREN:使用此样式来消除由于背景被重绘然后子项被绘制在其上而引起的闪烁。仅限 Windows。
wxFULL_REPAINT_ON_RESIZE:使用此样式强制在每次调整窗口大小时完全重绘窗口,而不是仅重绘受大小调整影响的窗口部分。请注意,这是 2.5.1 版本之前的默认行为,如果您在使用以前可以正常工作的代码时遇到重绘问题,则可能需要尝试此操作。目前,此样式仅适用于 GTK+ 2 和 Windows,并且在其他平台上始终进行完全重绘。
额外样式
此类支持以下额外样式
wxWS_EX_BLOCK_EVENTS:默认情况下,wxCommandEvents 和派生类的对象会递归地转发到父窗口等。对此给定窗口使用此标志允许在此窗口阻止此传播,即阻止事件进一步向上传播。对话框默认启用此标志,原因在 overview_events 中进行了解释。
wxWS_EX_TRANSIENT:不要将此窗口用作其他窗口的隐式父窗口:必须将此用于瞬态窗口,否则有创建以该窗口为父窗口的对话框/框架的风险,如果父窗口在子窗口之前被销毁,则会导致崩溃。
wxWS_EX_CONTEXTHELP:在 Windows 下,在标题上放置一个查询按钮。按下时,Windows 将进入上下文相关帮助模式,如果用户单击应用程序窗口,wxWidgets 将发送一个
wxEVT_HELP
事件。此样式不能与wxMAXIMIZE_BOX
或wxMINIMIZE_BOX
一起使用(由于底层本机行为),因此如果使用此样式,这两个样式将自动关闭。wxWS_EX_PROCESS_IDLE:此窗口应始终处理空闲事件,即使
wxIdleEvent:setMode/1
设置的模式是wxIDLE_PROCESS_SPECIFIED
。wxWS_EX_PROCESS_UI_UPDATES:此窗口应始终处理 UI 更新事件,即使
wxUpdateUIEvent:setMode/1
设置的模式是wxUPDATE_UI_PROCESS_SPECIFIED
。
参见
此类派生自以下类,并且可以使用这些类中的函数
wxWidgets 文档:wxWindow
事件
从此类发出的事件类型
摘要
函数
设置缓存的最佳大小值。
如果系统支持透明窗口并且调用 setTransparent/2
可能会成功,则返回 true。
将所有鼠标输入定向到此窗口。
将窗口居中。
使其父窗口的窗口居中。
通过使用当前背景颜色填充窗口来清除窗口。
将相对于此窗口的坐标转换为屏幕坐标。
将相对于此窗口的坐标转换为屏幕坐标。
此函数只是生成一个 wxCloseEvent
,其处理程序通常会尝试关闭窗口。
这是一个重载的成员函数,为了方便起见而提供。它与上面的函数唯一的不同之处在于它接受的参数。
这是一个重载的成员函数,为了方便起见而提供。它与上面的函数唯一的不同之处在于它接受的参数。
在创建 C++ 对象后构造实际的窗口对象。
安全地销毁窗口。
销毁对象
销毁窗口的所有子项。
禁用窗口。
启用或禁用对拖放文件事件 (OnDropFiles) 的接受能力。
启用或禁用窗口以接受用户输入。
查找当前拥有键盘焦点的窗口或控件。
按名称查找此窗口的子窗口。
查找第一个具有给定 id
的窗口。
按标签查找窗口。
按名称查找窗口(在窗口构造函数或 create/4
函数调用中给定)。
调整窗口大小以适应其最佳大小。
类似于 fit/1
,但调整窗口内部(虚拟)大小。
冻结窗口,或者换句话说,阻止任何更新在屏幕上发生,窗口根本不会重绘。
将与 DPI 无关的像素值转换为适用于当前工具包的像素值。
获取此窗口的加速器表。
返回窗口的背景颜色。
返回窗口的背景样式。
此函数返回窗口可接受的最佳最小大小。
返回当前捕获的窗口。
返回与窗口关联的 caret()。
返回此窗口的字符高度。
返回此窗口的平均字符宽度。
返回窗口子窗口列表的常量引用。
这是一个重载的成员函数,为了方便起见而提供。它与上面的函数唯一的不同之处在于它接受的参数。
返回此窗口所属的 sizer,如果有的话,否则返回 NULL。
返回此窗口的逻辑像素到物理像素的映射因子。
返回与此窗口关联的光标。
返回此窗口使用的显示器的 DPI。
返回此窗口使用的 DPI 与标准 DPI 的比率。
返回关联的拖放目标,可能为 NULL。
返回窗口的额外样式位。
返回此窗口的字体。
返回窗口的前景色。
返回窗口的祖父窗口,如果没有则返回 NULL。
返回物理窗口的平台特定句柄。
获取用作此窗口上下文相关帮助的帮助文本。
返回窗口的标识符。
从任何窗口获取标签的通用方法,用于标识目的。
返回窗口的最大大小。
返回窗口的最小大小,指示 sizer 布局机制这是所需的最小大小。
返回窗口的名称。
返回窗口的父窗口,如果没有父窗口则返回 NULL。
这会获取窗口的位置(以像素为单位),对于子窗口,相对于父窗口,对于顶级窗口,相对于显示原点。
以 {X,Y,W,H} 对象的形式返回窗口的位置和大小。
返回窗口在屏幕坐标中的位置,无论该窗口是子窗口还是顶级窗口。
以 {X,Y,W,H} 对象的形式返回窗口在屏幕上的位置和大小。
返回内置滚动条位置。
返回内置滚动条范围。
返回内置滚动条滑块大小。
有关更多信息,请参见 GetSize(int,int) 重载。
返回先前调用 setSizer/3
与窗口关联的 sizer,或 NULL。
获取字符串的尺寸,就像使用当前选定的字体在窗口上绘制一样。
如果窗口使用系统主题绘制其背景,则返回 true。
获取关联的工具提示,如果没有则返回 NULL。
获取字符串的尺寸,就像使用当前选定的字体在窗口上绘制一样。
这会获取窗口的虚拟大小(以像素为单位)。
获取传递给构造函数或 create/4
方法的窗口样式。
返回先前传递给 setWindowVariant/2
的值。
如果此窗口具有当前鼠标捕获,则返回 true。
如果此窗口当前具有此方向的滚动条,则返回 true。
如果此窗口背景是透明的(例如,对于 wxStaticText
),并且应显示父窗口背景,则返回 true。
等同于调用 show/2
(false)。
此函数在窗口创建期间调用(或应在自定义控件的情况下调用),以智能地设置窗口视觉属性,即字体以及前景色和背景色。
发送 wxEVT\_INIT\_DIALOG
事件,其处理程序通常通过验证器将数据传输到对话框。
重置缓存的最佳大小值,以便在下次需要时重新计算。
如果窗口内容由系统进行双缓冲,则返回 true,也就是说,在窗口上进行的任何绘图实际上是在临时后备表面上完成的,并且稍后会一次性传输到屏幕上。
如果窗口已启用,即如果它接受用户输入,则返回 true,否则返回 false。
这是一个重载的成员函数,为了方便起见而提供。它与上面的函数唯一的不同之处在于它接受的参数。
如果自上次重绘以来给定的点或矩形区域已暴露,则返回 true。
这是一个重载的成员函数,为了方便起见而提供。它与上面的函数唯一的不同之处在于它接受的参数。
如果窗口当前被调用 freeze/1
冻结,则返回 true。
如果窗口被保留,则返回 true,否则返回 false。
如果窗口显示,则返回 true,如果已隐藏,则返回 false。
如果窗口在屏幕上物理可见,则返回 true,也就是说,它已显示,并且其所有父窗口(直到顶级窗口)也已显示。
如果给定窗口是顶级窗口,则返回 true。
使用关联的 sizer 布局此窗口的子窗口。
与 scrollLines/2
(1) 相同。
与 scrollLines/2
(-1) 相同。
将窗口降低到窗口层次结构的底部(Z 顺序)。
将窗口移动到给定位置。
将窗口移动到给定位置。
在指定的 win
之后,在制表符导航顺序中移动此窗口。
与 moveAfterInTabOrder/2
相同,只是它将此窗口插入到 win
之前,而不是紧随其后。
从该窗口开始执行键盘导航操作。
默认构造函数。
构造一个窗口,它可以是框架、对话框或任何其他非控件窗口的子窗口。
与 scrollPages/2
(1) 相同。
与 scrollPages/2
(-1) 相同。
在相对于此窗口的指定坐标处弹出给定的菜单,并在用户关闭菜单时返回控制权。
这是一个重载的成员函数,为了方便起见而提供。它与上面的函数唯一的不同之处在于它接受的参数。
将窗口提升到窗口层次结构的顶部(Z 顺序)。
导致此窗口及其所有子窗口递归地(wxGTK1 下未实现除外)重绘。
重绘给定矩形的内容:仅重绘内部区域。
释放使用 captureMouse/1
捕获的鼠标输入。
移除一个子窗口。
重新设置窗口的父级,也就是说,将从其当前父窗口中删除该窗口(例如)。
从屏幕坐标转换为客户端窗口坐标。
从屏幕坐标转换为客户端窗口坐标。
将窗口向下滚动给定的行数(如果 lines
为正数)或向上滚动。
将窗口向下滚动给定的页数(如果 pages
为正数)或向上滚动。
在窗口中物理滚动像素,并相应地移动子窗口。
设置此窗口的加速器表。
确定在调整窗口大小时是否自动调用 layout/1
函数。
设置窗口的背景颜色。
设置窗口的背景样式。
设置与窗口关联的 caret()。
这是一个重载的成员函数,为了方便起见而提供。它与上面的函数唯一的不同之处在于它接受的参数。
这会设置窗口客户端区域的大小(以像素为单位)。
由 wxSizer
内部使用,用于通知窗口它正被给定的 sizer 管理。
设置窗口的光标。
如果系统支持,则打开或关闭窗口的双缓冲。
将一个拖放目标与此窗口关联。
设置窗口的额外样式位。
设置此窗口以接收键盘输入。
当用户通过键盘(例如使用 TAB
键)将焦点给予此窗口时,wxWidgets 键盘导航代码会调用此函数。
设置此窗口的字体。
设置窗口的前景色。
设置要用作此窗口上下文相关帮助的帮助文本。
设置窗口的标识符。
设置窗口的标签。
设置窗口的最大尺寸,以指示 sizer 布局机制此为最大可能尺寸。
设置窗口的最小尺寸,以指示 sizer 布局机制此为最小所需尺寸。
设置窗口的名称。
设置窗口的背景颜色,但阻止它被此窗口的子窗口继承。
设置窗口的字体,但阻止它被此窗口的子窗口继承。
设置窗口的前景颜色,但阻止它被此窗口的子窗口继承。
设置内置滚动条的属性。
设置其中一个内置滚动条的位置。
这是一个重载的成员函数,为了方便起见而提供。它与上面的函数唯一的不同之处在于它接受的参数。
以像素为单位设置窗口的大小。
以像素为单位设置窗口的大小。
这是一个重载的成员函数,为了方便起见而提供。它与上面的函数唯一的不同之处在于它接受的参数。
设置窗口具有给定的布局 sizer。
将 sizer 与窗口关联,并相应地设置窗口大小和最小大小。
此函数告诉窗口是否应使用系统的“主题”代码来绘制窗口的背景,而不是它自己的背景绘制代码。
这是一个重载的成员函数,为了方便起见而提供。它与上面的函数唯一的不同之处在于它接受的参数。
设置窗口的透明度。
这是一个重载的成员函数,为了方便起见而提供。它与上面的函数唯一的不同之处在于它接受的参数。
以像素为单位设置窗口的虚拟大小。
有关详细信息,请参阅 setWindowStyleFlag/2
。
设置窗口的样式。
选择要使用的窗口显示的不同变体。
从此函数返回 true,以允许通过 inheritAttributes/1
更改此窗口的颜色。
等同于 show(This, [])
。
显示或隐藏窗口。
在先前调用 freeze/1
之后重新启用窗口更新。
将当前工具包的像素值转换为与 DPI 无关的像素值。
将子控件中的值传输到其验证器指定的数据区域。
将值从其验证器指定的数据区域传输到子控件。
调用此方法会立即重绘窗口及其所有子窗口的失效区域(通常仅在控制流返回事件循环时发生)。
此函数向窗口发送一个或多个 wxUpdateUIEvent
。
使用其验证器验证子控件的当前值。
将指针移动到窗口上的给定位置。
类型
-type wxWindow() :: wx:wx_object().
函数
-spec cacheBestSize(This, Size) -> ok when This :: wxWindow(), Size :: {W :: integer(), H :: integer()}.
设置缓存的最佳大小值。
如果系统支持透明窗口并且调用 setTransparent/2
可能会成功,则返回 true。
如果此函数返回 false,则当前系统绝对不支持透明窗口。
-spec captureMouse(This) -> ok when This :: wxWindow().
将所有鼠标输入定向到此窗口。
调用 releaseMouse/1
以释放捕获。
请注意,wxWidgets 会维护捕获鼠标的窗口堆栈,当鼠标释放时,捕获会返回到先前捕获它的窗口,并且只有在没有先前窗口的情况下才会真正释放。特别是,这意味着您必须释放鼠标与捕获它一样多次,除非窗口收到 wxMouseCaptureLostEvent
事件。
任何在操作开始时捕获鼠标的应用程序都必须处理 wxMouseCaptureLostEvent
,并在收到事件时取消此操作。事件处理程序不得重新捕获鼠标。
参见
-spec center(This) -> ok when This :: wxWindow().
等效于 center(This, [])
。
等效于:centre/2
-spec centerOnParent(This) -> ok when This :: wxWindow().
等效于:centreOnParent/2
-spec centre(This) -> ok when This :: wxWindow().
等效于 centre(This, [])
。
将窗口居中。
备注:如果窗口是顶级窗口(即没有父窗口),它将始终相对于屏幕居中。
参见:center/2
-spec centreOnParent(This) -> ok when This :: wxWindow().
使其父窗口的窗口居中。
这是 centre/2
的更易读的同义词。
备注:此方法提供了一种使顶级窗口在其父窗口而不是整个屏幕上居中的方法。如果没有父窗口或者窗口不是顶级窗口,则行为与 centre/2
相同。
-spec clearBackground(This) -> ok when This :: wxWindow().
通过使用当前背景颜色填充窗口来清除窗口。
不会导致生成擦除背景事件。
请注意,这使用 wxClientDC
在窗口上绘制,并且在同时在此窗口的 wxPaintDC
上绘制时这样做产生的结果是未定义的。因此,不应从 EVT_PAINT 处理程序中使用此方法,只需在您已在那里使用的 wxPaintDC
上使用 wxDC:clear/1
即可。
-spec clientToScreen(This, Pt) -> {X :: integer(), Y :: integer()} when This :: wxWindow(), Pt :: {X :: integer(), Y :: integer()}.
将相对于此窗口的坐标转换为屏幕坐标。
-spec clientToScreen(This, X, Y) -> {X :: integer(), Y :: integer()} when This :: wxWindow(), X :: integer(), Y :: integer().
将相对于此窗口的坐标转换为屏幕坐标。
等效于 close(This, [])
。
此函数只是生成一个 wxCloseEvent
,其处理程序通常会尝试关闭窗口。
但是,它不会关闭窗口本身。
返回:如果事件已处理且未被否决,则返回 true,否则返回 false。
备注:关闭调用窗口的关闭处理程序,为窗口提供选择是否销毁窗口的机会。通常它只与顶级窗口(wxFrame
和 wxDialog
类)一起使用,因为其他窗口不应该有任何特殊的 OnClose() 逻辑。关闭处理程序应检查窗口是否正在被强制删除,使用 wxCloseEvent:canVeto/1
,在这种情况下,它应该使用 'Destroy'/1
销毁窗口。请注意,调用 Close 并不能保证窗口会被销毁;但是,它提供了一种模拟手动关闭窗口的方法,这可能会或可能不会通过销毁窗口来实现。wxDialog::OnCloseWindow 的默认实现不一定会删除对话框,因为它只会模拟由相应的按钮事件处理程序处理的 wxID_CANCEL 事件,并且可能根本不执行任何操作。要保证窗口将被销毁,请改用 'Destroy'/1
参见
-spec convertDialogToPixels(This, Sz) -> {W :: integer(), H :: integer()} when This :: wxWindow(), Sz :: {W :: integer(), H :: integer()}.
这是一个重载的成员函数,为了方便起见而提供。它与上面的函数唯一的不同之处在于它接受的参数。
-spec convertPixelsToDialog(This, Sz) -> {W :: integer(), H :: integer()} when This :: wxWindow(), Sz :: {W :: integer(), H :: integer()}.
这是一个重载的成员函数,为了方便起见而提供。它与上面的函数唯一的不同之处在于它接受的参数。
-spec create(This, Parent, Id, [Option]) -> boolean() when This :: wxWindow(), Parent :: wxWindow(), Id :: integer(), Option :: {pos, {X :: integer(), Y :: integer()}} | {size, {W :: integer(), H :: integer()}} | {style, integer()}.
在创建 C++ 对象后构造实际的窗口对象。
wxWindow
类的非默认构造函数执行两项操作:它初始化 C++ 对象,并在底层图形工具包中创建窗口对象。create/4
方法可用于稍后执行第二部分,而默认构造函数可用于仅执行第一部分。
请注意,必须恰好创建一次底层窗口,即,如果您使用不执行此操作的默认构造函数,则在您使用该窗口之前 必须
调用 create/4
,如果您使用非默认构造函数,则 不能
调用 create/4
,因为底层窗口已创建。
请注意,可以在创建 C++ 对象本身和在其上调用 create/4
之间调用对象的一些方法,这实际上是有用的,例如,在窗口完全初始化之前避免显示窗口内容的一种常见模式是
另请注意,可以创建派生类型的对象,然后在该对象上调用 create/4
:这在 overview_xrc 中特别使用。
此方法的参数与非默认构造函数的参数具有完全相同的含义,请参考它们的描述。
返回:如果窗口创建成功则返回 true,否则返回 false
安全地销毁窗口。
请使用此函数代替 delete 运算符,因为不同的窗口类可能以不同的方式销毁。当此函数被调用时,框架和对话框不会立即销毁 - 它们会被添加到窗口列表中,以便在空闲时删除,此时所有窗口的事件都已处理完毕。这可以防止事件被发送到不存在的窗口而导致的问题。
返回:如果窗口已成功删除,或者已添加到等待实际删除的窗口列表中,则返回 true。
-spec destroy(This :: wxWindow()) -> ok.
销毁对象
销毁窗口的所有子项。
由析构函数自动调用。
禁用窗口。
与 enable/2
Enable(false) 相同。
返回:如果窗口已被禁用则返回 true,如果在此函数调用之前已禁用则返回 false。
启用或禁用对拖放文件事件 (OnDropFiles) 的接受能力。
备注:仅适用于 2.8.9 版本之前的 Windows,自 2.8.10 版本起在所有平台上可用。在非 Windows 平台上,不能与 setDropTarget/2
一起使用。
等同于 enable(This, [])
。
启用或禁用窗口以接受用户输入。
请注意,当父窗口被禁用时,其所有子窗口也会被禁用,并且当父窗口再次启用时,它们也会被重新启用。
可以通过在调用 create/4
创建实际底层窗口之前,调用此方法来使窗口初始创建为禁用状态,例如:
返回:如果窗口已启用或禁用则返回 true,如果没有执行任何操作,即如果窗口已经处于指定状态则返回 false。
参见
-spec findFocus() -> wxWindow().
查找当前拥有键盘焦点的窗口或控件。
备注:请注意,这是一个静态函数,因此无需 wxWindow
指针即可调用。
参见:setFocus/1
-spec findWindow(This, Id) -> wxWindow() when This :: wxWindow(), Id :: integer(); (This, Name) -> wxWindow() when This :: wxWindow(), Name :: unicode:chardata().
按名称查找此窗口的子窗口。
如果它与自身匹配,则可能返回 this
。
请注意,此函数仅搜索真正的子窗口,而不是将此窗口用作父窗口的顶层窗口。
-spec findWindowById(Id, [Option]) -> wxWindow() when Id :: integer(), Option :: {parent, wxWindow()}.
查找第一个具有给定 id
的窗口。
如果 parent
为 NULL,则搜索将从所有顶层框架和对话框开始;如果非 NULL,则搜索将仅限于给定的窗口层次结构。在这两种情况下,搜索都是递归的。
参见:findWindow/2
返回:具有给定 id
的窗口,如果未找到则返回 NULL。
-spec findWindowByLabel(Label) -> wxWindow() when Label :: unicode:chardata().
-spec findWindowByLabel(Label, [Option]) -> wxWindow() when Label :: unicode:chardata(), Option :: {parent, wxWindow()}.
按标签查找窗口。
根据窗口的类型,标签可以是窗口标题或面板项目标签。如果 parent
为 NULL,则搜索将从所有顶层框架和对话框开始;如果非 NULL,则搜索将仅限于给定的窗口层次结构。
在这两种情况下,搜索都是递归的,并且与 findWindow/2
不同,也会递归到顶层子窗口。
参见:findWindow/2
返回:具有给定 label
的窗口,如果未找到则返回 NULL。
-spec findWindowByName(Name) -> wxWindow() when Name :: unicode:chardata().
-spec findWindowByName(Name, [Option]) -> wxWindow() when Name :: unicode:chardata(), Option :: {parent, wxWindow()}.
按名称查找窗口(在窗口构造函数或 create/4
函数调用中给定)。
如果 parent
为 NULL,则搜索将从所有顶层框架和对话框开始;如果非 NULL,则搜索将仅限于给定的窗口层次结构。
在这两种情况下,搜索都是递归的,并且与 findWindow/2
不同,也会递归到顶层子窗口。
如果未找到具有此名称的窗口,则调用 findWindowByLabel/2
,即首先将名称解释为(内部)名称,但如果此操作失败,则将其解释为(用户可见)标签。由于此行为可能会令人困惑,因此通常最好直接使用带有名称的 findWindow/2
重载或 findWindowByLabel/2
。
返回:具有给定 name
的窗口,如果未找到则返回 NULL。
-spec fit(This) -> ok when This :: wxWindow().
调整窗口大小以适应其最佳大小。
使用此函数等效于将窗口大小设置为 getBestSize/1
的返回值。
请注意,与 setSizerAndFit/3
不同,此函数仅更改当前窗口大小,而不更改其最小大小。
参见:窗口大小调整概述
-spec fitInside(This) -> ok when This :: wxWindow().
类似于 fit/1
,但调整窗口内部(虚拟)大小。
主要用于滚动窗口,以便在不触发大小事件的大小更改之后,和/或没有内部尺寸器的滚动窗口之后重置滚动条。如果没有任何子窗口,此函数同样不会执行任何操作。
-spec freeze(This) -> ok when This :: wxWindow().
冻结窗口,或者换句话说,阻止任何更新在屏幕上发生,窗口根本不会重绘。
必须调用 thaw/1
才能重新启用窗口重绘。对这两个函数的调用可以嵌套,但是为了确保窗口再次正确重绘,您必须解冻它的次数与冻结它的次数完全相同。
如果窗口有任何子窗口,它们也会被递归冻结。
此方法对于视觉外观优化很有用(例如,在 wxGTK 下将许多大型文本连续插入 wxTextCtrl
之前使用它是一个好主意),但并非在所有平台或所有控件上都实现,因此它主要只是对 wxWidgets 的提示,而不是强制性指令。
参见
-spec fromDIP(D, W) -> integer() when D :: integer(), W :: wxWindow(); (Sz, W) -> {W :: integer(), H :: integer()} when Sz :: {W :: integer(), H :: integer()}, W :: wxWindow(); (This, D) -> integer() when This :: wxWindow(), D :: integer(); (This, Sz) -> {W :: integer(), H :: integer()} when This :: wxWindow(), Sz :: {W :: integer(), H :: integer()}.
将与 DPI 无关的像素值转换为适用于当前工具包的像素值。
与 DPI 无关的像素只是标准 96 DPI 分辨率下的像素。为了在高分辨率下保持相同的物理尺寸,物理像素值必须按 getDPIScaleFactor/1
缩放,但此缩放可能已由底层工具包(GTK+、Cocoa...)自动完成。此方法仅在较低级别的工具包尚未完成转换时才执行转换,因此通过对像素值使用此方法,您可以保证相应元素的物理尺寸在所有平台的所有分辨率下保持不变。例如,为了避免在高 DPI 屏幕上使用微小的位图,应该使用而不是创建硬编码大小为 32 像素的位图。
请注意,只有在使用硬编码的像素值时才需要此函数。如果大小已经基于与 DPI 无关的单位(例如对话框单位)或者您依赖于控件的自动最佳大小确定并使用尺寸器来布局它们,则无需使用此函数。
另请注意,如果 sz
的任一组件具有 -1 的特殊值,则会按原样返回,而与当前 DPI 无关,以保留 wxWidgets API 中 -1 的特殊值(它通常用于表示“未指定”)。
自:3.1.0
-spec getAcceleratorTable(This) -> wxAcceleratorTable:wxAcceleratorTable() when This :: wxWindow().
获取此窗口的加速器表。
-spec getBackgroundColour(This) -> wx:wx_colour4() when This :: wxWindow().
返回窗口的背景颜色。
参见
-spec getBackgroundStyle(This) -> wx:wx_enum() when This :: wxWindow().
返回窗口的背景样式。
参见
此函数返回窗口可接受的最佳最小大小。
例如,对于静态控件,它将是控件标签不被截断的最小尺寸。对于包含子窗口的窗口(通常为 wxPanel
),此函数返回的大小与调用 fit/1
后窗口的大小相同。
在编写自己的自定义窗口类时,请覆盖虚拟 DoGetBestSize()
(在 wx 中未实现)或更好的是,因为通常更方便,请覆盖 DoGetBestClientSize()
(在 wx 中未实现),以更改此公共非虚拟方法返回的值。
请注意,最佳尺寸会遵守为窗口显式设置的最小和最大尺寸(如果有)。因此,即使某个窗口认为它在水平方向上需要 200 像素,使用宽度为 100 调用 setMaxSize/2
也将确保 getBestSize/1
返回的最大宽度为 100 像素。
参见
-spec getCapture() -> wxWindow().
返回当前捕获的窗口。
参见
-spec getCaret(This) -> wxCaret:wxCaret() when This :: wxWindow().
返回与窗口关联的 caret()。
返回此窗口的字符高度。
返回此窗口的平均字符宽度。
返回窗口子窗口列表的常量引用。
wxWindowList
是一个类型安全的类 wxList,其元素类型为 wxWindow*
。
这是一个重载的成员函数,为了方便起见而提供。它与上面的函数唯一的不同之处在于它接受的参数。
-spec getContainingSizer(This) -> wxSizer:wxSizer() when This :: wxWindow().
返回此窗口所属的 sizer,如果有的话,否则返回 NULL。
返回此窗口的逻辑像素到物理像素的映射因子。
此函数可用于以可移植的方式确定给定大小的窗口中的物理像素数,方法是将窗口大小乘以从该函数返回的值。也就是说,它返回将窗口坐标转换为“内容视图”坐标的因子,其中视图可以是仅显示 wxBitmap
或 wxGLCanvas
的简单窗口,也可以是在屏幕上呈现任意“内容”的任何其他类型的窗口。
对于不进行任何像素映射的平台(即逻辑像素和物理像素相同),此函数始终返回 1.0,因此原则上使用它是不必要的,可以通过使用预处理器检查 wxHAVE_DPI_INDEPENDENT_PIXELS
not
是否已定义来避免,但是通常在所有平台下无条件地使用此函数会更简单,因此更可取。
注意:此函数的当前行为与 wxWidgets 3.0 兼容,但与其在 3.1.0 到 3.1.3 版本中的行为不同,在这些版本中,它返回的值与 getDPIScaleFactor/1
相同。如果您需要即使对于没有 wxHAVE_DPI_INDEPENDENT_PIXELS
的平台(如 wxMSW),也需要使用大于 1.0 的缩放因子,请使用另一个函数。
自:2.9.5
-spec getCursor(This) -> wxCursor:wxCursor() when This :: wxWindow().
返回与此窗口关联的光标。
参见:setCursor/2
返回此窗口使用的显示器的 DPI。
对于支持每个监视器 DPI 值的系统(如 Microsoft Windows 10),不同窗口返回的值可能不同。
如果 DPI 不可用,则返回 {Width,Height}
对象。
自:3.1.3
返回此窗口使用的 DPI 与标准 DPI 的比率。
对于标准 DPI 屏幕,返回值为 1,对于“200% 缩放”,返回值为 2,并且与 getContentScaleFactor/1
不同,在所有平台下都相同。
此因子应用于增大图标和类似窗口的大小,这些窗口的最佳大小在使用 DPI 缩放时不是基于文本度量。
例如,如果内容缩放因子为 1.0,程序可能会加载 32 像素的位图,如果内容缩放因子为 2.0 或更大,则可能会加载同一位图的 64 像素版本。
请注意,此方法 not
不应用于以像素表示的窗口大小,因为在某些平台下,底层工具包已经按此因子缩放了它们。对于任何与窗口相关的内容,请改用 fromDIP/2
。
自:3.1.4
-spec getDropTarget(This) -> wx:wx_object() when This :: wxWindow().
返回关联的拖放目标,可能为 NULL。
参见
返回窗口的额外样式位。
-spec getFont(This) -> wxFont:wxFont() when This :: wxWindow().
返回此窗口的字体。
参见:setFont/2
-spec getForegroundColour(This) -> wx:wx_colour4() when This :: wxWindow().
返回窗口的前景色。
备注:前景色含义根据窗口类的不同而有所不同;它可以是文本颜色或其他颜色,或者可能根本不使用。
参见
返回窗口的祖父窗口,如果没有则返回 NULL。
返回物理窗口的平台特定句柄。
将其强制转换为适当的句柄,例如 Windows 的 HWND
,Motif 的 Widget
或 GTK 的 GtkWidget
。
-spec getHelpText(This) -> unicode:charlist() when This :: wxWindow().
获取用作此窗口上下文相关帮助的帮助文本。
请注意,文本实际上存储在当前的 wxHelpProvider
(在 wx 中未实现)实现中,而不是在窗口对象本身中。
返回窗口的标识符。
备注:每个窗口都有一个整数标识符。如果应用程序未提供标识符(或默认的 wxID_ANY),则会生成一个具有负值的唯一标识符。
参见
-spec getLabel(This) -> unicode:charlist() when This :: wxWindow().
从任何窗口获取标签的通用方法,用于标识目的。
备注:此函数的解释因类而异。对于框架和对话框,返回的值是标题。对于按钮或静态文本控件,它是按钮文本。此函数对于需要按名称识别窗口的元程序(如测试工具或特殊需求访问程序)很有用。
返回窗口的最大大小。
这是对尺寸器布局机制的指示,表明这是最大可能大小,也是可以使用 setSize/6
设置的窗口大小的上限。
参见:窗口大小调整概述
返回窗口的最小大小,指示 sizer 布局机制这是所需的最小大小。
此方法通常只返回 setMinSize/2
设置的值,但可以重写此方法以按需执行计算。
参见:窗口大小调整概述
-spec getName(This) -> unicode:charlist() when This :: wxWindow().
返回窗口的名称。
备注:不保证此名称是唯一的;程序员需要在窗口构造函数中或通过 setName/2
提供适当的名称。
参见:setName/2
返回窗口的父窗口,如果没有父窗口则返回 NULL。
这会获取窗口的位置(以像素为单位),对于子窗口,相对于父窗口,对于顶级窗口,相对于显示原点。
-spec getRect(This) -> {X :: integer(), Y :: integer(), W :: integer(), H :: integer()} when This :: wxWindow().
以 {X,Y,W,H} 对象的形式返回窗口的位置和大小。
返回窗口在屏幕坐标中的位置,无论该窗口是子窗口还是顶级窗口。
-spec getScreenRect(This) -> {X :: integer(), Y :: integer(), W :: integer(), H :: integer()} when This :: wxWindow().
以 {X,Y,W,H} 对象的形式返回窗口在屏幕上的位置和大小。
参见:getRect/1
-spec getScrollPos(This, Orientation) -> integer() when This :: wxWindow(), Orientation :: integer().
返回内置滚动条位置。
-spec getScrollRange(This, Orientation) -> integer() when This :: wxWindow(), Orientation :: integer().
返回内置滚动条范围。
-spec getScrollThumb(This, Orientation) -> integer() when This :: wxWindow(), Orientation :: integer().
返回内置滚动条滑块大小。
有关更多信息,请参见 GetSize(int,int) 重载。
-spec getSizer(This) -> wxSizer:wxSizer() when This :: wxWindow().
返回先前调用 setSizer/3
与窗口关联的 sizer,或 NULL。
-spec getTextExtent(This, String, [Option]) -> Result when Result :: {W :: integer(), H :: integer(), Descent :: integer(), ExternalLeading :: integer()}, This :: wxWindow(), String :: unicode:chardata(), Option :: {theFont, wxFont:wxFont()}.
获取字符串的尺寸,就像使用当前选定的字体在窗口上绘制一样。
文本范围在 w
和 h
指针中返回。
如果窗口使用系统主题绘制其背景,则返回 true。
-spec getToolTip(This) -> wxToolTip:wxToolTip() when This :: wxWindow().
获取关联的工具提示,如果没有则返回 NULL。
-spec getUpdateRegion(This) -> wxRegion:wxRegion() when This :: wxWindow().
获取字符串的尺寸,就像使用当前选定的字体在窗口上绘制一样。
返回指定窗口哪些部分被损坏的区域。应该仅在 wxPaintEvent
处理程序中调用。
参见:wxRegion
这会获取窗口的虚拟大小(以像素为单位)。
默认情况下,它返回窗口的客户区大小,但在调用 setVirtualSize/3
后,它将返回使用该方法设置的大小。
参见:窗口大小调整概述
获取传递给构造函数或 create/4
方法的窗口样式。
GetWindowStyle()
(在 wx 中未实现)是同一函数的另一个名称。
-spec getWindowVariant(This) -> wx:wx_enum() when This :: wxWindow().
返回先前传递给 setWindowVariant/2
的值。
如果此窗口具有当前鼠标捕获,则返回 true。
参见
如果此窗口当前具有此方向的滚动条,则返回 true。
即使对于相同的方向 CanScroll()
(在 wx 中未实现)返回 true,此方法也可能返回 false,但是如果 CanScroll()
(在 wx 中未实现)返回 false,即根本不启用此方向的滚动,则 hasScrollbar/2
也始终返回 false。
如果此窗口背景是透明的(例如,对于 wxStaticText
),并且应显示父窗口背景,则返回 true。
此方法主要由库本身在内部使用,通常您不必调用它。但是,您可能需要在派生的 wxWindow 类中覆盖它,以确保背景正确绘制。
等同于调用 show/2
(false)。
-spec inheritAttributes(This) -> ok when This :: wxWindow().
此函数在窗口创建期间调用(或应在自定义控件的情况下调用),以智能地设置窗口视觉属性,即字体以及前景色和背景色。
所谓“智能”是指:默认情况下,所有窗口都使用它们自己的 GetClassDefaultAttributes()
(在 wx 中未实现)默认属性。但是,如果某些父属性被显式更改(即,使用 setFont/2
而不是 setOwnFont/2
),并且如果此窗口本身没有显式设置相应的属性,则此窗口将采用与其父窗口相同的值。此外,如果窗口覆盖 shouldInheritColours/1
以返回 false,则无论如何都不会更改颜色,只会更改字体。
这种相当复杂的逻辑对于适应不同的使用场景是必要的。最常见的情况是使用所有默认属性,在这种情况下,不应继承任何内容,因为在现代 GUI 中,不同的控件使用与它们的兄弟姐妹不同的字体(和颜色),因此它们不能从父控件继承相同的值。但是,还认为最好通过仅更改其公共父控件的字体或颜色来一次更改所有子控件的属性,因此在这种情况下,我们确实继承了父控件的属性。
-spec initDialog(This) -> ok when This :: wxWindow().
发送 wxEVT\_INIT\_DIALOG
事件,其处理程序通常通过验证器将数据传输到对话框。
-spec invalidateBestSize(This) -> ok when This :: wxWindow().
重置缓存的最佳大小值,以便在下次需要时重新计算。
如果窗口内容由系统进行双缓冲,则返回 true,也就是说,在窗口上进行的任何绘图实际上是在临时后备表面上完成的,并且稍后会一次性传输到屏幕上。
参见:wxBufferedDC
如果窗口已启用,即如果它接受用户输入,则返回 true,否则返回 false。
请注意,即使此窗口本身在其中一个父窗口被禁用时没有被显式禁用,此方法也可能返回 false。要获取此窗口的固有状态,请使用 IsThisEnabled()
(在 wx 中未实现)。
参见:enable/2
-spec isExposed(This, Pt) -> boolean() when This :: wxWindow(), Pt :: {X :: integer(), Y :: integer()}; (This, Rect) -> boolean() when This :: wxWindow(), Rect :: {X :: integer(), Y :: integer(), W :: integer(), H :: integer()}.
这是一个重载的成员函数,为了方便起见而提供。它与上面的函数唯一的不同之处在于它接受的参数。
如果自上次重绘以来给定的点或矩形区域已暴露,则返回 true。
在绘制事件处理程序中调用此方法,以通过仅重绘已暴露的区域来优化重绘。
-spec isExposed(This, X, Y, W, H) -> boolean() when This :: wxWindow(), X :: integer(), Y :: integer(), W :: integer(), H :: integer().
这是一个重载的成员函数,为了方便起见而提供。它与上面的函数唯一的不同之处在于它接受的参数。
如果窗口当前被调用 freeze/1
冻结,则返回 true。
参见
如果窗口被保留,则返回 true,否则返回 false。
备注:保留窗口仅在 X 平台上可用。
如果窗口显示,则返回 true,如果已隐藏,则返回 false。
如果窗口在屏幕上物理可见,则返回 true,也就是说,它已显示,并且其所有父窗口(直到顶级窗口)也已显示。
参见:isShown/1
如果给定窗口是顶级窗口,则返回 true。
目前,所有框架和对话框都被认为是顶层窗口(即使它们有父窗口)。
使用关联的 sizer 布局此窗口的子窗口。
如果尚未将 sizer 与此窗口关联(请参阅 setSizer/3
),则此函数不执行任何操作,除非它是顶层窗口(请参阅 layout/1
)。
请注意,如果窗口具有关联的 sizer(或者如果已显式调用带有 true 参数的 setAutoLayout/2
),则当窗口大小更改时会自动调用此方法,从而确保始终正确布局它。
参见:窗口大小调整概述
返回:始终返回 true,返回值无用。
与 scrollLines/2
(1) 相同。
与 scrollLines/2
(-1) 相同。
-spec lower(This) -> ok when This :: wxWindow().
将窗口降低到窗口层次结构的底部(Z 顺序)。
备注:此函数仅适用于派生自 wxTopLevelWindow 的类。
参见:raise/1
等同于 move(This, Pt, [])
。
-spec move(This, X, Y) -> ok when This :: wxWindow(), X :: integer(), Y :: integer(); (This, Pt, [Option]) -> ok when This :: wxWindow(), Pt :: {X :: integer(), Y :: integer()}, Option :: {flags, integer()}.
将窗口移动到给定位置。
备注:setSize/6
的实现也可以隐式实现 move/4
函数,该函数在基类 wxWindow
中定义为调用
参见:setSize/6
-spec move(This, X, Y, [Option]) -> ok when This :: wxWindow(), X :: integer(), Y :: integer(), Option :: {flags, integer()}.
将窗口移动到给定位置。
备注:SetSize 的实现也可以隐式实现 move/4
函数,该函数在基类 wxWindow
中定义为调用
参见:setSize/6
在指定的 win
之后,在制表符导航顺序中移动此窗口。
这意味着当用户在该其他窗口上按下 TAB
键时,焦点会切换到此窗口。
默认的制表符顺序与创建顺序相同,此函数和 moveBeforeInTabOrder/2
允许在创建所有窗口后更改它。
与 moveAfterInTabOrder/2
相同,只是它将此窗口插入到 win
之前,而不是紧随其后。
-spec new() -> wxWindow().
默认构造函数。
等同于 new(Parent, Id, [])
。
-spec new(Parent, Id, [Option]) -> wxWindow() when Parent :: wxWindow(), Id :: integer(), Option :: {pos, {X :: integer(), Y :: integer()}} | {size, {W :: integer(), H :: integer()}} | {style, integer()}.
构造一个窗口,它可以是框架、对话框或任何其他非控件窗口的子窗口。
与 scrollPages/2
(1) 相同。
与 scrollPages/2
(-1) 相同。
-spec popupMenu(This, Menu) -> boolean() when This :: wxWindow(), Menu :: wxMenu:wxMenu().
-spec popupMenu(This, Menu, [Option]) -> boolean() when This :: wxWindow(), Menu :: wxMenu:wxMenu(), Option :: {pos, {X :: integer(), Y :: integer()}}.
在相对于此窗口的指定坐标处弹出给定的菜单,并在用户关闭菜单时返回控制权。
如果选择了菜单项,则会生成相应的菜单事件,并将像往常一样进行处理。如果未指定坐标,则使用当前的鼠标光标位置。
menu
是要弹出的菜单。
菜单将出现的位置可以指定为 {X,Y} pos
或两个整数(x
和 y
)。
请注意,此函数会在显示菜单之前将焦点切换到此窗口。
备注:在弹出菜单之前,会调用 wxMenu::UpdateUI
(在 wx 中未实现)以确保菜单项处于正确的状态。该菜单不会被窗口删除。建议在响应鼠标单击时调用 PopupMenu 时不要显式指定坐标,因为某些端口(即 wxGTK)在这种情况下可以更好地定位菜单。
参见:wxMenu
-spec popupMenu(This, Menu, X, Y) -> boolean() when This :: wxWindow(), Menu :: wxMenu:wxMenu(), X :: integer(), Y :: integer().
这是一个重载的成员函数,为了方便起见而提供。它与上面的函数唯一的不同之处在于它接受的参数。
-spec raise(This) -> ok when This :: wxWindow().
将窗口提升到窗口层次结构的顶部(Z 顺序)。
请注意,此函数仅请求窗口管理器将此窗口提升到 Z 顺序的顶部。根据其配置,窗口管理器可能会提升窗口,完全不执行任何操作,或者以其他方式指示请求提升的窗口,例如,如果窗口已最小化,则闪烁其图标。
备注:此函数仅适用于派生自 wxTopLevelWindow 的类。
参见:lower/1
-spec refresh(This) -> ok when This :: wxWindow().
等同于 refresh(This, [])
。
-spec refresh(This, [Option]) -> ok when This :: wxWindow(), Option :: {eraseBackground, boolean()} | {rect, {X :: integer(), Y :: integer(), W :: integer(), H :: integer()}}.
导致此窗口及其所有子窗口递归地(wxGTK1 下未实现除外)重绘。
请注意,重绘不会立即发生,而仅在下一个事件循环迭代期间发生,如果需要立即更新窗口,则应使用 update/1
代替。
-spec refreshRect(This, Rect, [Option]) -> ok when This :: wxWindow(), Rect :: {X :: integer(), Y :: integer(), W :: integer(), H :: integer()}, Option :: {eraseBackground, boolean()}.
重绘给定矩形的内容:仅重绘内部区域。
这与 refresh/2
相同,但具有更好的语法,因为它可以使用临时 {X,Y,W,H} 对象作为参数调用,例如 RefreshRect(wxRect(x, y, w, h))
。
-spec releaseMouse(This) -> ok when This :: wxWindow().
释放使用 captureMouse/1
捕获的鼠标输入。
参见
移除一个子窗口。
窗口删除函数会自动调用此函数,因此应用程序程序员不需要此函数。请注意,此函数主要在 wxWidgets 内部使用,不应由用户代码调用。
重新设置窗口的父级,也就是说,将从其当前父窗口中删除该窗口(例如)。
wxFrame
中的非标准工具栏),然后重新插入到另一个工具栏中。
请注意,目前您需要在重新设置笔记本页面之前显式调用 wxBookCtrlBase:removePage/2
。
从屏幕坐标转换为客户端窗口坐标。
-spec screenToClient(This, Pt) -> {X :: integer(), Y :: integer()} when This :: wxWindow(), Pt :: {X :: integer(), Y :: integer()}.
从屏幕坐标转换为客户端窗口坐标。
将窗口向下滚动给定的行数(如果 lines
为正数)或向上滚动。
返回:如果窗口已滚动,则返回 true,如果窗口已位于顶部/底部并且未执行任何操作,则返回 false。
备注:此函数目前仅在 MSW 和 wxGTK 下的 wxTextCtrl
下实现(它也适用于所有平台下的 wxScrolled
(在 wx 中未实现)类)。
将窗口向下滚动给定的页数(如果 pages
为正数)或向上滚动。
返回:如果窗口已滚动,则返回 true,如果窗口已位于顶部/底部并且未执行任何操作,则返回 false。
备注:此函数目前仅在 MSW 和 wxGTK 下实现。
-spec scrollWindow(This, Dx, Dy, [Option]) -> ok when This :: wxWindow(), Dx :: integer(), Dy :: integer(), Option :: {rect, {X :: integer(), Y :: integer(), W :: integer(), H :: integer()}}.
在窗口中物理滚动像素,并相应地移动子窗口。
备注:请注意,您通常可以使用 wxScrolled
(在 wx 中未实现)而不是直接使用此函数。
-spec setAcceleratorTable(This, Accel) -> ok when This :: wxWindow(), Accel :: wxAcceleratorTable:wxAcceleratorTable().
设置此窗口的加速器表。
确定在调整窗口大小时是否自动调用 layout/1
函数。
此方法由 setSizer/3
隐式调用,但是如果使用 SetConstraints()
(在 wx 中未实现),则应手动调用它,否则当窗口大小更改时,窗口布局不会正确更新。
参见:setSizer/3
-spec setBackgroundColour(This, Colour) -> boolean() when This :: wxWindow(), Colour :: wx:wx_colour().
设置窗口的背景颜色。
请注意,与 setForegroundColour/2
一样,设置本机控件的背景颜色可能不会影响整个控件,并且可能完全不支持,具体取决于控件和平台。
有关此方法和 setOwnBackgroundColour/2
之间的差异的说明,请参阅 inheritAttributes/1
。
备注:背景颜色通常由 Windows 下的默认 wxEraseEvent
事件处理函数绘制,并在 GTK 下自动绘制。请注意,设置背景颜色不会导致立即刷新,因此您可能希望在调用此函数后调用 clearBackground/1
或 refresh/2
。如果系统支持,则使用此函数将禁用尝试为此窗口使用主题。请谨慎使用,因为通常主题表示用户选择用于系统上所有应用程序的外观。
返回:如果颜色确实已更改,则返回 true,如果已将其设置为此颜色且未执行任何操作,则返回 false。
参见
-spec setBackgroundStyle(This, Style) -> boolean() when This :: wxWindow(), Style :: wx:wx_enum().
设置窗口的背景样式。
默认的背景样式为 wxBG_STYLE_ERASE
,表示可以在 EVT_ERASE_BACKGROUND
处理程序中擦除窗口背景。这是一个安全的、兼容的默认值;但是,如果您根本没有定义任何擦除背景事件处理程序,则可能需要将其更改为 wxBG_STYLE_SYSTEM
,以避免不必要地生成擦除背景事件并始终让系统擦除背景。如果您定义了一个完全覆盖窗口背景的 EVT_PAINT
处理程序,则应将背景样式更改为 wxBG_STYLE_PAINT
,因为在这种情况下,先前在 EVT_ERASE_BACKGROUND
处理程序或系统默认处理程序中擦除背景会导致闪烁,因为每次重绘窗口时都会重新绘制背景像素两次。在这种情况下,请确保 EVT_PAINT
处理程序完全擦除了背景,否则屏幕上可能会留下垃圾。
请注意,在以前版本的 wxWidgets 中,解决上述闪烁问题的常用方法是定义一个空的 EVT_ERASE_BACKGROUND
处理程序。将背景样式设置为 wxBG_STYLE_PAINT
是解决同一问题的更简单、更有效的方法。
在 wxGTK 和 wxOSX 下,您可以使用 ?wxBG_STYLE_TRANSPARENT 来获得窗口背景的完全透明度。请注意,wxGTK 仅自启用合成管理器的 GTK 2.12 起支持此功能,请调用 IsTransparentBackgroundSupported()
(在 wx 中未实现)以检查是否是这种情况。
此外,为了使 SetBackgroundStyle(wxBG_STYLE_TRANSPARENT)
工作,必须在 create/4
之前调用它。如果您正在使用自己的 wxWindow 派生类,则应按以下方式编写代码
参见
-spec setCaret(This, Caret) -> ok when This :: wxWindow(), Caret :: wxCaret:wxCaret().
设置与窗口关联的 caret()。
-spec setClientSize(This, Size) -> ok when This :: wxWindow(), Size :: {W :: integer(), H :: integer()}; (This, Rect) -> ok when This :: wxWindow(), Rect :: {X :: integer(), Y :: integer(), W :: integer(), H :: integer()}.
这是一个重载的成员函数,为了方便起见而提供。它与上面的函数唯一的不同之处在于它接受的参数。
-spec setClientSize(This, Width, Height) -> ok when This :: wxWindow(), Width :: integer(), Height :: integer().
这会设置窗口客户端区域的大小(以像素为单位)。
与 setSize/6
相比,使用此函数来调整窗口大小往往更独立于设备,因为应用程序在尝试将窗口围绕面板项放置时无需担心边框或标题栏的尺寸,例如。
参见:窗口大小调整概述
-spec setContainingSizer(This, Sizer) -> ok when This :: wxWindow(), Sizer :: wxSizer:wxSizer().
由 wxSizer
内部使用,用于通知窗口它正被给定的 sizer 管理。
除非您正在实现自定义 sizer 类,否则不应从库外部调用此方法 - 在后一种情况下,每当窗口添加到其中时,您必须使用指向 sizer 本身的指针调用此方法,并在从其中删除窗口时使用 NULL 参数。
-spec setCursor(This, Cursor) -> boolean() when This :: wxWindow(), Cursor :: wxCursor:wxCursor().
设置窗口的光标。
请注意,窗口光标也会隐式地为窗口的子窗口设置它。
如果 cursor
为 wxNullCursor
,则窗口光标将重置为默认值。
参见
如果系统支持,则打开或关闭窗口的双缓冲。
-spec setDropTarget(This, Target) -> ok when This :: wxWindow(), Target :: wx:wx_object().
将一个拖放目标与此窗口关联。
如果窗口已经有放置目标,则会将其删除。
参见
设置窗口的额外样式位。
当前定义的额外样式位在类描述中报告。
-spec setFocus(This) -> ok when This :: wxWindow().
设置此窗口以接收键盘输入。
参见
-spec setFocusFromKbd(This) -> ok when This :: wxWindow().
当用户通过键盘(例如使用 TAB
键)将焦点给予此窗口时,wxWidgets 键盘导航代码会调用此函数。
默认情况下,此方法只是简单地调用 setFocus/1
,但可以在派生类中重写以执行此操作之外的其他操作。
-spec setFont(This, Font) -> boolean() when This :: wxWindow(), Font :: wxFont:wxFont().
设置此窗口的字体。
如果您不希望父窗口的字体被其子窗口继承,则不应为父窗口调用此函数。在这种情况下,请使用 setOwnFont/2
,并查看 inheritAttributes/1
以获得更多解释。
请注意,给定的字体不会自动用于与此窗口关联的 wxPaintDC
对象,您还需要调用 wxDC:setFont/2
。但是,此字体由任何标准控件用于绘制其文本,以及由 getTextExtent/3
使用。
返回:如果字体确实被更改,则返回 true;如果它已经设置为此字体并且没有执行任何操作,则返回 false。
参见
-spec setForegroundColour(This, Colour) -> boolean() when This :: wxWindow(), Colour :: wx:wx_colour().
设置窗口的前景色。
前景色含义因窗口类而异;它可能是文本颜色或其他颜色,也可能根本不使用。此外,并非所有本机控件都支持更改其前景色,因此此方法可能仅部分更改其颜色,甚至根本不更改。
有关此方法和 setOwnForegroundColour/2
之间的差异的说明,请参阅 inheritAttributes/1
。
返回:如果颜色确实已更改,则返回 true,如果已将其设置为此颜色且未执行任何操作,则返回 false。
参见
-spec setHelpText(This, HelpText) -> ok when This :: wxWindow(), HelpText :: unicode:chardata().
设置要用作此窗口上下文相关帮助的帮助文本。
请注意,文本实际上存储在当前的 wxHelpProvider
(在 wx 中未实现)实现中,而不是在窗口对象本身中。
设置窗口的标识符。
备注:每个窗口都有一个整数标识符。如果应用程序没有提供一个标识符,则会生成一个标识符。通常,应在创建时提供标识符,并且不应随后修改。
参见
-spec setLabel(This, Label) -> ok when This :: wxWindow(), Label :: unicode:chardata().
设置窗口的标签。
参见:getLabel/1
-spec setMaxSize(This, Size) -> ok when This :: wxWindow(), Size :: {W :: integer(), H :: integer()}.
设置窗口的最大尺寸,以指示 sizer 布局机制此为最大可能尺寸。
参见:窗口大小调整概述
-spec setMinSize(This, Size) -> ok when This :: wxWindow(), Size :: {W :: integer(), H :: integer()}.
设置窗口的最小尺寸,以指示 sizer 布局机制此为最小所需尺寸。
如果在构造后以及添加到其父级大小调整器之前更改窗口大小,则可能需要调用此方法。
请注意,调用此方法不会阻止程序通过调用 setSize/6
来使窗口显式小于指定大小,它只是确保在自动布局期间它不会小于此大小。
参见:窗口大小调整概述
-spec setName(This, Name) -> ok when This :: wxWindow(), Name :: unicode:chardata().
设置窗口的名称。
参见:getName/1
-spec setOwnBackgroundColour(This, Colour) -> ok when This :: wxWindow(), Colour :: wx:wx_colour().
设置窗口的背景颜色,但阻止它被此窗口的子窗口继承。
参见
-spec setOwnFont(This, Font) -> ok when This :: wxWindow(), Font :: wxFont:wxFont().
设置窗口的字体,但阻止它被此窗口的子窗口继承。
参见
-spec setOwnForegroundColour(This, Colour) -> ok when This :: wxWindow(), Colour :: wx:wx_colour().
设置窗口的前景颜色,但阻止它被此窗口的子窗口继承。
参见
-spec setPalette(This, Pal) -> ok when This :: wxWindow(), Pal :: wxPalette:wxPalette().
已弃用
请改用 wxDC:setPalette/2
。
-spec setScrollbar(This, Orientation, Position, ThumbSize, Range) -> ok when This :: wxWindow(), Orientation :: integer(), Position :: integer(), ThumbSize :: integer(), Range :: integer().
等同于 setScrollbar(This, Orientation, Position, ThumbSize, Range, [])
。
-spec setScrollbar(This, Orientation, Position, ThumbSize, Range, [Option]) -> ok when This :: wxWindow(), Orientation :: integer(), Position :: integer(), ThumbSize :: integer(), Range :: integer(), Option :: {refresh, boolean()}.
设置内置滚动条的属性。
备注:假设您希望使用相同的字体显示 50 行文本。窗口的大小调整为一次只能看到 16 行。您将使用:请注意,在窗口的此大小下,滚动条滑块位置永远不能超过 50 减 16,即 34。您可以通过将当前视图大小除以像素中的字符高度来确定当前可见的行数。在定义自己的滚动条行为时,您始终需要在窗口大小更改时重新计算滚动条设置。因此,您可以将滚动条计算和 SetScrollbar 调用放入一个名为 AdjustScrollbars 的函数中,该函数可以最初调用,也可以从您的 wxSizeEvent
处理函数中调用。
参见
-spec setScrollPos(This, Orientation, Pos, [Option]) -> ok when This :: wxWindow(), Orientation :: integer(), Pos :: integer(), Option :: {refresh, boolean()}.
设置其中一个内置滚动条的位置。
备注:此函数不直接影响窗口的内容:应用程序应注意滚动条属性并相应地重绘内容。
参见
-spec setSize(This, Rect) -> ok when This :: wxWindow(), Rect :: {X :: integer(), Y :: integer(), W :: integer(), H :: integer()}; (This, Size) -> ok when This :: wxWindow(), Size :: {W :: integer(), H :: integer()}.
这是一个重载的成员函数,为了方便起见而提供。它与上面的函数唯一的不同之处在于它接受的参数。
-spec setSize(This, Width, Height) -> ok when This :: wxWindow(), Width :: integer(), Height :: integer(); (This, Rect, [Option]) -> ok when This :: wxWindow(), Rect :: {X :: integer(), Y :: integer(), W :: integer(), H :: integer()}, Option :: {sizeFlags, integer()}.
以像素为单位设置窗口的大小。
可以使用 {X,Y,W,H}、{Width,Height} 或一对 int
对象来指定大小。
备注:此形式必须与非默认宽度和高度值一起使用。
参见
-spec setSize(This, X, Y, Width, Height, [Option]) -> ok when This :: wxWindow(), X :: integer(), Y :: integer(), Width :: integer(), Height :: integer(), Option :: {sizeFlags, integer()}.
以像素为单位设置窗口的大小。
备注:此重载设置窗口的位置以及可选的大小。参数可以是 wxDefaultCoord,以指示应由 wxWidgets 提供默认值,或者应使用尺寸的当前值。
参见
-spec setSizeHints(This, MinW, MinH) -> ok when This :: wxWindow(), MinW :: integer(), MinH :: integer(); (This, MinSize, [Option]) -> ok when This :: wxWindow(), MinSize :: {W :: integer(), H :: integer()}, Option :: {maxSize, {W :: integer(), H :: integer()}} | {incSize, {W :: integer(), H :: integer()}}.
不鼓励将此函数用于非顶级窗口(例如 wxDialog
或 wxFrame
)。
请改用 setMinSize/2
和 setMaxSize/2
。
参见
-spec setSizeHints(This, MinW, MinH, [Option]) -> ok when This :: wxWindow(), MinW :: integer(), MinH :: integer(), Option :: {maxW, integer()} | {maxH, integer()} | {incW, integer()} | {incH, integer()}.
这是一个重载的成员函数,为了方便起见而提供。它与上面的函数唯一的不同之处在于它接受的参数。
-spec setSizer(This, Sizer) -> ok when This :: wxWindow(), Sizer :: wxSizer:wxSizer().
-spec setSizer(This, Sizer, [Option]) -> ok when This :: wxWindow(), Sizer :: wxSizer:wxSizer(), Option :: {deleteOld, boolean()}.
设置窗口具有给定的布局 sizer。
然后,窗口将拥有该对象,并将负责其删除。如果窗口已经拥有现有的布局约束对象,如果 deleteOld
参数为 true,则将删除该对象。
请注意,如果 sizer
为非 NULL,则此函数还将隐式地使用 true 参数调用 setAutoLayout/2
,否则将使用 false 参数调用,以便在调整窗口大小时,大小调整器将有效地用于布局窗口子级。
备注:SetSizer 自动启用和禁用布局。
-spec setSizerAndFit(This, Sizer) -> ok when This :: wxWindow(), Sizer :: wxSizer:wxSizer().
-spec setSizerAndFit(This, Sizer, [Option]) -> ok when This :: wxWindow(), Sizer :: wxSizer:wxSizer(), Option :: {deleteOld, boolean()}.
将 sizer 与窗口关联,并相应地设置窗口大小和最小大小。
此方法调用 setSizer/3
,然后调用 wxSizer:setSizeHints/2
,它将初始窗口大小设置为容纳所有大小调整器元素所需的大小,并将最小大小设置为相同的大小,这可以防止用户将此窗口调整为小于此最小大小(如果它是用户可以直接调整大小的顶级窗口)。
此函数告诉窗口是否应使用系统的“主题”代码来绘制窗口的背景,而不是它自己的背景绘制代码。
这并不总是有效,因为底层平台显然需要在用户定义的窗口中支持主题的概念。其中一个平台是 GTK+,其中窗口可以具有用户选择的主题定义的(非常多彩的)背景。
默认情况下,对话框、笔记本页面和状态栏已将此标志设置为 true,以便最好地模拟默认外观。
-spec setToolTip(This, TipString) -> ok when This :: wxWindow(), TipString :: unicode:chardata(); (This, Tip) -> ok when This :: wxWindow(), Tip :: wxToolTip:wxToolTip().
这是一个重载的成员函数,为了方便起见而提供。它与上面的函数唯一的不同之处在于它接受的参数。
设置窗口的透明度。
如果系统支持透明窗口,则返回 true,否则返回 false,并且窗口保持完全不透明。另请参见 canSetTransparent/1
。
参数 alpha
的范围为 0..255,其中 0 对应于完全透明的窗口,255 对应于完全不透明的窗口。可以使用常量 wxIMAGE_ALPHA_TRANSPARENT
和 wxIMAGE_ALPHA_OPAQUE
。
-spec setVirtualSize(This, Size) -> ok when This :: wxWindow(), Size :: {W :: integer(), H :: integer()}.
这是一个重载的成员函数,为了方便起见而提供。它与上面的函数唯一的不同之处在于它接受的参数。
-spec setVirtualSize(This, Width, Height) -> ok when This :: wxWindow(), Width :: integer(), Height :: integer().
以像素为单位设置窗口的虚拟大小。
参见:窗口大小调整概述
有关详细信息,请参阅 setWindowStyleFlag/2
。
设置窗口的样式。
请注意,某些样式在窗口创建后无法更改,并且在更改其他样式后可能需要调用 refresh/2
才能使更改立即生效。
有关标志的更多信息,请参见窗口样式。
-spec setWindowVariant(This, Variant) -> ok when This :: wxWindow(), Variant :: wx:wx_enum().
选择要使用的窗口显示的不同变体。
目前,窗口变体仅在大小上有所不同,这可以从 ?wxWindowVariant 文档中看到。在除 macOS 之外的所有平台上,此函数所做的只是更改窗口使用的字体。但是,在 macOS 下,它是以本机方式实现的,并选择本机小部件的适当变体,该变体比正常变体的缩小或放大版本具有更好的外观,因此应优先直接调整字体大小。
默认情况下,控件自然使用正常变体。
从此函数返回 true,以允许通过 inheritAttributes/1
更改此窗口的颜色。
返回 false 会禁止从父窗口继承它们。
基类版本返回 false,但在 wxControl
中重写了此方法,它返回 true。
等同于 show(This, [])
。
显示或隐藏窗口。
如果希望将其置于顶层,则可能需要为顶层窗口调用 raise/1
,尽管如果在框架创建后立即调用 show/2
则不需要这样做。
请注意,新创建的顶级窗口的默认状态是隐藏的(允许您创建其内容而不会闪烁),这与所有其他不是从 wxTopLevelWindow
派生的窗口不同,这些窗口默认以显示状态创建。
返回:如果窗口已显示或隐藏,则返回 true;如果由于它已处于请求的状态而未执行任何操作,则返回 false。
参见
-spec thaw(This) -> ok when This :: wxWindow().
在先前调用 freeze/1
之后重新启用窗口更新。
要真正解冻控件,必须调用与 freeze/1
相同的次数。
如果窗口有任何子项,它们也会被递归解冻。
参见
-spec toDIP(D, W) -> integer() when D :: integer(), W :: wxWindow(); (Sz, W) -> {W :: integer(), H :: integer()} when Sz :: {W :: integer(), H :: integer()}, W :: wxWindow(); (This, D) -> integer() when This :: wxWindow(), D :: integer(); (This, Sz) -> {W :: integer(), H :: integer()} when This :: wxWindow(), Sz :: {W :: integer(), H :: integer()}.
将当前工具包的像素值转换为与 DPI 无关的像素值。
与 DPI 无关的像素只是标准 96 DPI 分辨率下的像素。为了在高分辨率下保持相同的物理大小,物理像素值必须按 getDPIScaleFactor/1
缩放,但此缩放可能已由底层工具包(GTK+、Cocoa 等)自动完成。仅当较低级别工具包尚未完成转换时,此方法才会执行转换。例如,您可能希望使用此方法来存储窗口大小和位置,以便它们可以重复使用,而与显示 DPI 无关。
另请注意,如果 sz
的任一组件具有 -1 的特殊值,则会按原样返回,而与当前 DPI 无关,以保留 wxWidgets API 中 -1 的特殊值(它通常用于表示“未指定”)。
自:3.1.0
将子控件中的值传输到其验证器指定的数据区域。
如果传输失败,则返回 false。
请注意,这还会为所有子项递归调用 transferDataFromWindow/1
。
参见
将值从其验证器指定的数据区域传输到子控件。
请注意,这还会为所有子项递归调用 transferDataToWindow/1
。
返回:如果传输失败,则返回 false。
参见
-spec update(This) -> ok when This :: wxWindow().
调用此方法会立即重绘窗口及其所有子窗口的失效区域(通常仅在控制流返回事件循环时发生)。
请注意,此函数不会使窗口的任何区域无效,因此如果没有使任何区域无效(即,标记为需要重绘),则不会发生任何事情。如果您想立即无条件地重绘窗口,请先使用 refresh/2
。
-spec updateWindowUI(This) -> ok when This :: wxWindow().
此函数向窗口发送一个或多个 wxUpdateUIEvent
。
具体实现取决于窗口;例如,wxToolBar
将为每个工具栏按钮发送更新 UI 事件,而 wxFrame
将为每个菜单栏菜单项发送更新 UI 事件。
您可以从应用程序调用此函数,以确保您的 UI 在此时是最新的(就您的 wxUpdateUIEvent
处理程序而言)。如果您已调用 wxUpdateUIEvent:setMode/1
或 wxUpdateUIEvent:setUpdateInterval/1
以限制 wxWidgets 在空闲时间发送更新 UI 事件时产生的开销,则可能需要这样做。flags
应该是 ?wxUpdateUI 枚举中的一个或多个位列表。
如果您是从 OnInternalIdle 或 OnIdle 函数调用此函数,请确保传递 wxUPDATE_UI_FROMIDLE 标志,因为它会告诉窗口仅在空闲时间更新需要更新的 UI 元素。一些窗口仅在必要时更新其元素,例如在即将显示菜单时。以下是如何从空闲函数调用 UpdateWindowUI 的示例。
使用其验证器验证子控件的当前值。
请注意,这也会为所有子项递归调用 validate/1
。
返回值:如果任何验证失败,则返回 false。
参见
将指针移动到窗口上的给定位置。
注意:苹果人机界面指南禁止以编程方式移动鼠标光标,因此您应该避免在 Mac 应用程序中使用此函数(并且可能在没有充分理由的情况下也应避免在其他平台下使用它)。