>백엔드 개발 >C++ >기본 Windows 응용 프로그램에 텍스트 파일을 리소스로 포함하려면 어떻게 해야 합니까?

기본 Windows 응용 프로그램에 텍스트 파일을 리소스로 포함하려면 어떻게 해야 합니까?

DDD
DDD원래의
2024-12-12 19:26:14913검색

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

기본 Windows 응용 프로그램에 텍스트 파일을 리소스로 포함

문제: 다음과 같이 텍스트 파일의 내용을 실행 가능한 바이너리에 포함하는 방법을 찾고 있습니다. 런타임에 액세스할 수 있는 리소스.

해결책: 이를 달성하려면 기본 Windows 애플리케이션에서 사용자 정의 리소스를 활용하십시오.

사용자 정의 리소스 형식

MSDN에 정의된 사용자 정의 리소스의 구조는 다음과 같습니다.

nameID typeID filename

위치:

  • 이름ID: 고유 리소스를 식별하는 16비트 부호 없는 정수.
  • typeID: 리소스 유형을 식별하는 255보다 큰 고유한 16비트 부호 없는 정수.
  • 파일 이름: 바이너리 내용이 포함될 파일의 ​​경로 포함됩니다.

텍스트 파일 포함

리소스 파일에 항목을 추가하여 텍스트 파일을 포함합니다.

IDR_MYTEXTFILE TEXTFILE "mytextfile.txt"

리소스 ID(nameIDtypeID) 및 resources.h 파일은 일관됩니다.

내장 파일 로드

필요한 Windows 헤더를 포함하고 리소스를 로드하는 함수를 정의합니다.

#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));
}

사용법 예:

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

참고:

  • 리소스 데이터를 수정하려면 BeginUpdateResource(), UpdateResource() 및 EndUpdateResource()를 사용해야 합니다.
  • 프로그램이 실행되면 리소스가 자동으로 삭제됩니다. 종료됩니다.

위 내용은 기본 Windows 응용 프로그램에 텍스트 파일을 리소스로 포함하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.