<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.1信息對話框 在這一小節中,我們來看看以下四種用來提供信息的對話框:wxMessageDialog, wxProgressDialog, wxBusyInfo, and wxShowTip. wxMessageDialog 這種對話框顯示一個消息和一組按鈕,按鈕可以為OK, Cancel, Yes或者No,還可以有一個可選的圖標,用來顯示一個驚嘆號或者一個問號.消息文本中還可以包含換行符"\n". wxMessageDialog::ShowModal函數的返回值用來表征哪個按鈕被按下了. 下圖顯示了wxMessageDialog在windows平臺上的樣子: ![](img/mhtE8C9%281%29.tmp) 在GTK+平臺上: ![](img/mhtE8CC%281%29.tmp) 在Mac平臺上: ![](img/mhtE8CF%281%29.tmp) 要創建一個這種對話框,你需要提供父窗口指針,要顯示的消息,可選的標題,類型和位置參數,然后調用ShowModal函數顯示這個對話框,然后判斷這個函數的返回值進行進一步的動作. 其中的類型參數是一個比特位列表,其值如下表所示: | wxOK | 顯示一個OK按鈕. | |:--- |:--- | | wxCANCEL | 顯示一個Cancel按鈕. | | wxYES_NO | 顯示Yes和No按鈕. | | wxYES_DEFAULT | 設置Yes為默認按鈕. 和wxYES_NO一起使用.這是wxYES_NO類型的默認行為. | | wxNO_DEFAULT | 設置No按鈕為默認按鈕,和wxYES_NO一起使用. | | wxICON_EXCLAMATION | 顯示一個驚嘆號. | | wxICON_ERROR | 顯示一個錯誤圖標. | | wxICON_HAND | 和wxICON_ERROR相同. | | wxICON_QUESTION | 顯示一個問號. | | wxICON_INFORMATION | 顯示一個信息圖標. | | wxSTAY_ON_TOP | 在windows平臺上,這個對話框將在所有的窗口(包括那些其它應用程序的窗口)之上. | wxMessageDialog使用舉例 ``` #include "wx/msgdlg.h" wxMessageDialog dialog( NULL, wxT("Message box caption"), wxT("Message box text"), wxNO_DEFAULT|wxYES_NO|wxCANCEL|wxICON_INFORMATION); switch ( dialog.ShowModal() ) { case wxID_YES: wxLogStatus(wxT("You pressed \"Yes\"")); break; case wxID_NO: wxLogStatus(wxT("You pressed \"No\"")); break; case wxID_CANCEL: wxLogStatus(wxT("You pressed \"Cancel\"")); break; default: wxLogError(wxT("Unexpected wxMessageDialog return code!")); } ``` wxMessageBox 你可以使用更方便的wxMessageBox函數,它的參數為一個消息文本,標題文本,類型和父窗口.例如: ``` if (wxYES == wxMessageBox(wxT("Message box text"), wxT("Message box caption"), wxNO_DEFAULT|wxYES_NO|wxCANCEL|wxICON_INFORMATION, parent)) { return true; } ``` 要注意wxMessageBox的返回值和wxMessageDialog::ShowModal的返回值是不一樣的,前者返回wxOK, wxCANCEL, wxYES或wxNO,而后者返回wxID_OK, wxID_CANCEL, wxID_YES或 wxID_NO. wxProgressDialog wxProgressDialog可以用來顯示一個短的消息文本和一個進度條用來指示用戶還需要等待多久.它還可以顯示一個Cancel 按鈕用來中止正在進行的處理,還可以顯示已經過去的時間,估計剩余的時間和估計全部的時間.這個對話框是wxWidgets在各個平臺上自己實現的.下圖顯示了這個對話框在windows上的樣子: ![](img/mhtE8E2%281%29.tmp) 你既可以用全局變量或者new函數來創建這種對話框,也可以直接使用局部變量創建這種對話框,需要傳遞的參數包括:標題,消息文本,進度條的最大值,父窗口和類型. 類型的值如下表所示: | wxPD_APP_MODAL | 設置為模式對話框.如果沒有設置這個類型,對話框為非模式對話框,意味著除了其父窗口以外,應用程序中其它的窗口還可以輸入數據. | |:--- |:--- | | wxPD_AUTO_HIDE | 導致這個進度條對話框在進度達到最大值的時候自動消失. | | wxPD_CAN_ABORT | 告訴對話框顯示一個取消按鈕,當用戶點擊這個按鈕以后,下次調用對話框的Update函數將會返回失敗. | | wxPD_ELAPSED_TIME | 顯示已逝去時間標簽. | | wxPD_ESTIMATED_TIME | 顯示估計全部時間標簽. | | wxPD_REMAINING_TIME | 顯示估計剩余時間標簽. | 在進度對話框被創建以后,其父窗口將被禁用,如果設置了wxPD_APP_MODAL類型,則應用程序中其它的窗口也將被禁用.應用程序應用調用Update函數來更新進度條以及提示信息,如果設置了時間顯示標簽,則它們的值將被自動計算并在每次調用Update的時候刷新. 如果設置了wxPD_AUTO_HIDE類型,對話框會在進度達到最大值的時候自動隱藏,你應該自己根據其創建方式釋放這個對話框.對于由于用戶點擊取消按鈕而導致Update失敗的情況,如果你愿意,你可以使用Resume函數還恢復中止的進度條. wxProgressDialog使用舉例 ``` #include "wx/progdlg.h" void MyFrame::ShowProgress() { static const int max = 10; wxProgressDialog dialog(wxT("Progress dialog example"), wxT("An informative message"), max, // range this, // parent wxPD_CAN_ABORT | wxPD_APP_MODAL | wxPD_ELAPSED_TIME | wxPD_ESTIMATED_TIME | wxPD_REMAINING_TIME); bool cont = true; for ( int i = 0; i &lt;= max; i++ ) { wxSleep(1); if ( i == max ) cont = dialog.Update(i, wxT("That's all, folks!")); else if ( i == max / 2 ) cont = dialog.Update(i, wxT("Only a half left (very long message)!")); else cont = dialog.Update(i); if ( !cont ) { if ( wxMessageBox(wxT("Do you really want to cancel?"), wxT("Progress dialog question"), wxYES_NO | wxICON_QUESTION) == wxYES ) break; dialog.Resume(); } } if ( !cont ) wxLogStatus(wxT("Progress dialog aborted!")); else wxLogStatus(wxT("Countdown from %d finished"), max); } ``` wxBusyInfo wxBusyInfo其實不是一個對話框不過它的表現和對話框非常相似,當這個對象被創建的時候,屏幕上將顯示一個窗口以及一條讓用戶耐心等待的消息,這個窗口將存在于wxBusyInfo的整個生命周期.在windows平臺上,它的長相類似下面的樣子: ![](img/mhtE8E5%281%29.tmp) wxBusyInfo也可以以全局和局部的方式創建,需要傳遞給構造函數的參數包括一個消息文本和一個父窗口. wxBusyInfo使用舉例 在下面的例子中,首先使用wxWindowDisabler對象禁用應用程序當前創建的所有的窗口,然后顯示了一個wxBusyInfo窗口: ``` #include "wx/busyinfo.h" wxWindowDisabler disableAll; wxBusyInfo info(wxT("Counting, please wait..."), parent); for (int i = 0; i &lt; 1000; i++) { DoCalculation(); } ``` wxShowTip 許多應用程序都會在程序啟動的時候顯示一個附加的窗口,用來給出一些如何使用這個應用程序的提示信息,那些不愿閱讀沉悶的文檔的人會非常喜歡這樣的學習方式的. 啟動提示窗口在windows平臺上的樣子如下圖所示: ![](img/mhtE8E8%281%29.tmp) 和大多數對話框不同,這個對話框是使用wxShowTip函數顯示的,傳遞的參數為一個父窗口指針,一個指向wxTipProvider 對象的指針和一個可選的bool參數用來指示是否顯示一個復選框,以便用戶可以選擇是否在應用程序啟動的時候顯示這個提示框.而函數的返回值則為用戶的選擇. 你必須實現一個wxTipProvider的派生類,實現其中的GetTip函數才可以使用wxShowTip函數,幸運的是, wxWidgets已經實現了一個這樣的基于文本文件的類.你可以直接使用wxCreateFileTipProvider函數,傳遞以文本文件(每行一個提示文本)路徑和默認選擇索引來創建一個這樣的類. 應用程序應負責在wxTipProvider對象不需要的時候釋放這個對象. wxShowTip使用舉例 ``` #include "wx/tipdlg.h" void MyFrame::ShowTip() { static size_t s_index = (size_t)-1; if ( s_index == (size_t)-1 ) { // 隨機化... srand(time(NULL)); // ...選擇一個提示 s_index = rand() % 5; } // 傳遞一個提示文件以及提示索引 wxTipProvider *tipProvider = wxCreateFileTipProvider(wxT("tips.txt"), s_index); m_showAtStartup = wxShowTip(this, tipProvider, true); delete tipProvider; } ```
                  <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>

                              哎呀哎呀视频在线观看