本文主要是介绍BCB如何加载字符串资源文件(语言资源文件)?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
如何在软件.exe中嵌入语言资源呢。常规的想法是, 将语言字符串放到一个文件中, 然后在程序中去读取。 然而这样做存在一个问题: 最后发布的.exe必须依赖于语言字符串文件, 比如lang.txt. 于是, 我们想, 能不能把这些字符串通过某种方式嵌入到.exe中呢? 这样, 在发布程序的时候, 就不用管语言资源了。
当然可以, 且看步骤:
1. 建立一个C++ Builder工程, 顺便画出控件布局。
2. 在当前目录下添加资源文件lang_ch.rc和lang_en.rc, 并且要添加到工程中, 便于编译生成应用程序需要的lang_ch.res和lang_en.res. 发布.exe程序的时候, 不需要发布lang_ch.res和lang_en.res, 因为他们已经内嵌在.exe中。
3. 写如下代码, 然后编译连接, 运行。
代码如下:
//---------------------------------------------------------------------------#include <vcl.h>
#pragma hdrstop#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner): TForm(Owner)
{
}
//---------------------------------------------------------------------------void __fastcall TForm1::Button1Click(TObject *Sender)
{Label1->Caption = LoadStr(1); // LoadStr是系统库函数, 此时, 从嵌入.exe中的lang_ch.res中读取字符串Label2->Caption = LoadStr(2);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{Label1->Caption = LoadStr(101); Label2->Caption = LoadStr(102);
}
//---------------------------------------------------------------------------
资源文件lang_ch.rc和lang_en.rc如下:
STRINGTABLE
BEGIN
1 "姓名:"
2 "学号:"
END
STRINGTABLE
BEGIN
101 "Name:"
102 "ID:"
END
编译连接运行后, 程序可实现双语切换:
这篇关于BCB如何加载字符串资源文件(语言资源文件)?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!