檢視原始碼 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 不區分大小寫。