<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 8.3 選擇和選項對話框 在這一小節中,我們來看看那些讓你作出選擇或者允許你給出選項的對話框,包括:wxColourDialog, wxFontDialog, wxSingleChoiceDialog 和 wxMultiChoiceDialog. wxColourDialog 這個對話框允許用戶從標準顏色或者是一個顏色范圍中選擇一種顏色. 在windows系統上,顏色選擇對話框使用的是windows系統提供的原生控件,這個對話框主要包含三個區域,左上角是一個由48中常用顏色組成的區域,左下角是一個擁有16個選項的定制顏色區,用戶的應用程序可以自行設置這16種定制的顏色,右邊則可以展開用來精確的選擇一個顏色.下圖演示了這個對話框完全展開以后的樣子: ![](img/mhtD2D6%281%29.tmp) 通用的顏色選擇對話框如下圖所示,可以在GTK+ 1或者X11系統上使用.它包含48個常用顏色和16個可定制顏色,右邊包含三個滑條用來選擇RGB三原色的值.選好的值用來替換當前選中的定制顏色或者 (如果當前沒有選中任何定制顏色的話)第一個定制顏色.和windows系統原生的顏色選擇框不同,右邊的滑條區域是不可以隱藏的.在Windows平臺和其它平臺上,你也可以通過wxGenericColourDialog類來使用這個通用顏色選擇對話框. ![](img/mhtD2E9%281%29.tmp) 下圖演示了GTK+的原生顏色選擇對話框: ![](img/mhtD2EC%281%29.tmp) Mac OsX平臺上的顏色選擇對話框如下圖所示: ![](img/mhtD2FE%281%29.tmp) 要使用顏色選擇對話框,你可以創建一個wxColourDialog局部變量,傳遞的參數包括父窗口指針和一個wxColourData 指針,后者用來設置一些默認數據,然后調用ShowModal函數,當這個函數返回時,通過GetColourData函數獲取用戶對 wxColourData所做的更改. wxColourData的成員函數 SetChooseFull定義在windows平臺上,顏色選擇對話框應該是完全展開的方式顯示.否則將只顯示左邊的部分.GetChooseFull函數則用來獲取Bool格式的這個選項的值. SetColour用來設置默認的顏色, GetColour函數用來返回用戶當前選擇的顏色. SetCustomColour使用一個0到15之間的索引和一個wxColour類型的顏色值來設置顏色選擇對話框的定制顏色.使用GetCustomColour函數返回當前的可定制范圍的顏色值,這個值可能在用戶操作顏色對話框的過程中被改變. wxColourDialog使用舉例 下面是一個使用wxColourDialog的例子,它將首先設置wxColourData的各種參數,包括16個灰階色彩的定制顏色.如果用戶沒有取消這個對話框,就用用戶選擇的顏色來設置當前的背景色. ``` #include "wx/colordlg.h" wxColourData data; data.SetChooseFull(true); for (int i = 0; i &lt; 16; i++) { wxColour color(i*16, i*16, i*16); data.SetCustomColour(i, color); } wxColourDialog dialog(this, &data); if (dialog.ShowModal() == wxID_OK) { wxColourData retData = dialog.GetColourData(); wxColour col = retData.GetColour(); myWindow->SetBackgroundColour(col); myWindow->Refresh(); } ``` wxFontDialog wxFontDialog可以讓用戶來選擇一個字體(在某些平臺上,還可以選擇字體的顏色). 在Windows平臺上,使用的是windows系統提供的原生控件,這個控件給用戶的選擇包括字體的名稱,點大小,類型,粗細,下劃線,中劃線等屬性以及字體的前景顏色.一個白色區域還顯示了當前選擇字體的樣子.注意在windows的字體轉換到wxWidgets的字體過程中,中劃線屬性將被忽略,字體名稱則被相應的字體家族名稱取代. 而在GTK+平臺上,使用的是GTK+的標準字體對話框,這個對話框不允許選擇字體前景顏色. 下圖演示了windows平臺上字體選擇對話框的樣子: ![](img/mhtD301%281%29.tmp) 下圖演示了GTK+上的標準字體選擇對話框的樣子: ![](img/mhtD314%281%29.tmp) 除了上述兩個平臺以外,其它平臺字體選擇對話框的樣子都很相似,允許用戶選擇的項目包括字體家族名稱,大小,類型,粗細,下劃線以及前景顏色等,還包括一個示例區用來顯示當前字體的樣子.這種字體選擇框在各種平臺都是可以使用的,類的名字為wxGenericFontDialog. 下圖演示了Mac平臺上的這種字體選擇對話框的樣子: ![](img/mhtD317%281%29.tmp) 要使用字體選擇對話框,需要傳遞的參數包括父窗口和一個wxFontData對象,然后調用其ShowModal函數并且測試其返回值是否為wxID_OK,然后從對話框中獲取wxFontData數據,然后視需要調用其GetChosenFont和GetChosenColour函數. wxFontData的成員函數 EnableEffects函數允許windows平臺上的字體選擇對話框或者通用版本的字體選擇對話框顯示顏色和下劃線屬性控制.在GTK版本上則沒有任何效果.GetEnableEffects函數則用來判斷當前是否設置了這個標志. 不過即使禁止了這個標志,字體顏色選項還是會被保留. SetAllowSymbols允許選擇符號字體(僅適用于Windows), GetAllowSymbols則返回這個選項的當前設置值. SetColour設置默認字體顏色, GetColour則返回當前用戶選擇的顏色. SetInitialFont返回對話框被創建時候的默認字體. GetChosenFont則返回用戶選擇的字體(wxFont). SetShowHelp用來指示應該在字體對話框上顯示幫助按鈕(僅適用于Windows). GetShowHelp則返回這個選項的當前設置. SetRange設置用戶可以選擇的字體大小的范圍, 默認值(0, 0)表示任何大小的字體都可以被選擇.僅適用于windows. 字體選擇使用舉例 在下面的例子中,應用程序使用字體選擇對話框返回的字體在窗口上繪畫. ``` #include "wx/fontdlg.h" wxFontData data; data.SetInitialFont(m_font); data.SetColour(m_textColor); wxFontDialog dialog(this, &data); if (dialog.ShowModal() == wxID_OK) { wxFontData retData = dialog.GetFontData(); m_font = retData.GetChosenFont(); m_textColor = retData.GetColour(); // 更新當前窗口以便使用當前選擇的字體和顏色進行重繪 myWindow->Refresh(); } ``` wxSingleChoiceDialog wxSingleChoiceDialog給用戶提供了一組字符串以便用戶可以選擇其中的一個.它的外觀如下圖所示: ![](img/mhtD32A%281%29.tmp) 傳遞給構造函數的參數包括其父窗口指針,一個消息文本,對話框的標題文本以及一個wxArrayString類型的字符串選項列表.其中最后一個參數可以使用一個大小和一個C類型的字符串指針的指針(wxChar**)代替. SetSelection用來在對話框顯示之前設置一個默認的選項,使用GetSelection(返回當前選項的索引)或者GetStringSelection(返回對應的字符串)來在對話框關閉以后獲取用戶的選擇. 你還可以在這種對話框的構造函數中傳遞一組char*類型的客戶區數據,在對話框被關閉以后,使用GetSelectionClientData函數獲得和用戶選項對應的客戶區數據. wxSingleChoiceDialog使用舉例 ``` #include "wx/choicdlg.h" const wxArrayString choices; choices.Add(wxT("One")); choices.Add(wxT("Two")); choices.Add(wxT("Three")); choices.Add(wxT("Four")); choices.Add(wxT("Five")); wxSingleChoiceDialog dialog(this, wxT("This is a small sample\nA single-choice convenience dialog"), wxT("Please select a value"), choices); dialog.SetSelection(2); if (dialog.ShowModal() == wxID_OK) wxMessageBox(dialog.GetStringSelection(), wxT("Got string")); ``` wxMultiChoiceDialog wxMultiChoiceDialog和wxSingleChoiceDialog很相似,不過它允許用戶進行多項選擇.這種對話框的外觀如下圖所示: ![](img/mhtD32D%281%29.tmp) 傳遞給這種對話框的構造函數的參數包括一個父窗口指針,一個消息文本,對話框標題文本和一個wxArrayString類型的選項列表. 和wxSingleChoiceDialog一樣,最后一個參數可以使用字符串指針的列表wxChar**和數量代替.和 wxSingleChoiceDialog不同的是,不可以在構造函數中提供客戶區數據. 使用函數SetSelections還設置默認選中的選項,其參數為wxArrayInt類型,代表一個整數數組.使用GetSelections來獲取用戶的選擇,返回值也為wxArrayInt類型. wxMultiChoiceDialog使用舉例 ``` #include "wx/choicdlg.h" const wxArrayString choices; choices.Add(wxT("One")); choices.Add(wxT("Two")); choices.Add(wxT("Three")); choices.Add(wxT("Four")); choices.Add(wxT("Five")); wxMultiChoiceDialog dialog(this, wxT("A multi-choice convenience dialog"), wxT("Please select several values"), choices); if (dialog.ShowModal() == wxID_OK) { wxArrayInt selections = dialog.GetSelections(); wxString msg; msg.Printf(wxT("You selected %u items:\n"), selections.GetCount()); for ( size_t n = 0; n &lt; selections.GetCount(); n++ ) { msg += wxString::Format(wxT("\t%d: %d (%s)\n"), n, selections[n], choices[selections[n]].c_str()); } wxMessageBox(msg, wxT("Got selections")); } ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看