查看源代码 wxSystemOptions (wx v2.4.3)

wxSystemOptions 存储选项/值对,wxWidgets 本身或应用程序可以使用这些选项/值对来更改运行时的行为。

它可以用来优化不值得使用单独 API 的行为,但仍然需要能够配置。

系统选项可以通过程序本身使用 setOption/2 方法来设置,也可以通过定义环境变量来从程序环境中设置:wx_option 用于为所有 wxWidgets 应用程序设置给定选项,或 wx_appname_option 用于仅为具有给定名称的应用程序设置(由 wxApp::GetAppName() 返回,wx 中未实现)。 请注意,环境变量名称中不允许的任何字符(例如句点和破折号)都应替换为下划线。 例如,要定义系统选项 "foo-bar",您需要定义环境变量 "wx_foo_bar"。

程序可以出于自身需要使用系统选项,但它们主要用于控制 wxWidgets 库本身的行为。

以下是 wxWidgets 当前识别的选项

所有平台

  • exit-on-assert: 如果设置为非零值,则在断言失败时中止程序。 断言失败时的默认行为取决于构建模式,并且可以通过覆盖 wxApp::OnAssertFailure()(wx 中未实现)来更改,但设置此选项允许在不修改程序代码的情况下更改它,并且还适用于在 wxApp(wx 中未实现)对象创建之前或销毁之后可能发生的断言。

Windows

  • no-maskblt: 1 表示永远不使用 WIN32 的 MaskBlt 函数,0 表示允许在可能的情况下使用它。默认值:0。在某些情况下,MaskBlt 函数可能比使用回退代码慢,尤其是在使用 DC 缓存时。默认情况下,如果操作系统和驱动程序实现了 MaskBlt,则会使用它。

  • msw.remap: 如果为 1(默认值),则 wxToolBar 位图颜色将重新映射到当前主题的值。将其设置为 0 可禁用此功能,例如,如果您在工具位图中使用超过 16 种颜色。

  • msw.window.no-clip-children: 如果为 1,则窗口不会自动获得 WS_CLIPCHILDREN 样式。 这会将窗口的刷新方式恢复为 wxWidgets 2.5.4 之前的版本中使用的方法,并且对于某些复杂的窗口层次结构,它可以减少明显的刷新延迟。 您仍然可以为单个窗口指定 wxCLIP_CHILDREN。

  • msw.notebook.themed-background: 如果设置为 0,则全局禁用笔记本页面上的主题背景。 请注意,这不会禁用实际笔记本背景上的主题(仅在没有页面时才明显)。

  • msw.staticbox.optimized-paint: 如果设置为 0,则关闭优化的 wxStaticBox 绘制。 将此值设置为 0 会导致更多闪烁,但允许应用程序在静态框的父级上绘制图形(优化的刷新会导致任何此类绘图消失)。

  • msw.font.no-proof-quality: 如果设置为 1,则在创建字体时使用默认字体质量而不是校样质量。 对于校样质量,字体外观略好,但并非所有字体都具有此质量,例如,小尺寸的 Terminal 字体没有,如果更广泛的字体选择比更高的质量更重要,则可以使用此选项。

GTK+

  • gtk.tlw.can-set-transparent: wxTopLevelWindow::CanSetTransparent() (wx 中未实现)方法通常尝试自动检测当前是否支持顶层窗口的透明度,但是这有时可能会失败,并且此选项允许覆盖自动检测。将其设置为 1 会使透明度始终可用(当然,设置仍然可能失败),将其设置为 0 会使其始终不可用。

  • gtk.desktop: 可以设置此选项以覆盖默认的桌面环境确定。 支持的值为 GNOME 和 KDE。

  • gtk.window.force-background-colour: 如果为 1,则强制清除具有 wxBG_STYLE_COLOUR 背景样式的窗口的背景,而不是依赖于底层 GTK+ 窗口颜色。 这解决了在安装了 gtk-qt 主题(0.6 及更低版本)的情况下,在 KDE 下运行应用程序时出现的显示问题。

Mac

  • mac.window-plain-transition: 如果为 1,则在显示窗口时使用更简单的过渡。 您还可以使用符号 wxMAC_WINDOW_PLAIN_TRANSITION。

  • window-default-variant: 窗口使用的默认变体(从 wxWindowVariant 枚举转换为整数)。 也称为 wxWINDOW_DEFAULT_VARIANT。

  • mac.listctrl.always_use_generic: 告诉 wxListCtrl 即使它能够使用本机控件,也始终使用通用控件。 也称为 wxMAC_ALWAYS_USE_GENERIC_LISTCTRL。

  • mac.textcontrol-use-spell-checker: 如果为 1,则在 wxTextCtrl 中激活拼写检查。

  • osx.openfiledialog.always-show-types: 默认情况下,带有 wxFD_OPEN 的 wxFileDialog 不会在 macOS 上显示类型弹出窗口,但允许从任何受支持的类型中选择文件。 将其设置为 1 会显示用于选择的 wxChoice(如果有多个受支持的文件类型)。

Motif

  • motif.largebuttons: 如果为 1,则为 wxButtons 使用更大的默认大小。

用于包含或排除此功能的编译时选项是 wxUSE_SYSTEM_OPTIONS。

参见:wxSystemSettings

wxWidgets 文档:wxSystemOptions

概要

函数

获取选项。

将选项作为整数获取。

如果存在给定选项,则返回 true。

如果具有给定 name 的选项已设置为 0 值,则返回 true。

设置选项。

类型

-type wxSystemOptions() :: wx:wx_object().

函数

-spec getOption(Name) -> unicode:charlist() when Name :: unicode:chardata().

获取选项。

该函数对 name 不区分大小写。 如果未设置选项,则返回空字符串。

参见

-spec getOptionInt(Name) -> integer() when Name :: unicode:chardata().

将选项作为整数获取。

该函数对 name 不区分大小写。 如果未设置选项,此函数将返回 0。

参见

-spec hasOption(Name) -> boolean() when Name :: unicode:chardata().

如果存在给定选项,则返回 true。

该函数对 name 不区分大小写。

参见

-spec isFalse(Name) -> boolean() when Name :: unicode:chardata().

如果具有给定 name 的选项已设置为 0 值,则返回 true。

这对于布尔选项最有用,因为您不能使用 GetOptionInt(name) == 0,因为如果根本未设置该选项,则它也为 true。

-spec setOption(Name, Value) -> ok when Name :: unicode:chardata(), Value :: integer();
               (Name, Value) -> ok when Name :: unicode:chardata(), Value :: unicode:chardata().

设置选项。

该函数对 name 不区分大小写。