<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>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # 2.2 應用程序類 每一個wxWidgets程序都需要定義一個wxApp類的子類,并且需要并且只能構造一個這個類的實例,這個實例控制著整個程序的執行。你的這個繼承自 wxApp的子類至少需要定義一個OnInit函數,當wxWidgets準備好運行你寫的代碼的時候,它將會調用這個函數(和一個典型的Win32程序中的main函數或者WinMain函數類似)。 你定義這個子類的代碼可能和下面的代碼類似: ``` class MyApp : public wxApp { public: virtual bool OnInit(); }; ``` 在這個OnInit函數中,你通常應該創建至少一個窗口,對傳入的命令行參數進行解析,為應用程序進行數據設置和其它的一些初始化的操作.如果這個函數返回真,wxWidgets將開始事件循環用來處理用戶輸入并且在必要的情況下處理這些輸入。如果OnInit函數返回假, wxWidgets將會釋放它內部已經分配的資源,然后結束整個程序的運行。 接下來我們看一個最簡單的OnInit函數的實現: ``` bool MyApp::OnInit() { MyFrame *frame = new MyFrame(wxT("Minimal wxWidgets App")); frame->Show(true); return true; } ``` 你可能還會注意到上面例子中的wxT這個宏,在接下來的例子中,這個宏還會被頻繁用到。它的作用是讓你的代碼兼容Unicode模式。這個宏和另外一個_T宏的作用是完全一樣的。使用這個宏也不會帶來運行期的性能損失。(你可能還會遇到另外一個類似的"_()"標記,這個標記是用來告訴 wxWidgets將其中的字符串翻譯成其它語言的版本,參見第16章“編寫國際化程序”)。 那么創建MyApp的實例的代碼在哪里呢?實際上,這是在wxWidgets內部實現的,不過你仍然需要告訴wxWidgets需要創建哪一個App類的實例,所以你還需要增加下面的一個宏: ``` IMPLEMENT_APP(MyApp) ``` 如果沒有實現這個類,wxWidgets就不知道怎樣創建一個新的應用程序對象。這個宏除了上述的功能以外,還會檢查編譯應用程序使用的庫文件是否和當前的庫文件的版本相匹配,如果沒有這種檢查,由此而產生的一些運行期的錯誤可能很難被查出原因。 當wxWidgets創建這個MyApp類的實例的時候,會將創建的結果賦值給一個全局變量wxTheApp.你當然可以在你的程序中使用這個變量,但是你可能不得不一遍又一遍的進行從wxApp到MyApp的類型強制轉換。增加下面的這一行聲明以后,你就可以調用wxGetApp()函數,這個函數會返回一個到這個MyApp實例的引用,這樣用起來就方便多了。 ``` DECLARE_APP(MyApp) ``` 一點提示: 即使沒有聲明DECLARE_APP,你仍然可以不用進行類型強制轉化就直接對wxTheApp變量調用wxApp的方法.這可以避免在所有的頭文件中包含MyApp的頭文件,對于那些庫文件而不是應用程序的代碼來說也更有意義,而且還可以縮短編譯的時間。
                  <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>

                              哎呀哎呀视频在线观看