Heim > Backend-Entwicklung > C++ > Hauptteil

Wie kann ich Textdateien mit C in ausführbare Ressourcen für Windows-Anwendungen einbetten?

DDD
Freigeben: 2024-11-17 09:11:03
Original
547 Leute haben es durchsucht

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

Einbetten von Text in ausführbare Ressourcen für Windows-Anwendungen

Das Einbetten von Daten in C-Windows-Programme, einschließlich Textdateien, kann durch benutzerdefiniert erfolgen Ressourcen. Bei dieser Technik wird eine separate Ressourcendatei erstellt, die den binären Inhalt der Textdatei enthält, sodass diese während der Laufzeit dynamisch geladen und aufgerufen werden kann.

Ressourcendateierstellung

Um die Textdatei einzubetten, erstellen Sie eine Ressourcendatei (.rc) gemäß den folgenden Richtlinien:

[resourceName id] [resourceType id] [filename]
Nach dem Login kopieren

Wobei:

  • resourceName id: Eine eindeutige Kennung für die Ressource (z. B. IDR_MYTEXTFILE).
  • resourceType id: Eine eindeutige Kennung größer als 255, die den Ressourcentyp angibt (z. B. TEXTFILE).
  • Dateiname: Der Pfad zur einzubettenden Textdatei.

Zum Beispiel:

IDR_MYTEXTFILE TEXTFILE "mytextfile.txt"
Nach dem Login kopieren

Ressourcenladen

Die eingebettete Ressource kann mithilfe von Funktionen wie FindResource und LoadResource in Code geladen werden. Eine Beispielimplementierung könnte so aussehen:

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));
}
Nach dem Login kopieren

Wobei:

  • Name: Die Ressourcennamen-ID (z. B. IDR_MYTEXTFILE).
  • Typ: Die Ressource Typ-ID (z. B. TEXTFILE).
  • Größe: Die Größe der eingebetteten Daten.
  • Daten: Ein Zeiger auf die eingebetteten Daten.

Verwendung

Die eingebetteten Daten können dann innerhalb des Programms abgerufen und verarbeitet werden, wie das folgende Snippet zeigt:

// 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;
}
Nach dem Login kopieren

Indem Sie diese Schritte befolgen, können Sie mühelos Textdateien einbetten oder andere Daten als Ressourcen in Ihre nativen Windows-Anwendungen einbinden, um einen dynamischen Zugriff zu gewährleisten und Ihre Code-Organisation zu optimieren.

Das obige ist der detaillierte Inhalt vonWie kann ich Textdateien mit C in ausführbare Ressourcen für Windows-Anwendungen einbetten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage