首頁  >  文章  >  後端開發  >  如何使用 C 將文字檔案嵌入到 Windows 應用程式的可執行資源中?

如何使用 C 將文字檔案嵌入到 Windows 應用程式的可執行資源中?

DDD
DDD原創
2024-11-17 09:11:03550瀏覽

How can I embed text files into executable resources for Windows applications using C  ?

將文字嵌入到Windows 應用程式的可執行資源

在C Windows 程式中嵌入數據,包括文字文件,可以透過使用者定義來實現資源。此技術涉及創建一個包含文字文件的二進制內容的單獨資源文件,允許在運行時動態載入和存取它。

資源檔案建立

要嵌入文字文件,請依照下列準則建立資源檔案(.rc):

[resourceName id] [resourceType id] [filename]

其中:

  • resourceName id:資源的唯一識別碼(例如, IDR_MYTEXTFILE)。
  • resourceType id:大於 255 的唯一識別符,指定資源類型(例如 TEXTFILE)。
  • 檔名:要嵌入的文字檔的路徑。

例如:

IDR_MYTEXTFILE TEXTFILE "mytextfile.txt"

資源載入

可以使用FindResource和LoadResource等函數在程式碼中載入資源。範例實作可能如下所示:

void LoadFileInResource(int name, int type, DWORD& size, const char*& data)
{
    HMODULE handle = ::GetModuleHandle(NULL);
    HRSRC rc = ::FindResource(handle, MAKEINTRESOURCE(name), MAKEINTRESOURCE(type));
    HGLOBAL rcData = ::LoadResource(handle, rc);
    size = ::SizeofResource(handle, rc);
    data = static_cast<const char*>(::LockResource(rcData));
}

其中:

  • 名稱:資源名稱 ID(例如 IDR_MYTEXTFILE)。
  • 類型:資源類型 ID(例如 TEXTFILE)。
  • size:嵌入資料的大小。
  • data:指向嵌入資料的指標。

用法

然後可以在程式中存取和處理嵌入的數據,如以下程式碼片段所示:

// Usage example
int main()
{
    DWORD size = 0;
    const char* data = NULL;
    LoadFileInResource(IDR_MYTEXTFILE, TEXTFILE, size, data);
    // Access bytes in data - here's a simple example involving text output
    char* buffer = new char[size+1];
    ::memcpy(buffer, data, size);
    buffer[size] = 0; // NULL terminator
    ::printf("Contents of text file: %s\n", buffer); // Print as ASCII text
    delete[] buffer;
    return 0;
}

請按照以下步驟,您可以輕鬆嵌入文字檔案或其他資料作為資源匯入到您的本機Windows 應用程式中,確保動態存取並簡化您的程式碼組織。

以上是如何使用 C 將文字檔案嵌入到 Windows 應用程式的可執行資源中?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn