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

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # 20.6 存儲應用程序資源 一個簡單的小程序可能只有一個可執行文件.但是,更常見的情形是,你必須使用包括幫助文件,也許還有別的HTML文件和圖片文件,以及應用程序自定義的數據文件.這些附帶的文件怎么存儲合適呢? 減少數據文件的數量 你可以通過一些方法來減少你需要使用的數據文件,以便創建一個更簡潔的發行包.首先,對于XPM類型的圖片,盡可能在你的代碼中使用#include,而不是通過從文件中讀取的方法來加載圖片.其次,如果你正在使用XRC文件工具,位于wxWidgets發行版的utils/wxrc目錄中的wxrc工具能將它變成C++的代碼,如下所示: ``` wxrc resources.xrc --verbose --cpp-code --output resources.cpp ``` 然后,你就可以調用生成的C++文件中的InitXmlResource函數來初始化這些資源了. 第三種方法是,你可以將所有的數據文件打包成一個zip文件,然后使用我們在前面介紹的流操作和虛擬文件系統的方法來訪問它們.你可能還需要用到類wxStandardPaths,它定義在"wx/stdpaths.h"文件中,它的一些靜態的成員函數包括GetConfigDir, GetInstallDir,GetDataDir,GetLocalDataDir和GetUserConfigDir等.具體這些函數在各個平臺上返回的目錄的為止參考wxWidgets手冊中的相關描述. 在Mac OSX平臺上,你需要創建一個應用程序發布包文件,這個文件用來描述你的應用程序的可執行文件路徑,數據文件等.本章稍后部分我們會詳細討論有關的情況. 找到應用程序所在的位置 經常會有wxWidgets的使用者希望能夠提供一個函數用來找到應用程序所在的絕對路徑,以便可以從同樣的路徑加載資源文件.不過, wxWidgets并沒有提供這樣的函數,這部分是因為要在不同的平臺上實現這些函數是有一定難度的,可能會返回不可靠的路徑,也是部分出于鼓勵開發者最好把數據文件放在系統標準的數據文件夾中(尤其是在linux系統上)的原因. 然而,將所有應用程序相關的文件都放在一個路徑下也是可以理解的,因此,在隨書光盤的examples/chap20/findapppath目錄中,你可以找到一個函數wxFindAppPath的代碼,用來實現這個功能,它的聲明部分如下: ``` // 返回當前正在運行的可執行文件的絕對路徑 wxString wxFindAppPath(const wxString& argv0, const wxString& cwd, const wxString& appVariableName = wxEmptyString, const wxString& appName = wxEmptyString); ``` argv0的值等于wxApp::argv[0],在某些平臺上,它代表了當前執行文件的完整路徑. cwd是當前工作目錄(你可以通過調用wxGetCwd函數得到),在某些平臺上我們需要根據這個參數作出一些判斷. appVariableName是相關環境變量的值,比如環境變量MYAPPDIR,這些變量可以被在程序外部設置用來指明應用程序查找位置. appName是你在發行包中指明的前綴,函數可能需要使用它來檢查位于發行包中的某些路徑.比如,DialogBlocks程序的這個參數是DialogBlocks,因此在Mac OsX系統上,這個函數會在&lt;currentdir&gt;/DialogBlocks.app/Content/MacOS中尋找可執行文件的全路徑. 下面是這個函數的使用方法舉例: ``` bool MyApp::OnInit() { wxString currentDir = wxGetCwd(); m_appDir = wxFindAppPath(argv[0], currentDir, wxT("MYAPPDIR"), wxT("MyApp")); ... return true; } ``` 在Windows平臺和Mac OSX平臺上,這個函數返回的路徑都是可以信賴的,然而在Unix平臺上,只有應用程序是從其所在的目錄被啟動的時候,返回的路徑才是可以信賴的.或者如果你正確設置了MYAPPDIR這個環境變量,返回的路徑也是可以信賴的.因此,為了讓返回的值更正確,有些安裝程序選擇另外安裝一個啟動腳本,這個腳本會首先設置MYAPPDIR環境變量,然后再啟動應用程序.你可以選擇提示用戶是否安裝這個腳本,或者你可以直接把你的程序安裝在標準的路徑上,比如 /usr/local/bin/
                  <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>

                              哎呀哎呀视频在线观看