Maison >développement back-end >C++ >Comment puis-je intégrer un fichier texte en tant que ressource dans mon application Windows native ?

Comment puis-je intégrer un fichier texte en tant que ressource dans mon application Windows native ?

DDD
DDDoriginal
2024-12-12 19:26:14912parcourir

How Can I Embed a Text File as a Resource in My Native Windows Application?

Intégrer un fichier texte en tant que ressource dans une application Windows native

Problème : Vous recherchez une méthode pour intégrer le contenu d'un fichier texte dans un binaire exécutable comme une ressource, accessible au moment de l'exécution.

Solution : Utiliser une ressource personnalisée dans votre application Windows native pour y parvenir.

Format de ressource défini par l'utilisateur

La structure d'une ressource définie par l'utilisateur, définie dans MSDN, est :

nameID typeID filename

Où :

  • nameID: Entier non signé unique de 16 bits identifiant le ressource.
  • typeID : Entier unique non signé de 16 bits supérieur à 255 identifiant le type de ressource.
  • filename : Chemin d'accès au fichier dont le binaire le contenu sera intégré.

Intégrer un texte Fichier

Incorporez le fichier texte en ajoutant une entrée à votre fichier de ressources :

IDR_MYTEXTFILE TEXTFILE "mytextfile.txt"

Assurez-vous que les ID de ressource (nameID et typeID ) et le fichier resource.h sont cohérents.

Chargement du fichier Embedded Fichier

Inclure les en-têtes Windows nécessaires et définir une fonction pour charger la ressource :

#include <windows.h>
#include <cstdio>
#include "resource.h"

void LoadFileInResource(int name, int type, DWORD& size, const char*& data)
{
    // ... (Error checking omitted for clarity)
    HRSRC rc = ::FindResource(handle, MAKEINTRESOURCE(name),
        MAKEINTRESOURCE(type));
    HGLOBAL rcData = ::LoadResource(handle, rc);
    size = ::SizeofResource(handle, rc);
    data = static_cast<const char*>(::LockResource(rcData));
}

Exemple d'utilisation :

int main()
{
    DWORD size = 0;
    const char* data = NULL;
    LoadFileInResource(IDR_MYTEXTFILE, TEXTFILE, size, data);
    // ... (Use the data pointer to access the resource contents)
    return 0;
}

Remarque :

  • La modification des données de ressources nécessite l'utilisation de BeginUpdateResource(), UpdateResource() et EndUpdateResource().
  • La ressource est automatiquement supprimée à la fermeture du programme.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn