Bagaimanakah saya boleh membenamkan fail teks ke dalam sumber boleh laku untuk aplikasi Windows menggunakan C?

DDD
Lepaskan: 2024-11-17 09:11:03
asal
546 orang telah melayarinya

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

Membenamkan Teks ke dalam Sumber Boleh Laku untuk Aplikasi Windows

Membenamkan data dalam program C Windows, termasuk fail teks, boleh dicapai melalui yang ditetapkan pengguna sumber. Teknik ini melibatkan penciptaan fail sumber berasingan yang mengandungi kandungan perduaan fail teks, membolehkan ia dimuatkan dan diakses secara dinamik semasa masa jalan.

Penciptaan Fail Sumber

Untuk membenamkan fail teks, cipta fail sumber (.rc) berikutan ini garis panduan:

[resourceName id] [resourceType id] [filename]
Salin selepas log masuk

Di mana:

  • id resourceName: Pengecam unik untuk sumber (cth., IDR_MYTEXTFILE).
  • ID ResourceType: Pengecam unik yang lebih besar daripada 255 menyatakan jenis sumber (mis., TEXTFILE).
  • nama fail: Laluan ke fail teks untuk dibenamkan.

Contohnya:

IDR_MYTEXTFILE TEXTFILE "mytextfile.txt"
Salin selepas log masuk

Pemuatan Sumber

Sumber terbenam boleh dimuatkan dalam kod menggunakan fungsi seperti FindResource dan LoadResource. Contoh pelaksanaan mungkin kelihatan seperti ini:

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));
}
Salin selepas log masuk

Di mana:

  • nama: ID nama sumber (mis., IDR_MYTEXTFILE).
  • jenis: Sumber ID taip (cth., TEXTFILE).
  • saiz: Saiz terbenam data.
  • data: Penunjuk kepada data terbenam.

Penggunaan

Data terbenam kemudiannya boleh diakses dan diproses dalam program, seperti yang digambarkan oleh coretan berikut:

// 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;
}
Salin selepas log masuk

Dengan mengikuti langkah-langkah ini, anda boleh dengan mudah membenamkan fail teks atau data lain ke dalam aplikasi Windows asli anda sebagai sumber, memastikan akses dinamik dan memperkemas organisasi kod anda.

Atas ialah kandungan terperinci Bagaimanakah saya boleh membenamkan fail teks ke dalam sumber boleh laku untuk aplikasi Windows menggunakan C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan